Сбор данных о весах, возвращаемых клиентами, без их агрегирования

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


person Cisc    schedule 18.01.2021    source источник


Ответы (1)


TFF предоставляет для этой цели внутреннюю tff.federated_collect; он материализует поток клиентских данных на сервере.

Один из простых способов связать это с внутренностями в основном существующей федеративной процедуры - это fork _ 2_, что, на мой взгляд, является разумной отправной точкой для работы с низкоуровневыми возможностями TFF.

Здесь следует отметить несколько моментов. Во-первых, никакая известная мне «производственная» система не поддерживает federated_collect. Во-вторых, в зависимости от вашего желания, возможно, есть более простое и простое решение: просто верните сами веса клиента. Среда выполнения TFF материализует список клиентских весов Python (как я полагаю, в виде активных тензоров), на котором вы можете выполнять произвольную постобработку Python.

Чтобы попасть сюда из simple_fedavg, вы должны эффективно верните client_outputs напрямую вместо того, чтобы передавать их в tff.federated_mean. Это даст вам дельты клиентов (IE, разницу между конечными весами клиентов и начальными весами клиентов); однако вы можете просто изменить , чтобы при желании избежать вычисления этой разницы.

person Keith Rush    schedule 19.01.2021