Как использовать TFF API для пользовательского использования?

Я прочитал и изучил руководство TFF и страницы API точно. Но я запутался в некоторых деталях.

Например, когда я хочу обернуть / украсить функцию TF/python, используйте следующие два API:

1. tff.tf_computation()
2. tff.federated_computation()

Я не могу найти различия между ними и когда мне разрешено их использовать. Особенно, в случае, если я хочу использовать другие алгоритмы, кроме FedAvg или FedSgd. Интересно, знаете ли вы:

  1. Как их можно использовать для манипулирования ресурсами? они работают на @CLIENT или @SERVER?
  2. Как я мог использовать их в другом использовании, кроме вывода tff.federated_mean или же tff.federated_sum что значение будет на сервере?
  3. Как я могу получить доступ к деталям данных и метрик в @CLIENT и @SERVER?
  4. Почему мы должны ссылаться на tff.tf_computation() из tff.federated_computation()? В этой ссылке не было никакого объяснения о них.
  5. Есть ли эти API (например, tff.federated_mean или же tff.federated_sum) изменить выходные элементы каждого @CLIENT и перенести их в @SERVER?

Может ли кто-нибудь помочь мне понять интуитивную концепцию?

1 ответ

Возможное практическое правило о различных функциях декораторов:

  • tff.tf_computation для упаковки логики TF. Подумайте "тензор в, тензор вне": это должно быть очень похоже на использование tf.function где параметры и возвращаемые значения являются тензорами или вложенными структурами тензоров. Внутренние свойства TFF (например, tff.federated_mean) нельзя использовать внутри tff.tf_computation, а также tff.tf_computations не могу позвонить tff.federated_computations, Подпись типа всегда на неразмещенном.

  • tff.federated_computation следует использовать для переноса абстракций программирования TFF. Подумайте "тензоры здесь, тензоры там": внутри этого контекста tff.tf_computation может применяться к tff.Value с и tff.Value s могут быть переданы другим местам размещения с помощью встроенных функций. Подпись типа может принимать федеративные типы (т. Е. Типы с местами размещения).

Для вашего списка вопросов:

  1. Оба могут работать на значениях, размещенных в CLIENTS или же SERVER, Например, tff.tf_computation называется my_comp может применяться к значению v с типом int32@CLIENTS с участием tff.federated_map(my_comp, v), который будет работать my_comp на каждого клиента.
  2. tff.federated_map() поддерживает точечные вычисления (для разных клиентов) для данных, не находящихся на сервере. Вы можете манипулировать метриками на каждом клиенте, используя tff.federated_map, TFF не предназначен для отдельных опций на разных клиентах; абстракции не поддерживают обращение к людям. Возможно, вы сможете смоделировать это в Python, см. Операции, выполняемые для связи между сервером и клиентами.
  3. Значения размещенных данных можно проверить в симуляции, просто возвращая их из tff.Computation и вызывая это вычисление. Значения должны быть доступны в среде Python.
  4. tff.tf_computation s должен быть вызван из любого места, если есть документация, которая говорит иначе, пожалуйста, укажите на это. Я считаю, что нужно было подчеркнуть, что tff.federated_computation может ссылаться на tff.tf_computation, но не наоборот.
  5. В учебных пособиях ( Федеративное обучение для классификации изображений и Федеративное обучение для генерации текста) показаны примеры печати метрик при моделировании. Вы также можете быть заинтересованы в ответе на вопрос о том, как печатать локальные выходные данные в объединения tenorflow?
  6. tff.tf_computations должен быть выполнен напрямую, если это необходимо. Это позволит избежать любой федеративной части TFF и просто делегировать TensorFlow. Чтобы применить вычисление к объединенным значениям и использовать в сочетании с объединенными внутренностями, они должны вызываться внутри tff.federated_computation,
Другие вопросы по тегам