Ringkasan
TFF adalah kerangka kerja yang dapat diperluas dan andal untuk melakukan penelitian pembelajaran terfederasi (FL) dengan mensimulasikan komputasi terfederasi pada kumpulan data proksi yang realistis. Halaman ini menjelaskan konsep dan komponen utama yang relevan untuk simulasi penelitian, serta panduan terperinci untuk melakukan berbagai jenis penelitian di TFF.
Struktur tipikal kode penelitian di TFF
Simulasi FL riset yang diimplementasikan di TFF biasanya terdiri dari tiga jenis logika utama.
Bagian-bagian kode TensorFlow individual, biasanya
tf.function, yang merangkum logika yang berjalan di satu lokasi (misalnya, pada klien atau pada server). Kode ini biasanya ditulis dan diuji tanpa referensitff.*apa pun, dan dapat digunakan kembali di luar TFF. Misalnya, loop pelatihan klien dalam Federated Averaging diimplementasikan pada level ini.Logika orkestrasi TensorFlow Federated, yang mengikat fungsi
tf.functionindividual dari poin 1 dengan membungkusnya sebagaitff.tensorflow.computationdan kemudian mengorkestrasikannya menggunakan abstraksi sepertifederated_language.federated_broadcastdanfederated_language.federated_meandi dalamfederated_language.federated_computation. Lihat, misalnya, orkestrasi ini untuk Federated Averaging .Skrip penggerak eksternal yang mensimulasikan logika kontrol sistem FL produksi, memilih klien simulasi dari kumpulan data dan kemudian mengeksekusi komputasi terfederasi yang didefinisikan dalam 2. pada klien tersebut. Misalnya, penggerak eksperimen Federated EMNIST .
Kumpulan data pembelajaran terfederasi
TensorFlow Federated menyediakan berbagai dataset yang mewakili karakteristik masalah dunia nyata yang dapat diselesaikan dengan pembelajaran federasi.
Kumpulan data meliputi:
StackOverflow . Sebuah dataset teks realistis untuk pemodelan bahasa atau tugas pembelajaran terawasi, dengan 342.477 pengguna unik dan 135.818.730 contoh (kalimat) dalam set pelatihan.
Federated EMNIST . Pra-pemrosesan terfederasi dari dataset karakter dan angka EMNIST, di mana setiap klien sesuai dengan penulis yang berbeda. Set pelatihan lengkap berisi 3400 pengguna dengan 671.585 contoh dari 62 label.
Shakespeare . Kumpulan data teks tingkat karakter yang lebih kecil berdasarkan karya lengkap William Shakespeare. Kumpulan data ini terdiri dari 715 pengguna (karakter dalam drama Shakespeare), di mana setiap contoh sesuai dengan serangkaian baris berurutan yang diucapkan oleh karakter dalam drama tertentu.
CIFAR-100 . Partisi terfederasi dari dataset CIFAR-100 di antara 500 klien pelatihan dan 100 klien pengujian. Setiap klien memiliki 100 contoh unik. Partisi dilakukan sedemikian rupa untuk menciptakan heterogenitas yang lebih realistis antar klien. Untuk detail lebih lanjut, lihat API .
Dataset Google Landmark v2. Dataset ini terdiri dari foto-foto berbagai landmark dunia, dengan gambar dikelompokkan berdasarkan fotografer untuk mencapai partisi data terpadu. Tersedia dua versi dataset: dataset yang lebih kecil dengan 233 klien dan 23080 gambar, dan dataset yang lebih besar dengan 1262 klien dan 164172 gambar.
CelebA adalah kumpulan data contoh (gambar dan atribut wajah) wajah selebriti. Kumpulan data gabungan ini mengelompokkan contoh wajah setiap selebriti untuk membentuk sebuah klien. Terdapat 9343 klien, masing-masing dengan setidaknya 5 contoh. Kumpulan data ini dapat dibagi menjadi kelompok pelatihan dan pengujian berdasarkan klien atau berdasarkan contoh.
iNaturalist Sebuah dataset terdiri dari foto-foto berbagai spesies. Dataset ini berisi 120.300 gambar untuk 1.203 spesies. Tersedia tujuh varian dataset. Salah satunya dikelompokkan berdasarkan fotografer dan terdiri dari 9257 klien. Dataset lainnya dikelompokkan berdasarkan lokasi geografis tempat foto diambil. Keenam varian dataset ini terdiri dari 11 - 3.606 klien.
Simulasi berkinerja tinggi
Meskipun waktu eksekusi simulasi FL bukanlah metrik yang relevan untuk mengevaluasi algoritma (karena perangkat keras simulasi tidak mewakili lingkungan penerapan FL yang sebenarnya), kemampuan untuk menjalankan simulasi FL dengan cepat sangat penting untuk produktivitas penelitian. Oleh karena itu, TFF telah berinvestasi besar-besaran dalam menyediakan runtime berkinerja tinggi untuk mesin tunggal dan multi-mesin. Dokumentasi sedang dalam pengembangan, tetapi untuk saat ini lihat petunjuk tentang simulasi TFF dengan akselerator , dan petunjuk tentang pengaturan simulasi dengan TFF di GCP . Runtime TFF berkinerja tinggi diaktifkan secara default.
TFF untuk berbagai bidang penelitian
Algoritma optimasi terfederasi
Penelitian tentang algoritma optimasi terfederasi dapat dilakukan dengan berbagai cara di TFF, tergantung pada tingkat kustomisasi yang diinginkan.
Implementasi mandiri minimal dari algoritma Federated Averaging disediakan di sini . Kode tersebut mencakup fungsi TF untuk komputasi lokal, komputasi TFF untuk orkestrasi, dan skrip penggerak pada dataset EMNIST sebagai contoh. File-file ini dapat dengan mudah diadaptasi untuk aplikasi khusus dan perubahan algoritma dengan mengikuti instruksi terperinci dalam README .
Implementasi Federated Averaging yang lebih umum dapat ditemukan di sini . Implementasi ini memungkinkan teknik optimasi yang lebih canggih, termasuk penggunaan optimizer yang berbeda baik di server maupun klien. Algoritma pembelajaran federasi lainnya, termasuk pengelompokan k-means federasi, dapat ditemukan di sini .
Kompresi pembaruan model
Kompresi lossy pada pembaruan model dapat mengurangi biaya komunikasi, yang pada gilirannya dapat mengurangi waktu pelatihan secara keseluruhan.
Untuk mereproduksi makalah terbaru, lihat proyek penelitian ini . Untuk mengimplementasikan algoritma kompresi khusus, lihat comparison_methods dalam proyek untuk contoh baseline, dan tutorial TFF Aggregators jika belum familiar.
Privasi diferensial
TFF dapat berinteraksi dengan pustaka TensorFlow Privacy untuk memungkinkan penelitian algoritma baru untuk pelatihan federasi model dengan privasi diferensial. Untuk contoh pelatihan dengan DP menggunakan algoritma DP-FedAvg dasar dan ekstensinya , lihat penggerak eksperimen ini .
Jika Anda ingin mengimplementasikan algoritma DP kustom dan menerapkannya pada pembaruan agregat dari perataan terfederasi, Anda dapat mengimplementasikan algoritma rata-rata DP baru sebagai subkelas dari tensorflow_privacy.DPQuery dan membuat tff.aggregators.DifferentiallyPrivateFactory dengan instance dari kueri Anda. Contoh implementasi algoritma DP-FTRL dapat ditemukan di sini.
Federated GAN (dijelaskan di bawah ) adalah contoh lain dari proyek TFF yang menerapkan privasi diferensial tingkat pengguna (misalnya, di sini dalam kode ).
Ketahanan dan serangan
TFF juga dapat digunakan untuk mensimulasikan serangan yang ditargetkan pada sistem pembelajaran federasi dan pertahanan berbasis privasi diferensial yang dibahas dalam Bisakah Anda Benar-Benar Menyembunyikan Sistem Pembelajaran Federasi? . Hal ini dilakukan dengan membangun proses iteratif dengan klien yang berpotensi berbahaya (lihat build_federated_averaging_process_attacked ). Direktori targeted_attack berisi detail lebih lanjut.
- Algoritma penyerangan baru dapat diimplementasikan dengan menulis fungsi pembaruan klien yang merupakan fungsi TensorFlow, lihat
ClientProjectBoostuntuk contohnya. - Pertahanan baru dapat diimplementasikan dengan menyesuaikan 'tff.utils.StatefulAggregateFn' yang menggabungkan output klien untuk mendapatkan pembaruan global.
Untuk contoh skrip simulasi, lihat emnist_with_targeted_attack.py .
Jaringan Adversarial Generatif
GAN menghadirkan pola orkestrasi terfederasi yang menarik dan sedikit berbeda dari Federated Averaging standar. GAN melibatkan dua jaringan berbeda (generator dan diskriminator) yang masing-masing dilatih dengan langkah optimasi tersendiri.
TFF dapat digunakan untuk penelitian tentang pelatihan federasi GAN. Misalnya, algoritma DP-FedAvg-GAN yang disajikan dalam karya terbaru diimplementasikan dalam TFF . Karya ini menunjukkan efektivitas penggabungan pembelajaran federasi, model generatif, dan privasi diferensial .
Personalisasi
Personalisasi dalam konteks pembelajaran federasi merupakan bidang penelitian yang aktif. Tujuan personalisasi adalah untuk menyediakan model inferensi yang berbeda kepada pengguna yang berbeda. Terdapat berbagai pendekatan yang potensial untuk mengatasi masalah ini.
Salah satu pendekatannya adalah membiarkan setiap klien menyempurnakan satu model global (yang dilatih menggunakan pembelajaran federasi) dengan data lokal mereka. Pendekatan ini memiliki keterkaitan dengan meta-learning, lihat, misalnya, makalah ini . Contoh pendekatan ini diberikan dalam emnist_p13n_main.py . Untuk mengeksplorasi dan membandingkan berbagai strategi personalisasi, Anda dapat:
Definisikan strategi personalisasi dengan mengimplementasikan
tf.functionyang dimulai dari model awal, melatih, dan mengevaluasi model yang dipersonalisasi menggunakan dataset lokal setiap klien. Contohnya diberikan olehbuild_personalize_fn.Definisikan
OrderedDictyang memetakan nama strategi ke strategi personalisasi yang sesuai, dan gunakan sebagai argumenpersonalize_fn_dictditff.learning.build_personalization_eval_computation.
Pendekatan lain adalah menghindari pelatihan model global sepenuhnya dengan melatih sebagian model secara lokal. Contoh penerapan pendekatan ini dijelaskan dalam postingan blog ini . Pendekatan ini juga terkait dengan meta learning, lihat makalah ini .