Как настроить различные функции TensorFlow-Federated?

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

Например, в руководствах есть функция, которая отвечает за агрегирование метрик.

     @tff.federated_computation
     def aggregate_mnist_metrics_across_clients(metrics):
       return {
       'num_examples': tff.federated_sum(metrics.num_examples),
       'loss': tff.federated_mean(metrics.loss, metrics.num_examples),
       'accuracy':tff.federated_mean(metrics.accuracy,metrics.num_examples)
    }

Он вызывается в классе MODEL. Но мне нужно иметь доступ к элементам метрики после ее вызова в классе. Я хочу изменить метрики после ее вызова в модели и вызвать их в других функциях.
Однако, например, я не могу назвать их (например, с tff.Type такие как .type_signature, так как он нуждается в namedTuple для __getattr__). И я не поняла, насколько интуитивно понятна концепция того, как их можно использовать в других частях кода функции?
Я предполагаю, что в TFF каждая функция размещается на стороне сервера или клиента, но обе они могут быть доступны в любой функции, что делает ее запутанной. Кто несет ответственность за расчет? @ CLIENT или @SERVER?
кто-нибудь может мне помочь?

1 ответ

Возможно, одно заблуждение заключается в том, что tff.learning.Model интерфейс, используемый tff.learning модуль и не требуется, если нет каких-либо методов модуля, таких как tff.learning.build_federated_averaging_process(), В настоящее время реализация федеративного усреднения не имеет ловушки для изменения метрик после агрегации, но до возврата из вычислений.

Я настоятельно рекомендую взглянуть на пользовательские федеративные алгоритмы, часть 2: Реализация федеративного усреднения, в которой рассказывается, как реализовать федеративное усреднение без использования tff.learning, что позволило бы расширить вычисления в любом желаемом направлении.

Дополнительные разъяснения:

aggregate_mnist_metrics_across_clients возвращается в tff.learning.Model.federated_output_computation метод class MnistModel, несколько ячеек вниз в учебнике. metrics Параметр является возвращаемым значением tff.learning.Model.report_local_outputs(), Оба эти метода являются интерфейсами, которые необходимо реализовать для tff.learning методы модуля (например, tff.learning.build_federated_averaging_process()) для правильного подключения вычислений.

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

В TFF данные располагаются, а не вычисления. Вычисления, которые принимают неразмещенные значения, могут использоваться для помещенных значений с использованием встроенных значений TFF (например, tff.federated_mean(), или же tff.federated_map()). Кроме того, вычисление TFF может принимать значение, помещенное в CLIENTS или же SERVER а также вернуть значения, размещенные в любом.

Если вы еще этого не сделали, я бы настоятельно рекомендовал взглянуть на учебник из двух частей, посвященный пользовательским федеративным алгоритмам. Он тратит время на представление модели программирования и исполнения TFF:

Другие вопросы по тегам