Metode kompresi lain untuk Federated Learning

Aug 18 2020

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

2 JakubKonecny Aug 18 2020 at 19:34

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

  1. Ubah tingkat atas build_federated_averaging_processuntuk menerima dua model_fns - satu server_model_fnuntuk model global, satu client_model_fnuntuk struktur sub-model yang lebih kecil yang benar-benar dilatih pada klien.
  2. 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.
  3. The client_updatemungkin sebenarnya tidak perlu diubah (saya tidak 100% yakin), selama hanya client_model_fndisediakan dari client_update_fn.
  4. Ubah server_update- weights_deltaakan 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.