Menggunakan TFF untuk Penelitian Pembelajaran Terpadu

Ringkasan

TFF adalah kerangka kerja yang dapat diperluas dan kuat untuk melakukan penelitian federated learning (FL) dengan mensimulasikan komputasi gabungan pada kumpulan data proxy 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 khas kode penelitian di TFF

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

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

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

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

Kumpulan data pembelajaran gabungan

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

Dataset 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) dalam kumpulan pelatihan.

  • Federasi EMNIST . Pra-pemrosesan gabungan karakter EMNIST dan kumpulan data digit, 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 dari drama Shakespeare), di mana setiap contoh sesuai dengan serangkaian baris yang diucapkan oleh karakter dalam drama tertentu.

  • CIFAR-100 . Partisi gabungan dari kumpulan data CIFAR-100 di 500 klien pelatihan dan 100 klien uji. Setiap klien memiliki 100 contoh unik. Partisi dilakukan dengan cara untuk menciptakan heterogenitas yang lebih realistis antara klien. Untuk detail selengkapnya, lihat API .

  • Dataset Google Landmark v2 Dataset terdiri dari foto berbagai landmark dunia, dengan gambar yang dikelompokkan oleh fotografer untuk mencapai partisi data gabungan. Tersedia dua jenis dataset: dataset 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. Dataset federasi memiliki contoh masing-masing selebriti yang dikelompokkan bersama untuk membentuk klien. Ada 9343 klien, masing-masing dengan setidaknya 5 contoh. Dataset dapat dipecah menjadi kelompok latih dan uji baik oleh klien atau dengan contoh.

  • iNaturalist Sebuah dataset terdiri dari foto-foto dari berbagai spesies. Dataset berisi 120.300 gambar untuk 1.203 spesies. Tujuh rasa dari dataset tersedia. Salah satunya dikelompokkan oleh fotografer dan terdiri dari 9257 klien. Kumpulan data lainnya dikelompokkan berdasarkan lokasi geografis tempat foto diambil. Keenam varian dataset ini terdiri dari 11 - 3.606 klien.

Simulasi kinerja tinggi

Sementara waktu jam dinding dari 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, tetapi untuk saat ini lihat tutorial Simulasi kinerja tinggi dengan Kubernetes , petunjuk tentang simulasi TFF dengan akselerator , dan petunjuk tentang penyiapan simulasi dengan TFF di GCP . Waktu proses TFF performa tinggi diaktifkan secara default.

TFF untuk area penelitian yang berbeda

Algoritme pengoptimalan gabungan

Penelitian tentang algoritma pengoptimalan gabungan dapat dilakukan dengan berbagai cara di TFF, tergantung pada tingkat penyesuaian 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 driver pada kumpulan data EMNIST sebagai contoh. File-file ini dapat dengan mudah diadaptasi untuk aplikasi yang disesuaikan dan perubahan algoritmik dengan mengikuti petunjuk terperinci di README .

Implementasi Federated Averaging yang lebih umum dapat ditemukan di sini . Implementasi ini memungkinkan teknik pengoptimalan 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 yang hilang dari pembaruan model dapat mengurangi biaya komunikasi, yang pada gilirannya dapat mengurangi waktu pelatihan secara keseluruhan.

Untuk mereproduksi makalah terbaru, lihat proyek penelitian ini . Untuk menerapkan algoritme kompresi khusus, lihat perbandingan_metode dalam proyek untuk baseline sebagai contoh, dan tutorial Agregator TFF jika belum terbiasa.

Privasi diferensial

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

Jika Anda ingin menerapkan algoritme DP khusus dan menerapkannya ke pembaruan agregat rata-rata federasi, 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 ditemukan di sini

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

Ketangguhan dan serangan

TFF juga dapat digunakan untuk mensimulasikan serangan yang ditargetkan pada sistem pembelajaran federasi dan pertahanan berbasis privasi diferensial yang dipertimbangkan dalam Pembelajaran Federasi Pintu Belakang Bisakah Anda Benar-benar Kembali? . Ini dilakukan dengan membangun proses berulang dengan klien yang berpotensi jahat (lihat build_federated_averaging_process_attacked ). Direktori target_attack berisi lebih banyak detail.

  • Algoritme serangan 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 menggabungkan keluaran klien untuk mendapatkan pembaruan global.

Untuk contoh skrip simulasi, lihat emnist_with_targeted_attack.py .

Jaringan Permusuhan Generatif

GAN membuat pola orkestrasi gabungan yang menarik yang terlihat sedikit berbeda dari Rata-Rata Federasi standar. Mereka melibatkan dua jaringan yang berbeda (generator dan diskriminator) masing-masing dilatih dengan langkah optimasi mereka 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 efektivitas menggabungkan pembelajaran federasi, model generatif, dan privasi diferensial .

Personalisasi

Personalisasi dalam pengaturan pembelajaran federasi adalah area penelitian aktif. Tujuan personalisasi adalah untuk menyediakan model inferensi yang berbeda untuk pengguna yang berbeda. Ada kemungkinan pendekatan yang berbeda untuk masalah ini.

Salah satu pendekatannya adalah membiarkan setiap klien menyempurnakan satu model global (dilatih menggunakan pembelajaran gabungan) dengan data lokal mereka. Pendekatan ini memiliki koneksi ke meta-learning, 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 set data lokal setiap klien. Sebuah 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 .

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