Metode kompresi lain untuk Federated Learning
Saya perhatikan bahwa metode kompresi Kuantisasi Gradien sudah diterapkan dalam kerangka kerja TFF. Bagaimana dengan metode kompresi non-tradisional di mana kita memilih sub-model dengan melepaskan beberapa bagian dari model global? Saya menemukan metode kompresi "Pelepasan Gabungan" dalam makalah "Memperluas Jangkauan Pembelajaran Federasi dengan Mengurangi Persyaratan Sumber Daya Klien" (https://arxiv.org/abs/1812.07210). Ada gagasan jika metode Pelepasan Federasi sudah didukung di Federasi Tensorflow. Jika tidak, ada wawasan bagaimana cara menerapkannya (ide utama metode ini adalah menghapus persentase tetap dari aktivasi dan filter dalam model global untuk bertukar dan melatih sub-model yang lebih kecil)?
Jawaban
Saat ini, tidak ada implementasi ide ini yang tersedia di basis kode TFF.
Tapi di sini adalah garis besar bagaimana Anda bisa melakukannya, saya sarankan untuk memulai examples/simple_fedavg
- Ubah tingkat atas build_federated_averaging_processuntuk menerima dua
model_fn
s - satuserver_model_fn
untuk model global, satuclient_model_fn
untuk struktur sub-model yang lebih kecil yang benar-benar dilatih pada klien. - Ubah build_server_broadcast_messageuntuk mengekstrak hanya sub-model yang relevan dari
server_state.model_weights
. Ini akan menjadi pemetaan dari model server ke model klien. - The client_updatemungkin sebenarnya tidak perlu diubah (saya tidak 100% yakin), selama hanya
client_model_fn
disediakan dari client_update_fn. - Ubah server_update-
weights_delta
akan menjadi pembaruan untuk sub-model klien, jadi Anda perlu memetakannya kembali ke model global yang lebih besar.
Secara umum, langkah 2. dan 4. rumit, karena mereka tidak hanya bergantung pada lapisan apa yang ada dalam model, tetapi juga bagaimana mereka terhubung. Jadi akan sulit untuk membuat solusi umum yang mudah digunakan, tetapi tidak masalah untuk menulis ini untuk struktur model tertentu yang Anda ketahui sebelumnya.