Menggunakan TFF untuk Penelitian Pembelajaran Federasi

Ringkasan

TFF adalah kerangka kerja yang dapat diperluas dan kuat untuk melakukan penelitian pembelajaran gabungan (FL) dengan mensimulasikan komputasi gabungan pada kumpulan data proksi yang realistis. Halaman ini menjelaskan konsep utama dan komponen yang relevan untuk simulasi penelitian, serta panduan rinci untuk melakukan berbagai jenis penelitian di TFF.

Struktur khas kode penelitian di TFF

Simulasi FL penelitian yang diterapkan di TFF biasanya terdiri dari tiga jenis logika utama.

  1. Potongan kode TensorFlow individual, biasanya tf.function s, yang merangkum logika yang berjalan di satu lokasi (misalnya, di klien atau di server). Kode ini biasanya ditulis dan diuji tanpa referensi tff.* apa pun, dan dapat digunakan kembali di luar TFF. Misalnya, loop pelatihan klien di Federated Averaging diimplementasikan pada tingkat ini.

  2. Logika orkestrasi Federasi TensorFlow, yang menyatukan masing-masing tf.function dari 1. dengan menggabungkannya sebagai tff.tf_computation dan kemudian mengaturnya menggunakan abstraksi seperti tff.federated_broadcast dan tff.federated_mean di dalam tff.federated_computation . Lihat, misalnya, orkestrasi untuk Federated Averaging ini.

  3. Skrip driver luar yang mensimulasikan logika kontrol sistem FL produksi, memilih klien yang disimulasikan dari kumpulan data dan kemudian mengeksekusi komputasi gabungan yang ditentukan dalam 2. pada klien tersebut. Misalnya, driver eksperimen EMNIST Federasi .

Kumpulan data pembelajaran gabungan

Federasi TensorFlow menghosting beberapa set data yang mewakili karakteristik masalah dunia nyata yang dapat diselesaikan dengan pembelajaran gabungan.

Kumpulan data meliputi:

  • StackOverflow . Kumpulan data teks realistis untuk pemodelan bahasa atau tugas pembelajaran yang diawasi, dengan 342.477 pengguna unik dengan 135.818.730 contoh (kalimat) di set pelatihan.

  • EMNIST Federasi . Pra-pemrosesan gabungan dari kumpulan data karakter dan digit EMNIST, di mana setiap klien berhubungan dengan penulis yang berbeda. Set kereta 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 terdiri dari 715 pengguna (karakter drama Shakespeare), di mana setiap contoh berhubungan dengan serangkaian baris yang berdekatan yang diucapkan oleh karakter dalam drama tertentu.

  • CIFAR-100 . Partisi gabungan kumpulan data CIFAR-100 pada 500 klien pelatihan dan 100 klien pengujian. Setiap klien memiliki 100 contoh unik. Pembagian ini dilakukan sedemikian rupa untuk menciptakan heterogenitas yang lebih realistis antar klien. Untuk lebih jelasnya, lihat API .

  • Kumpulan data Google Landmark v2 Kumpulan data terdiri dari foto-foto berbagai landmark dunia, dengan gambar yang dikelompokkan berdasarkan fotografer untuk mencapai partisi data gabungan. Tersedia dua jenis kumpulan data: kumpulan data yang lebih kecil dengan 233 klien dan 23080 gambar, dan kumpulan data yang lebih besar dengan 1262 klien dan 164172 gambar.

  • CelebA Kumpulan data contoh (gambar dan atribut wajah) wajah selebriti. Kumpulan data gabungan memiliki contoh masing-masing selebritas yang dikelompokkan bersama untuk membentuk klien. Ada 9343 klien, masing-masing dengan setidaknya 5 contoh. Kumpulan data dapat dibagi menjadi kelompok pelatihan dan pengujian baik berdasarkan klien atau berdasarkan contoh.

  • iNaturalist Kumpulan data terdiri dari foto berbagai spesies. Kumpulan data berisi 120.300 gambar untuk 1.203 spesies. Tujuh jenis kumpulan data tersedia. Salah satunya dikelompokkan berdasarkan fotografer dan terdiri dari 9257 klien. Kumpulan data lainnya dikelompokkan berdasarkan lokasi geografis tempat foto diambil. Enam jenis kumpulan data ini terdiri dari 11 - 3.606 klien.

Simulasi kinerja tinggi

Meskipun waktu jam dinding simulasi FL bukanlah metrik yang relevan untuk mengevaluasi algoritme (karena perangkat keras simulasi tidak mewakili lingkungan penerapan FL yang sebenarnya), kemampuan menjalankan simulasi FL dengan cepat sangat penting untuk produktivitas penelitian. Oleh karena itu, TFF telah banyak berinvestasi dalam menyediakan runtime tunggal dan multi-mesin berkinerja tinggi. Dokumentasi sedang dalam pengembangan, namun untuk saat ini lihat petunjuk tentang simulasi TFF dengan akselerator , dan petunjuk tentang menyiapkan simulasi dengan TFF di GCP . Runtime TFF berkinerja tinggi diaktifkan secara default.

TFF untuk bidang penelitian yang berbeda

Algoritme pengoptimalan gabungan

Penelitian tentang algoritme pengoptimalan gabungan dapat dilakukan dengan berbagai cara di TFF, bergantung pada tingkat penyesuaian yang diinginkan.

