Как использовать TFF API для пользовательского использования?
Я прочитал и изучил руководство TFF и страницы API точно. Но я запутался в некоторых деталях.
Например, когда я хочу обернуть / украсить функцию TF/python, используйте следующие два API:
1. tff.tf_computation()
2. tff.federated_computation()
Я не могу найти различия между ними и когда мне разрешено их использовать. Особенно, в случае, если я хочу использовать другие алгоритмы, кроме FedAvg или FedSgd. Интересно, знаете ли вы:
- Как их можно использовать для манипулирования ресурсами? они работают на @CLIENT или @SERVER?
- Как я мог использовать их в другом использовании, кроме вывода
tff.federated_mean
или жеtff.federated_sum
что значение будет на сервере? - Как я могу получить доступ к деталям данных и метрик в @CLIENT и @SERVER?
- Почему мы должны ссылаться на
tff.tf_computation()
изtff.federated_computation()
? В этой ссылке не было никакого объяснения о них. - Есть ли эти 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 могут быть переданы другим местам размещения с помощью встроенных функций. Подпись типа может принимать федеративные типы (т. Е. Типы с местами размещения).
Для вашего списка вопросов:
- Оба могут работать на значениях, размещенных в
CLIENTS
или жеSERVER
, Например,tff.tf_computation
называетсяmy_comp
может применяться к значениюv
с типомint32@CLIENTS
с участиемtff.federated_map(my_comp, v)
, который будет работатьmy_comp
на каждого клиента. tff.federated_map()
поддерживает точечные вычисления (для разных клиентов) для данных, не находящихся на сервере. Вы можете манипулировать метриками на каждом клиенте, используяtff.federated_map
, TFF не предназначен для отдельных опций на разных клиентах; абстракции не поддерживают обращение к людям. Возможно, вы сможете смоделировать это в Python, см. Операции, выполняемые для связи между сервером и клиентами.- Значения размещенных данных можно проверить в симуляции, просто возвращая их из
tff.Computation
и вызывая это вычисление. Значения должны быть доступны в среде Python. tff.tf_computation
s должен быть вызван из любого места, если есть документация, которая говорит иначе, пожалуйста, укажите на это. Я считаю, что нужно было подчеркнуть, чтоtff.federated_computation
может ссылаться наtff.tf_computation
, но не наоборот.- В учебных пособиях ( Федеративное обучение для классификации изображений и Федеративное обучение для генерации текста) показаны примеры печати метрик при моделировании. Вы также можете быть заинтересованы в ответе на вопрос о том, как печатать локальные выходные данные в объединения tenorflow?
tff.tf_computations
должен быть выполнен напрямую, если это необходимо. Это позволит избежать любой федеративной части TFF и просто делегировать TensorFlow. Чтобы применить вычисление к объединенным значениям и использовать в сочетании с объединенными внутренностями, они должны вызываться внутриtff.federated_computation
,