Другие методы сжатия для федеративного обучения

Aug 18 2020

Я заметил, что метод сжатия Gradient Quantization уже реализован в TFF framework. Как насчет нетрадиционных методов сжатия, когда мы выбираем подмодель, отбрасывая некоторые части глобальной модели? Я столкнулся с методом сжатия «Федеративное исключение» в статье «Расширение охвата федеративного обучения за счет снижения требований клиентов к ресурсам» (https://arxiv.org/abs/1812.07210). Есть идеи, поддерживается ли метод Federated Dropout в Tensorflow Federated. Если нет, какие идеи по его реализации (основная идея метода заключается в отказе от фиксированного процента активаций и фильтров в глобальной модели для обмена и обучения меньшей подмодели)?

Ответы

2 JakubKonecny Aug 18 2020 at 19:34

В настоящее время в базе кода TFF нет реализации этой идеи.

Но вот схема того, как вы могли бы это сделать, я рекомендую начать с examples/simple_fedavg

  1. Измените верхний уровень, build_federated_averaging_processчтобы он принимал два model_fns - один server_model_fnдля глобальной модели, другой client_model_fnдля меньшей структуры подмодели, фактически обученной на клиентах.
  2. Измените, build_server_broadcast_messageчтобы извлечь только соответствующую подмодель из server_state.model_weights. Это будет отображение модели сервера на модель клиента.
  3. На client_updateсамом деле, возможно, не нужно менять (я не уверен на 100%), если client_model_fnпредоставляется только из client_update_fn.
  4. Изменить server_update- это weights_deltaбудет обновление клиентской подмодели, поэтому вам нужно будет сопоставить ее с более крупной глобальной моделью.

В общем, шаги 2 и 4 сложны, поскольку они зависят не только от того, какие слои находятся в модели, но и от того, как они связаны. Таким образом, будет сложно создать простое в использовании общее решение, но лучше написать его для конкретной структуры модели, которую вы знаете заранее.