Узнайте о том, чему я научился во время программы падаванов на OpenMined!

Как специалист по данным, я недавно был выбран для участия в программе падаванов в OpenMined по технологии повышения конфиденциальности (PET). Программа состоит из индивидуальных занятий с наставником, который обучает фреймворку и рассказывает, как он работает. В этом посте я подробно расскажу, что я узнал из программы Падаван.

Что такое OpenMining?

OpenMined — это сообщество с открытым исходным кодом, ориентированное на исследование, разработку и совершенствование инструментов для обеспечения безопасности и сохранения конфиденциальности. Это сообщество представило концепцию Remote Data Science, которая позволяет людям и организациям обмениваться информацией без ущерба для конфиденциальности.

Чтобы обеспечить некоторый контекст, если принять во внимание, что иногда положительные результаты, такие как сотрудничество между исследователями, компаниями и государственными учреждениями, не могут быть достигнуты, поскольку определенная информация не может быть передана. С другой стороны, могут быть негативные результаты, когда передается слишком много информации. Вот где OpenMined может помочь.

Это связано с тем, что OpenMined стремится создавать инструменты, которые позволяют людям и организациям обмениваться информацией и моделями машинного обучения, не подвергая риску конфиденциальность. Это может быть большим преимуществом для государственных организаций и медицинских учреждений, где конфиденциальность имеет первостепенное значение.

Хорошо, так почему это полезно?

Хороший вопрос; вот одна из главных причин почему. Анонимизация данных и деидентификация — это методы, применяемые к данным для защиты конфиденциальности личной информации. Таким образом, если ваш идентификатор, имя или пол удалены из данных, хакер не сможет расшифровать, кто вы. Но это неправда! Возможна повторная идентификация данных. Давайте посмотрим, как это сделать.

Технология повышения конфиденциальности (PET)

PET — это технологии, которые включают в себя фундаментальные принципы защиты данных за счет сведения к минимуму использования персональных данных. Некоторые технологии повышения конфиденциальности:

  • Гомоморфное шифрование: позволяет выполнять вычисления с зашифрованными данными без их предварительной расшифровки.
  • Доказательство с нулевым разглашением: в этом методе доказывающая сторона может доказать другой стороне, что утверждение верно, не передавая никакой информации.
  • Безопасное многостороннее вычисление: сохраняя конфиденциальность входных данных, вычисляйте функцию для этих входных данных.
  • Дифференциальная конфиденциальность: публичный обмен информацией без раскрытия того, являются ли данные человека частью набора данных.
  • Федеративное обучение: обучение моделей машинного обучения на распределенных узлах, где каждый узел имеет частный набор данных. Технология повышения конфиденциальности (PET)

Что такое Syft и как его здесь использовать?

Syft — это фреймворк с открытым исходным кодом, разработанный OpenMined, который обеспечивает безопасную и приватную науку о данных на Python. Цель состоит в том, чтобы применить такие методы, как федеративное обучение, дифференциальная конфиденциальность и зашифрованные вычисления, к данным в интеграции с платформами глубокого обучения.

Syft против Grid

Syft —имитирует популярные инструменты обработки данных для удаленного доступа к коду, используя указатели, указывающие на данные, которые нельзя копировать без специальных разрешений.

Сетка – серверный компонент, который запускает контейнеры вокруг данных, которые вы хотите защитить и безопасно использовать.

Как дифференциальная конфиденциальность работает в Syft

В Syft рассматриваются разные предметы. Они состоят из:

  1. Субъекты данных: люди, представленные в данных, чьи данные мы хотим защитить.
  2. Владельцы данных: лица, загружающие данные.
  3. Ученые по данным: человек, который получает доступ к данным.

С помощью дифференциальной конфиденциальности (DP) мы хотим защитить субъектов данных. Как? Контролируя конфиденциальность вывода вычислений, выполняемых над данными.

