Другие методы сжатия для федеративного обучения
Я заметил, что метод сжатия Gradient Quantization уже реализован в TFF framework. Как насчет нетрадиционных методов сжатия, когда мы выбираем подмодель, отбрасывая некоторые части глобальной модели? Я столкнулся с методом сжатия «Федеративное исключение» в статье «Расширение охвата федеративного обучения за счет снижения требований клиентов к ресурсам» (https://arxiv.org/abs/1812.07210). Есть идеи, поддерживается ли метод Federated Dropout в Tensorflow Federated. Если нет, какие идеи по его реализации (основная идея метода заключается в отказе от фиксированного процента активаций и фильтров в глобальной модели для обмена и обучения меньшей подмодели)?
Ответы
В настоящее время в базе кода TFF нет реализации этой идеи.
Но вот схема того, как вы могли бы это сделать, я рекомендую начать с examples/simple_fedavg
- Измените верхний уровень, build_federated_averaging_processчтобы он принимал два
model_fn
s - одинserver_model_fn
для глобальной модели, другойclient_model_fn
для меньшей структуры подмодели, фактически обученной на клиентах. - Измените, build_server_broadcast_messageчтобы извлечь только соответствующую подмодель из
server_state.model_weights
. Это будет отображение модели сервера на модель клиента. - На client_updateсамом деле, возможно, не нужно менять (я не уверен на 100%), если
client_model_fn
предоставляется только из client_update_fn. - Изменить server_update- это
weights_delta
будет обновление клиентской подмодели, поэтому вам нужно будет сопоставить ее с более крупной глобальной моделью.
В общем, шаги 2 и 4 сложны, поскольку они зависят не только от того, какие слои находятся в модели, но и от того, как они связаны. Таким образом, будет сложно создать простое в использовании общее решение, но лучше написать его для конкретной структуры модели, которую вы знаете заранее.