Implementasi minimal yang berdiri sendiri dari algoritma Federated Averaging disediakan di sini . Kode tersebut mencakup fungsi TF untuk komputasi lokal, komputasi TFF untuk orkestrasi, dan skrip driver pada kumpulan data EMNIST sebagai contoh. File-file ini dapat dengan mudah diadaptasi untuk aplikasi yang disesuaikan dan perubahan algoritmik dengan mengikuti instruksi rinci di README .

Implementasi Federated Averaging yang lebih umum dapat ditemukan di sini . Implementasi ini memungkinkan teknik optimasi yang lebih canggih, termasuk penggunaan pengoptimal yang berbeda pada server dan klien. Algoritme pembelajaran gabungan lainnya, termasuk pengelompokan k-means gabungan, dapat ditemukan di sini .

Kompresi pembaruan model

Kompresi pembaruan model yang hilang dapat mengurangi biaya komunikasi, yang pada gilirannya dapat mengurangi waktu pelatihan secara keseluruhan.

Untuk mereproduksi makalah terbaru, lihat proyek penelitian ini . Untuk mengimplementasikan algoritme kompresi khusus, lihat metode_perbandingan dalam proyek untuk mengetahui garis dasar sebagai contoh, dan tutorial Agregator TFF jika belum memahaminya.

Privasi diferensial

TFF dapat dioperasikan dengan pustaka Privasi TensorFlow untuk memungkinkan penelitian dalam algoritme baru untuk pelatihan gabungan model dengan privasi diferensial. Untuk contoh pelatihan dengan DP menggunakan algoritme dan ekstensi dasar DP-FedAvg, lihat driver eksperimen ini .

Jika Anda ingin menerapkan algoritme DP khusus dan menerapkannya pada pembaruan agregat rata-rata gabungan, Anda dapat menerapkan algoritme rata-rata DP baru sebagai subkelas tensorflow_privacy.DPQuery dan membuat tff.aggregators.DifferentiallyPrivateFactory dengan instance kueri Anda. Contoh penerapan algoritma DP-FTRL dapat dilihat di sini

GAN Federasi (dijelaskan di bawah ) adalah contoh lain dari proyek TFF yang menerapkan privasi diferensial tingkat pengguna (misalnya, di sini dalam kode ).

Kekokohan dan serangan

TFF juga dapat digunakan untuk mensimulasikan serangan yang ditargetkan pada sistem pembelajaran gabungan dan pertahanan berbasis privasi diferensial yang dibahas dalam Bisakah Anda Benar-benar Mendukung Pembelajaran Federasi? . Hal ini dilakukan dengan membangun proses berulang dengan klien yang berpotensi berbahaya (lihat build_federated_averaging_process_attacked ). Direktori target_serangan berisi rincian lebih lanjut.

  • Algoritme penyerangan baru dapat diimplementasikan dengan menulis fungsi pembaruan klien yang merupakan fungsi Tensorflow, lihat ClientProjectBoost sebagai contoh.
  • Pertahanan baru dapat diterapkan dengan menyesuaikan 'tff.utils.StatefulAggregateFn' yang mengumpulkan keluaran klien untuk mendapatkan pembaruan global.

Untuk contoh skrip simulasi, lihat emnist_with_targeted_attack.py .

Jaringan Permusuhan Generatif

GAN menghasilkan pola orkestrasi federasi yang menarik dan terlihat sedikit berbeda dari Federated Averaging standar. Mereka melibatkan dua jaringan berbeda (generator dan diskriminator) yang masing-masing dilatih dengan langkah optimasinya sendiri.

TFF dapat digunakan untuk penelitian tentang pelatihan gabungan GAN. Misalnya, algoritma DP-FedAvg-GAN yang disajikan dalam karya terbaru diimplementasikan di TFF . Karya ini menunjukkan keefektifan penggabungan pembelajaran gabungan, model generatif, dan privasi diferensial .

Personalisasi

Personalisasi dalam pengaturan pembelajaran gabungan adalah bidang penelitian aktif. Tujuan personalisasi adalah untuk memberikan model inferensi yang berbeda kepada pengguna yang berbeda. Ada kemungkinan pendekatan yang berbeda terhadap masalah ini.

Salah satu pendekatannya adalah membiarkan setiap klien menyempurnakan satu model global (dilatih menggunakan pembelajaran gabungan) dengan data lokal mereka. Pendekatan ini memiliki hubungan dengan pembelajaran meta, lihat, misalnya, makalah ini . Contoh pendekatan ini diberikan di emnist_p13n_main.py . Untuk menjelajahi dan membandingkan berbagai strategi personalisasi, Anda dapat:

  • Tentukan strategi personalisasi dengan menerapkan tf.function yang dimulai dari model awal, melatih dan mengevaluasi model yang dipersonalisasi menggunakan kumpulan data lokal setiap klien. Contoh diberikan oleh build_personalize_fn .

  • Tentukan OrderedDict yang memetakan nama strategi ke strategi personalisasi yang sesuai, dan menggunakannya sebagai argumen personalize_fn_dict di tff.learning.build_personalization_eval_computation .

Pendekatan lain adalah menghindari pelatihan model yang sepenuhnya global dengan melatih sebagian model secara lokal. Instansiasi pendekatan ini dijelaskan dalam posting blog ini . Pendekatan ini juga terhubung dengan pembelajaran meta, lihat makalah ini . Untuk menjelajahi sebagian pembelajaran gabungan lokal, Anda dapat: