Недавно, в дополнение к написанию бизнес-кода, я также сделал совершенно новую вещь, то есть я участвовал в вещах, связанных с конфиденциальностью вычислений.
Теперь, когда у меня есть время, я просто хочу подвести итоги. Поскольку конфиденциальность вычислений может быть незнакома многим друзьям-разработчикам, ** моя статья предназначена в основном для того, чтобы дать вам популярную науку, чтобы все знали, что есть такая технология и текущее основное направление. ** Не будет слишком много содержания алгоритма и основных принципов, я считаю, что каждый должен быть в состоянии понять.
С бурным развитием информационных технологий, таких как мобильный Интернет, облачные вычисления и Интернет вещей, мир вступил в «эру больших данных» стремительного роста данных. Во всех сферах жизни данные играют жизненно важную роль, и все больше и больше сценариев требуют распространения и обмена многосторонними данными. Например, в нашем финансовом секторе нам необходимо использовать внешние финансовые данные для проведения совместного моделирования в сочетании с бизнес-данными нашего сценария для обеспечения совместного контроля рисков, цифрового маркетинга, интеллектуальной борьбы с мошенничеством и точного привлечения клиентов.
Поэтому, стоя на этом историческом узле, с точки зрения сотрудничества и обмена данными, перед нами стоит несколько важных задач, которые необходимо решить:
1. Широко распространено явление «острова данных», высока угроза безопасности обращения данных;
2. Контроль за соблюдением требований к данным становится все более и более строгим, утечка конфиденциальной информации приводит к недоверию;
Среди них, с введением в действие Закона о защите личной информации в ноябре 2021 года, вопросы регулирования становятся для нас еще более актуальными.
Однако в последние годы, с принятием ряда законов и нормативных актов, таких как Закон об электронной коммерции, Закон о безопасности данных и Закон о защите личной информации, мы должны обратить внимание на проблему личной конфиденциальности.
Хотя защита личной информации становится все более и более строгой, мы можем интерпретировать ее из многих законов и нормативных актов.На самом деле, в большой форме правительство по-прежнему поддерживает наше соблюдение в отношении использования и разработки данных.
Итак, как решить эти проблемы?
На самом деле мы можем найти некоторые точки входа из «Закона о личной защите», согласно которому определение личной информации выглядит следующим образом:
записаны в электронном виде или иным образомотносящийся к идентифицированному или идентифицируемому физическому лицуразличная информация,Не включает анонимную информацию.
Видимый, если мы можем обрабатывать личную информациюдеидентификацияианонимизироватьОбработка, затем, вы можете использовать эту информацию.
Поэтому родилось много смежных технологий, и эти технологии в основном решают проблему использования данныхДоступно не видноСпособ, который поможет нам осуществлять межведомственное сотрудничество с данными. Такие технологии в совокупности называются технологиями конфиденциальных вычислений.
После многих лет разработки в области вычислений, сохраняющих конфиденциальность, есть три основных направления с точки зрения конкретных технологий реализации:
1. Многосторонние безопасные вычисления (MPC) на основе криптографии 2. Доверенная среда выполнения (TEE) на основе доверенного оборудования 3. Федеративное обучение (FL) на основе гибридных технологических решений
Основной способ добиться деидентификации и анонимности — сделать исходные данные пользователя неидентифицируемыми.
Среди них многосторонние безопасные вычисления в основном основаны на криптографии, которая шифрует данные, чтобы мы могли использовать зашифрованные данные для моделирования алгоритмов.
Кроме того, TEE представляет собой тип данных, основанных на аппаратном обеспечении, что означает, что данные помещаются в часть аппаратного обеспечения, которое используется только внутри аппаратного обеспечения и не может быть считано непосредственно извне.
Существует также технология, которая смешивает несколько схем, и это федеративное обучение.
Среди них федеративное обучение не зависит от аппаратного обеспечения и может решать сложные проблемы моделирования алгоритмов.Хотя существуют определенные проблемы эффективности по сравнению с другими решениями, с развитием технологий, как преодолеть узкое место в производительности и добиться практичности и безопасности.Баланс, и дальнейшего повышения безопасности, эти проблемы в конечном итоге будут решены. Поэтому эта технология считается «последней милей искусственного интеллекта» и «основой алгоритмов совместной работы искусственного интеллекта следующего поколения и сетей совместной работы».
федеративное обучение
Федеративное обучениеЭто новая базовая технология искусственного интеллекта, впервые предложенная Google в 2016 г. Первоначально она использовалась для решения проблемы локального обновления моделей конечными пользователями мобильных телефонов Android.Целью разработки является эффективное машинное обучение среди нескольких участников или нескольких вычислительных узлов при условии обеспечения информационной безопасности при обмене большими данными, защиты конфиденциальности данных терминалов и личных данных и обеспечения соблюдения законодательства.
Каждое предприятие, участвующее в совместном моделировании, мы называем участником.В соответствии с разницей в распределении данных между несколькими участниками федеративное обучение делится на три категории: горизонтальное федеративное обучение, вертикальное федеративное обучение и федеративное трансферное обучение.
Суть горизонтального федеративного обучения заключается в объединении выборок, оно подходит для сценариев, когда участники имеют одинаковый бизнес-формат, но охватывают разных клиентов, то есть когда много пересекающихся функций и мало пользователей, например, банки в разных регионах , бизнесы у них похожи (сходны по характеристикам), Но пользователи разные (выборки разные). В основном решить проблему недостаточного образца.
Суть вертикального федеративного обучения заключается в сочетании функций. Оно подходит для сценариев, в которых пользователи сильно пересекаются, а функции перекрываются меньше, например, супермаркеты и банки в одной и той же области. образец), но дело в другом.(функции различаются). В основном решить проблему недостаточных возможностей.
Поскольку наша сторона занимается в основном финансовым бизнесом, сценарии применения конфиденциальных вычислений основаны на федеративном обучении и внешних банках, учреждениях и т. д. для совместного контроля рисков, долгосрочного кредитования и других финансовых услуг. Поэтому мы в основном хотим использовать данные электронной коммерции наших пользователей, а также кредитные данные и кредитные данные внешних учреждений для проведения обучения вертикальной федерации.
Основной процесс вертикального федеративного обучения выглядит следующим образом:
Шаг 1: Выравнивание зашифрованного образца. Это делается на системном уровне, поэтому непересекающиеся пользователи не отображаются на корпоративном уровне. Шаг 2: Выровняйте образцы для обучения шифрованию модели: шаг 1: третья сторона C отправляет открытый ключ A и B для шифрования передаваемых данных; шаг 2: A и B соответственно вычисляют промежуточные результаты, относящиеся к их собственным функциям, и зашифровать их Взаимодействие, используемое для получения их соответствующих градиентов и потерь; шаг 3: A и B вычисляют свои соответствующие зашифрованные градиенты и добавляют маску для отправки в C, в то время как B вычисляет зашифрованные потери и отправляет их в C; шаг 4: после того, как C расшифровывает градиент и потеря Вернуться к A и B, A и B удалить маску и обновить модель.
Каркас FATE
Из-за нынешней технологии федерального обучения многие крупнейшие фабрики инвестировали, в том числе Али, муравей, байты, Tencent и т. Д. Много успешных случаев.
Когда на этот раз мы проводили исследование, связанное с федеративным обучением, разные коллеги исследовали разные фреймворки. Моя основная обязанность — проводить исследования на основе фреймворков с открытым исходным кодом.
Поскольку самое важное в федеративном обучении — это решение проблемы безопасности данных, в настоящее время кажется, что многие внешние организации больше принимают фреймворки с открытым исходным кодом. На рынке также существует множество интегрированных сред обучения, таких как FATE с открытым исходным кодом от WeBank, FedLearner с открытым исходным кодом от Byte и PaddleFL с открытым исходным кодом от Baidu. Среди них FATE является наиболее широко используемым и считается модельным проектом для федеративного обучения.
FATE (Federated AI Technology Enabler) — это проект с открытым исходным кодом, инициированный отделом искусственного интеллекта WeBank, который обеспечивает надежную и безопасную вычислительную среду для экосистемы федеративного обучения. Проект FATE использует технологии Multi-Party Secure Computing (MPC) и Homomorphic Encryption (HE) для создания базового протокола безопасных вычислений для поддержки безопасных вычислений для различных типов машинного обучения, включая логистическую регрессию, древовидные алгоритмы, глубокое обучение и передачу. учеба и т.д.
В FATE есть четыре метода развертывания, а именно: развертывание на основе Docker-Compose, автономное развертывание, развертывание в собственном кластере и развертывание на основе KubeFATE.
-
На основе Docker-Compose: быстро испытайте FATE, рабочей модели и данных достаточно на одной машине, и ее относительно просто развернуть.
-
Автономное развертывание на одной машине: просто нужно разработать алгоритмы, но производительность машины для разработки невысока.
-
На основе KubeFATE: использование FATE необходимо расширить из-за большого набора данных и модели, а также данных, которые необходимо поддерживать в кластере FATE.Рассмотрите возможность использования решения для развертывания на основе KubeFATE в кластере Kubernetes.
-
Собственное развертывание кластера: обычно оно используется по особым причинам, таким как невозможность внутреннего развертывания Kubernetes или необходимость выполнения собственной вторичной разработки для развертывания FATE. Чтобы быстро проверить, мы в основном используем два метода развертывания на основе Docker-Compose и на основе KubeFATE. В процессе развертывания еще много проблем.
Процесс развёртывания этих двух способов развёртывания и решение некоторых проблем не являются предметом этой статьи, я выложил их отдельно в своём блоге, если вам интересно, вы можете прочитать это в моём блоге.
Ниже представлена схема архитектуры развертывания FATE:
Слишком много деталей, чтобы вдаваться в подробности здесь.
Основываясь на FATE, мы сотрудничали с внешними учреждениями для разработки набора федеративной среды обучения.Alibaba, как одна сторона, и внешние учреждения, как другая сторона, смоделировали федеративное обучение на основе примерно 100 000 данных.
Конечный результат по-прежнему соответствует нашим ожиданиям.Моделирующий метод федеративного обучения и локального моделирования имеют очень небольшую потерю в производительности, которая практически незначительна.
разное
Вышеизложенное является кратким изложением некоторых моих исследований и практики конфиденциальных вычислений и федеративного обучения за этот период.
Причина, по которой мы хотим изучить это, заключается в том, что, с одной стороны, это нужно нам в нашей работе, а с другой стороны, нам все еще нужно соприкоснуться с новыми технологиями, чтобы узнать больше. Особенно это те вещи, которые важны сейчас и в будущем.
Точно так же, как когда я подписал свою собственную подпись в интранете Али: без ограничений.
Что касается этой части контента, я только что соприкоснулся с ней некоторое время назад, и многие материалы выражены на основе моего собственного понимания.Если в тексте есть ошибки, пожалуйста, помогите указать. В то же время друзья с соответствующим опытом также могут общаться друг с другом.
Об авторе:Hollis, человек с уникальным увлечением программированием, технический эксперт Alibaba, соавтор «Трех курсов для программистов» и автор серии статей «Дорога к Java-инженерам».
Обратите внимание на общедоступный номер【Hollis], фоновый ответ «Карта Бога» может получить расширенную карту разума инженеров Java.