Обзор
TFF — это мощная расширяемая платформа для проведения исследований федеративного обучения (FL) путем моделирования федеративных вычислений на реалистичных прокси-наборах данных. На этой странице описаны основные концепции и компоненты, относящиеся к исследовательскому моделированию, а также подробное руководство по проведению различных видов исследований в TFF.
Типичная структура исследовательского кода в TFF
Моделирование исследовательского FL, реализованное в TFF, обычно состоит из трех основных типов логики.
Отдельные фрагменты кода TensorFlow, обычно
tf.function
s, которые инкапсулируют логику, которая выполняется в одном месте (например, на клиентах или на сервере). Этот код обычно пишется и тестируется без каких-либоtff.*
, и его можно повторно использовать вне TFF. Например, на этом уровне реализован цикл обучения клиента в Federated Averaging .Логика федеративной оркестровки TensorFlow, которая связывает вместе отдельные
tf.function
из 1., оборачивая их какtff.tf_computation
, а затем организуя их с помощью абстракций, таких какtff.federated_broadcast
иtff.federated_mean
внутриtff.federated_computation
. См., например, эту оркестровку для Federated Averaging .Сценарий внешнего драйвера, который имитирует логику управления производственной системы FL, выбирая моделируемых клиентов из набора данных, а затем выполняя объединенные вычисления, определенные в 2. на этих клиентах. Например, экспериментальный драйвер Federated EMNIST .
Федеративные обучающие наборы данных
Федерация TensorFlow содержит несколько наборов данных , отражающих характеристики реальных проблем, которые можно решить с помощью федеративного обучения.
Наборы данных включают:
Переполнение стека . Реалистичный набор текстовых данных для языкового моделирования или задач контролируемого обучения с 342 477 уникальными пользователями и 135 818 730 примерами (предложениями) в обучающем наборе.
Федеративный EMNIST . Объединенная предварительная обработка набора данных символов и цифр EMNIST, где каждый клиент соответствует другому писателю. Полный набор поездов содержит 3400 пользователей с 671 585 примерами из 62 лейблов.
Шекспир . Меньший набор текстовых данных на уровне символов, основанный на полном собрании сочинений Уильяма Шекспира. Набор данных состоит из 715 пользователей (персонажей пьес Шекспира), где каждый пример соответствует непрерывному набору строк, произнесенных персонажем в данной пьесе.
СИФАР-100 . Федеративное разбиение набора данных CIFAR-100 на 500 обучающих клиентов и 100 тестовых клиентов. У каждого клиента есть 100 уникальных примеров. Разделение сделано таким образом, чтобы создать более реалистичную неоднородность между клиентами. Подробнее см. в API .
Набор данных Google Landmark v2 Набор данных состоит из фотографий различных достопримечательностей мира, с изображениями, сгруппированными по фотографу для достижения федеративного разделения данных. Доступны два варианта набора данных: меньший набор данных с 233 клиентами и 23080 изображениями и больший набор данных с 1262 клиентами и 164172 изображениями.
CelebA Набор данных примеров (изображение и атрибуты лица) лиц знаменитостей. В федеративном наборе данных примеры каждой знаменитости сгруппированы вместе, чтобы сформировать клиента. Клиентов 9343, у каждого не менее 5 экземпляров. Набор данных можно разделить на обучающие и тестовые группы либо по клиентам, либо по примерам.
iNaturalist Набор данных состоит из фотографий различных видов. Набор данных содержит 120 300 изображений для 1 203 видов. Доступны семь разновидностей набора данных. Одна из них сгруппирована по фотографу и состоит из 9257 клиентов. Остальные наборы данных сгруппированы по географическому местоположению, где была сделана фотография. Эти шесть разновидностей набора данных состоят из 11–3606 клиентов.
Моделирование высокой производительности
Несмотря на то, что время моделирования FL на настенных часах не является релевантным показателем для оценки алгоритмов (поскольку оборудование для моделирования не является репрезентативным для реальных сред развертывания FL), возможность быстрого запуска моделирования FL имеет решающее значение для продуктивности исследований. Поэтому компания TFF вложила значительные средства в обеспечение высокопроизводительных сред выполнения на одной и нескольких машинах. Документация находится в разработке, а пока смотрите инструкции по симуляциям TFF с ускорителями , и инструкции по настройке симуляций с TFF на GCP . Высокопроизводительная среда выполнения TFF включена по умолчанию.
TFF для разных областей исследований
Алгоритмы федеративной оптимизации
Исследование федеративных алгоритмов оптимизации можно проводить в TFF по-разному, в зависимости от желаемого уровня настройки.
Минимальная автономная реализация алгоритма Federated Averaging представлена здесь . Код включает в себя функции TF для локальных вычислений, вычисления TFF для оркестровки и скрипт драйвера для набора данных EMNIST в качестве примера. Эти файлы можно легко адаптировать для пользовательских приложений и алгоритмических изменений, следуя подробным инструкциям в README .
Более общую реализацию Federated Averaging можно найти здесь . Эта реализация позволяет использовать более сложные методы оптимизации, включая использование разных оптимизаторов как на сервере, так и на клиенте. Другие федеративные алгоритмы обучения, включая федеративную кластеризацию k-средних, можно найти здесь .
Сжатие обновления модели
Сжатие с потерями обновлений модели может привести к снижению затрат на связь, что, в свою очередь, может привести к сокращению общего времени обучения.
Чтобы воспроизвести недавнюю статью , см. этот исследовательский проект . Чтобы реализовать пользовательский алгоритм сжатия, см. сравнение_методов в проекте для базовых показателей в качестве примера и руководство по агрегаторам TFF , если вы еще не знакомы с ним.
Дифференциальная конфиденциальность
TFF совместим с библиотекой конфиденциальности TensorFlow , что позволяет исследовать новые алгоритмы для федеративного обучения моделей с дифференциальной конфиденциальностью. Пример обучения с DP с использованием базового алгоритма и расширений DP-FedAvg см. в этом драйвере эксперимента .
Если вы хотите реализовать собственный алгоритм DP и применить его к совокупным обновлениям федеративного усреднения, вы можете реализовать новый алгоритм среднего значения DP в качестве подкласса tensorflow_privacy.DPQuery
и создать tff.aggregators.DifferentiallyPrivateFactory
с экземпляром вашего запроса. Пример реализации алгоритма DP-FTRL можно найти здесь
Федеративные сети GAN (описанные ниже ) — еще один пример проекта TFF, реализующего дифференциальную конфиденциальность на уровне пользователя (например, здесь, в коде ).
Надежность и атаки
TFF также можно использовать для имитации целевых атак на системы федеративного обучения и дифференциальной защиты на основе конфиденциальности, рассмотренной в разделе « Можете ли вы действительно взломать федеративное обучение?» . Это делается путем создания итеративного процесса с потенциально вредоносными клиентами (см. build_federated_averaging_process_attacked
). Каталог target_attack содержит более подробную информацию.
- Новые алгоритмы атаки могут быть реализованы путем написания функции обновления клиента, которая является функцией Tensorflow, см. пример в
ClientProjectBoost
. - Новые средства защиты можно реализовать, настроив tff.utils.StatefulAggregateFn, который объединяет выходные данные клиента для получения глобального обновления.
Пример сценария для моделирования см. emnist_with_targeted_attack.py
.
Генеративно-состязательные сети
GAN создают интересный шаблон федеративной оркестровки, который выглядит немного иначе, чем стандартное федеративное усреднение. Они включают две отдельные сети (генератор и дискриминатор), каждая из которых обучена своему собственному шагу оптимизации.
TFF можно использовать для исследования федеративного обучения GAN. Например, алгоритм DP-FedAvg-GAN, представленный в недавней работе , реализован в TFF . Эта работа демонстрирует эффективность сочетания федеративного обучения, генеративных моделей и дифференциальной конфиденциальности .
Персонализация
Персонализация в условиях федеративного обучения является активной областью исследований. Цель персонализации — предоставить разные модели вывода разным пользователям. Возможны разные подходы к этой проблеме.
Один из подходов заключается в том, чтобы позволить каждому клиенту точно настроить единую глобальную модель (обученную с помощью федеративного обучения) со своими локальными данными. Этот подход связан с метаобучением, см., например, эту статью . Пример такого подхода приведен в emnist_p13n_main.py
. Чтобы изучить и сравнить различные стратегии персонализации, вы можете:
Определите стратегию персонализации, реализуя функцию
tf.function
, которая начинается с исходной модели, обучает и оценивает персонализированную модель, используя локальные наборы данных каждого клиента. Пример даетсяbuild_personalize_fn
.Определите
OrderedDict
, который сопоставляет имена стратегий с соответствующими стратегиями персонализации, и используйте его в качестве аргументаpersonalize_fn_dict
вtff.learning.build_personalization_eval
.
Другой подход заключается в том, чтобы избежать обучения полностью глобальной модели путем обучения части модели полностью локально. Реализация этого подхода описана в этом сообщении блога . Этот подход также связан с метаобучением, см. эту статью . Чтобы изучить частично локальное федеративное обучение, вы можете:
Ознакомьтесь с учебным пособием , где представлен полный пример кода с применением федеративной реконструкции, а также дополнительные упражнения .
Создайте частично локальный процесс обучения, используя
tff.learning.reconstruction.build_training_process
, изменивdataset_split_fn
для настройки поведения процесса.