Syft обеспечивает дифференциальную конфиденциальность на 3 уровнях:

  1. Состязательная дифференциальная конфиденциальность. Задействованы 3 разные роли: Субъекты данных, Владельцы данных и Исследователи данных. Data Scientist может только запросить, достаточно ли у него бюджета на конфиденциальность.
  2. Индивидуальная дифференциальная конфиденциальность. Вывод алгоритма не зависит от ценности человека. Бюджет конфиденциальности отслеживается на уровне отдельного субъекта данных.
  3. Автоматическая дифференциальная конфиденциальность. Имея достаточный бюджет на конфиденциальность, вы можете получить результаты, не блокируя и не дожидаясь согласия владельца данных.

Вы можете более подробно изучить эту записную книжку, в которой подробно объясняется, как Syft обрабатывает дифференциальную конфиденциальность таким образом, чтобы это было легко для пользователя.

Как построена архитектура Syft?

Есть несколько компонентов, которые интегрируют эту архитектуру, чтобы гарантировать основные цели функции платформы.

Где работает:

На любом поддерживаемом контейнерном узле, таком как Docker или Kubernetes.

Домен

Домен — это набор контейнеров и кода, который инкапсулирует личные данные и предоставляет API-интерфейсы, позволяющие выполнять операции удаленной обработки данных в качестве клиента. Grid-сервер работает в домене узлового сервера.

Сеть

Сеть используется для связи между разными доменами. Это на уровне VPN.

Клиент

Клиент получает доступ к домену с определенными привилегиями. Код внутри клиента находится на компьютере пользователя, в интерпретаторе python. В то время как код, работающий внутри домена (на стороне сервера), находится внутри контейнера.

Сообщения

Контейнер под названием прокси запускает систему под названием traefik, в которой мы определяем маршруты HTTP. Протокол сообщений основан на RPC. Для сообщений синхронизации и блокировки мы можем использовать синхронизацию или асинхронный обмен сообщениями, в зависимости от того, что мы хотим сделать.

Например, большинство действий являются асинхронными, отправляются в конечную точку потоковой передачи (очередь RabbitMQ) и потребляются воркером Celery.

Хранилище

Временные объекты хранятся в Redis, а объекты постоянного хранения — в Postgres.

Поскольку все объекты в Syft имеют UUID, большая часть данных хранится в хранилище ключ/значение, ключ для UUID. Эта база данных перенесена в MongoDB, базу данных на основе документов.

Когда данные передаются между системами, их необходимо сериализовать в большой двоичный объект (большой двоичный объект).

Бэкенд

Серверная часть и backend_stream отвечают за получение синхронных и асинхронных сообщений соответственно.

Внешний интерфейс

Внешний интерфейс работает как пользовательский интерфейс для взаимодействия с доменом и управления пользователями и наборами данных.

Как мне его запустить?

  1. Установите syft с помощью python (последняя версия на данный момент):
pip install syft==0.7.0b57

2. Установите HAGrid

pip install hagrid

3. Используйте HAGrid с компоновкой докеров

hagrid launch xyz - tag=latest

Вот и все; вы должны быть готовы к работе.‍

Что взять с OpenMined

В Пысыфте еще слишком много нужно сделать, чтобы применять его к реальным кейсам. Инструмент обещает огромный прогресс в науке о данных, позволяя обмениваться данными между организациями, рассматривающими гарантии конфиденциальности.

Я очень рад видеть, как этот инструмент будет развиваться в будущем и поможет соответствующим отраслям, таким как здравоохранение, создавать более точные модели для ускорения прогнозирования заболеваний. Хотите пройти курс? Заявки открыты!

Хотите принять участие?

OpenMined — это активное сообщество, которое сотрудничает и работает вместе, чтобы улучшить проект и помочь пользователям понять его и то, как он работает. Если вам интересно и вы хотите узнать больше, загляните на канал OpenMined Slack!