Как определить количество раундов в TFF контексте - PullRequest
1 голос
/ 06 марта 2020

В TFF, необходимо определить количество раундов. Итак, чтобы получить оптимальную производительность нашей модели, как мы можем узнать оптимальное количество раундов?

1 Ответ

0 голосов
/ 09 марта 2020

TFF не обязательно , вам нужно заранее указать количество раундов федеративного обучения. TFF больше о задает федеративный аспект ваших вычислений (о котором вы можете думать как об определении связи), и считает, что фактически «выполнение» раундов происходит на системном уровне.

Когда вы пишете TFF, обычно вы пишете на трех уровнях (объяснение этого утверждения здесь ); вопрос, который вы задаете (и каждая проблема, которую TFF считает "проблемой системы"), находится на уровне Python. Поскольку Python контролирует фактический вызов вашего вычисления, записанного в TFF, вы можете прекратить обучение с любым критерием, выраженным в Python. Например, если вы хотите отслеживать производительность в наборе проверки и использовать его в качестве критерия остановки, это вполне выполнимо. Если у вас есть tff.utils.IterativeProcess ip и оценочная функция eval_fn (см. здесь для примера), это может быть реализовано как:

while True:
  data = sample_client_data()
  state, metrics = ip.next(state, data)
  eval_metrics = eval_fn(state)
  if condition(eval_metrics):
    break

Абстрактно: , поскольку Python управляет процессом эксперимента, вы можете остановиться, когда захотите, основываясь на любых наблюдаемых характеристиках c процедуры обучения . Поэтому на самом деле вам не нужно заранее знать, сколько раундов вы будете выполнять.

Более прямой ответ на первоначальный вопрос, я думаю, на данный момент в истории FL, не совсем достижим для общий случай; На данный момент никто (насколько мне известно) не знает о надежных настройках системного уровня для FL. Это не удивительно; это немного похоже на знание заранее, сколько эпох нужно указать в обучении центра обработки данных, которое, как мне кажется, в значительной степени зависит от проблемы. FL похож в этом отношении. С практической точки зрения мой совет, как правило, заключается в следующем: следите за производительностью на проверочном наборе, выполняйте так долго, как можете, и сохраняйте state вашей самой высокоэффективной модели на установленном значении. Я думаю, что более общий ответ, чем этот, может быть довольно трудным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...