Asyn c - модель FL - PullRequest
       18

Asyn c - модель FL

0 голосов
/ 11 апреля 2020

Как выполнить обучение асинхронной модели с использованием инфраструктуры TFF?

Я рассматриваю итеративный процесс обучения l oop, однако я не уверен, как узнать, какие модели клиентов получены.

1 Ответ

0 голосов
/ 10 мая 2020

Вполне возможно моделировать что-то похожее на "асинхронный FL" в TFF. Один из способов подумать об этом может состоять в том, чтобы концептуально отделить время моделирования от время настенных часов .

Выборка разного количества клиентов в каждом раунде (а не униформа K клиентов, что обычно делается), возможно, с некоторым распределением, которое взвешивает клиентов в зависимости от того, как долго они должны обучаться, может моделировать асинхронный FL. Впервые возможно обработать только часть выбранных клиентов, исследователь может свободно разделять данные / вычисления по своему усмотрению.

Python - псевдокод в стиле «эскес» демонстрирует два метода, различные выборки клиентов и приложение с отложенным градиентом:

state = fed_avg_iter_proc.initialize()
for round_num in range(NUM_ROUNDS):
  # Here we conceptualize a "round" as a block of time, rather than a synchronous
  # round. We have a function that determines which clients will "finish" within 
  # our configured block of time. This might even return only a single client.
  participants = get_next_clients(time_window=timedelta(minutes=30))
  num_participants = len(participants)

  # Here we only process the first half, and then updated the global model.
  state2, metrics = fed_avg_iter_proc.next(state, participants[:num_participants/2])

  # Now process the second half of the selected clients. 
  # Note: this is now apply the 'pseudo-gradient' that was computed on clients
  # (the difference between the original `state` and their local training result),
  # to the model that has already taken one step (`state2`). This possibly has
  # undesirable effects on the optimisation process, or may be improved with
  # techniques that handle "stale" gradients.
  state3, metrics = fed_avg_iter_proc.next(state2, participants[num_participants/2:])

  # Finally update the state for the next for-loop of the simulation.
  state = state3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...