Согласно Википедии, Федеративное обучение (также известное как совместное обучение) — это метод машинного обучения, который обучает алгоритм на нескольких децентрализованных пограничных устройствах или серверах, содержащих локальные образцы данных, без обмена их образцами данных. Это обучение сильно отличается от стандартной техники машинного обучения, которая требует централизации обучающих данных на одной машине или в центре обработки данных. Google разработал TFF на основе своего опыта разработки технологии федеративного обучения в Google, где он поддерживает модели машинного обучения для подсказок мобильной клавиатуры и поиска на устройстве. В TFF общая глобальная модель обучается на многих участвующих клиентах, которые хранят данные обучения локально.

Не лучше ли запустить машинное обучение и прогнозный анализ там, где генерируются данные? Это своего рода Edge Machine Learning (Edge ML). Федеративное обучение позволяет таким устройствам, как мобильные телефоны, совместно изучать общую модель прогнозирования, сохраняя при этом все обучающие данные на устройстве. Это отделяет возможность машинного обучения от необходимости хранить данные в облаке.

TFF позволяет разработчикам декларативно выражать федеративные вычисления, чтобы их можно было развертывать в различных средах выполнения. Строительные блоки, предоставляемые TFF, также можно использовать для реализации вычислений, не связанных с обучением, таких как агрегированная аналитика по децентрализованным данным. Интерфейсы TFF организованы в два уровня:

1. API федеративного обучения (FL)

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

2. API федеративного ядра (FC)

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

Как работает ТФФ?

  1. Мобильные устройства загружают текущую модель из сети.
  2. Устройства улучшают модель, изучая данные на своем локальном телефоне.
  3. Затем устройства обобщают изменения в виде небольшого целенаправленного обновления.
  4. Только это обновление модели отправляется в облако с использованием зашифрованной связи.
  5. В облаке он сразу же усредняется с другими обновлениями пользователей для улучшения общей модели.

Преимущества ТФФ

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

Установите TFF на локальную Ubuntu 18.04

Ниже приведены шаги для использования TFF в локальной системе. Мой совет: запускайте свой код в среде Google Colab. Есть еще много проблем с запуском кода TFF в локальной системе.

  1. Установите среду разработки Python
$ sudo apt update
$ sudo apt install python3-dev python3-pip  # Python 3
$ sudo pip3 install --upgrade virtualenv  # system-wide install

2. Создайте виртуальную среду

$ virtualenv --python python3 "venv"
$ source "venv/bin/activate"
(env)$ pip install --upgrade pip

3. Установите пакет TensorFlow Federated pip.

(env) $ pip install --upgrade tensorflow_federated

4. Тестовая установка TFF

(env) $ python -c "import tensorflow_federated as tff; 
(env) $ print(tff.federated_computation(lambda: 'Hello World')())"

Чтобы попробовать учебные пособия по кодированию, узнайте больше здесь.

Обо мне

Я технический энтузиаст, обладающий разносторонними навыками. Я работал в масштабируемой и гибкой среде с мобильными, веб-, облачными, корпоративными и ИИ-приложениями. Я сертифицированный архитектор AWS Cloud и успешно перенес множество локальных приложений в облако AWS. Если вам нужна помощь, давайте свяжемся через LinkedIn.