Часто задаваемые вопросы

Можно ли использовать TensorFlow Federated в производственных условиях, например, на мобильных телефонах?

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

Мы ожидаем, что со временем экосистема с открытым исходным кодом вокруг TFF будет развиваться и включать среды выполнения, ориентированные на платформы физического развертывания.

Как использовать TFF для экспериментов с большими наборами данных?

Среда выполнения по умолчанию, включенная в первоначальный выпуск TFF, предназначена только для небольших экспериментов, подобных описанным в наших руководствах, в которых все ваши данные (по всем моделируемым клиентам) одновременно помещаются в памяти на одном компьютере, а весь эксперимент выполняется локально. в блокноте Colab.

Наш план на ближайшее будущее включает высокопроизводительную среду выполнения для экспериментов с очень большими наборами данных и большим количеством клиентов.

Как я могу гарантировать, что случайность в TFF соответствует моим ожиданиям?

Поскольку TFF имеет интегрированные вычисления, встроенные в его ядро, автор TFF не должен брать на себя контроль над тем, где и как вводятся Session TensorFlow или выполняется run внутри этих сеансов. Семантика случайности может зависеть от входа и выхода из Session TensorFlow, если установлены начальные значения. Мы рекомендуем использовать случайность в стиле TensorFlow 2, используя, например tf.random.experimental.Generator начиная с TF 1.14. При этом используется tf.Variable для управления своим внутренним состоянием.

Чтобы помочь управлять ожиданиями, TFF позволяет TensorFlow, который он сериализует, иметь заданные начальные значения рабочего уровня, но не начальные значения уровня графа. Это связано с тем, что семантика начальных чисел op-уровня должна быть более ясной в настройке TFF: детерминированная последовательность будет генерироваться при каждом вызове функции, обернутой как tf_computation , и только в рамках этого вызова будут сохраняться любые гарантии, сделанные генератором псевдослучайных чисел. . Обратите внимание, что это не совсем то же самое, что семантика вызова tf.function в режиме ожидания; TFF эффективно входит и выходит из уникального tf.Session каждый раз, когда вызывается tf_computation , а повторный вызов функции в режиме ожидания аналогичен многократному вызову sess.run для выходного тензора в течение одного и того же сеанса.

Как я могу внести свой вклад?

См. README , рекомендации по участию и сотрудничеству .

Какова связь между FedJAX и TensorFlow Federated?

TensorFlow Federated (TFF) — это полноценная платформа для федеративного обучения и аналитики, предназначенная для облегчения создания различных алгоритмов и функций, а также для возможности переноса кода в различные сценарии моделирования и развертывания. TFF обеспечивает масштабируемую среду выполнения и поддерживает множество алгоритмов конфиденциальности, сжатия и оптимизации через стандартные API. TFF также поддерживает многие типы исследований FL , при этом в репозитории google-research появляется коллекция примеров из опубликованных статей Google.

Напротив, FedJAX — это легкая библиотека моделирования на основе Python и JAX, которая ориентирована на простоту использования и быстрое создание прототипов алгоритмов федеративного обучения для исследовательских целей. TensorFlow Federated и FedJAX разрабатываются как отдельные проекты без ожидания переносимости кода.