Federated learning, dari konsep sampai sistem yang berjalan
Isi buku disusun ulang per bab dalam Bahasa Indonesia: alasan FL dibutuhkan, arsitektur aggregator–agen–database, kode Python dari repositori simple-fl, algoritma agregasi, framework populer, hingga studi kasus. Setiap bab punya diagram dan simulasi yang bisa Anda mainkan langsung.
Berdasarkan Federated Learning with Python, Kiyoshi Nakayama & George Jeno, Packt 2022.
Fondasi konseptual
Desain & implementasi sistem FL
Menuju aplikasi FL produksi
00Cara memakai panduan ini
Teal = agen / klien
Perangkat atau organisasi yang menyimpan data dan melatih model lokal.
Amber = aggregator / model global
Server FL yang mengumpulkan dan menyintesis model.
Biru = database
Penyimpanan metadata dan biner model lokal maupun global.
Sumber
- Kiyoshi Nakayama & George Jeno, Federated Learning with Python: Design and implement a federated learning system and develop applications using existing frameworks, Packt Publishing, 2022 (ISBN 9781803247106).
- Kode sistem FL sederhana: github.com/tie-set/simple-fl. Kode Bab 7–8: github.com/PacktPublishing/Federated-Learning-with-Python (lisensi MIT).
Penjelasan di sini merupakan ringkasan dan uraian ulang dalam Bahasa Indonesia, bukan terjemahan kata per kata. Ilustrasi digambar ulang. Potongan kode diadaptasi dan dipersingkat dari repositori di atas; komentarnya ditulis ulang dalam Bahasa Indonesia. API framework pihak ketiga (Bab 8) dapat sudah berubah sejak 2022.
Tantangan big data dan AI tradisional
Bab pembuka menjelaskan mengapa FL disebut teknologi kunci dekade 2020-an. Big data memang mendorong ledakan deep learning, tetapi cara mengumpulkan semuanya ke satu tempat kini terbentur tiga dinding: privasi, bias, dan drift. FL hadir sebagai jawaban atas ketiganya.
- Definisi big data (3V) dan pola pikir Triple-A
- Privasi data sebagai hambatan, beserta regulasinya
- Biaya pelatihan big data dan bias model
- Data drift, concept drift, dan pemantauan berkelanjutan
- Perbandingan sistem ML terpusat dengan sistem FL
1.1Memahami hakikat big data
Survei Algorithmia tahun 2021 terhadap 403 pemimpin bisnis menemukan 76% perusahaan menempatkan AI/ML di atas inisiatif TI lain, dan 83% menaikkan anggaran AI/ML dibanding tahun sebelumnya. Lonjakan ini dimungkinkan oleh big data: Hadoop, Spark, dan layanan cloud (AWS, GCP, Azure) membuat organisasi bisa menampung data mentah dalam jumlah yang sebelumnya tak terbayangkan, lalu menyerahkan pencarian variabel bernilai kepada data scientist di kemudian hari.
Definisi: tiga V
Big data adalah himpunan informasi yang tumbuh eksponensial; manusia kini menghasilkan sekitar dua kuintiliun byte data per hari, sehingga alat pengelolaan data tradisional kesulitan mengolahnya untuk ML. Karakteristiknya biasa diringkas dengan tiga V:
- Volume: jumlah data dari transaksi bisnis, perangkat IoT, media sosial, peralatan industri, video, dan lainnya.
- Velocity: kecepatan data mengalir; sering dibutuhkan secara real time atau mendekati real time.
- Variety: ragam format, mulai angka, teks, gambar, video, email, audio, hingga transaksi keuangan.
Masalah data besar bukan hal baru. Biro Sensus AS memperkirakan data sensus 1880 butuh delapan tahun untuk diolah; setahun kemudian Herman Hollerith menciptakan mesin tabulasi yang memangkas pekerjaan itu. Pusat data pertama dibangun pada 1965 untuk menyimpan sidik jari dan informasi pajak.
Big data masa kini dan data lake
Konsep data lake memberi kebebasan menyimpan data apa pun yang teramati selama operasi, tanpa harus merancang skema di muka. Kebebasan ini punya sisi gelap: mentalitas “simpan sekarang, pilah nanti”. Data tak terstruktur sulit diproses, sehingga danau data bisa tumbuh liar dan berubah menjadi kuburan data yang mahal sekaligus sulit dimanfaatkan.
Data mentah hanya bernilai sebesar model dan wawasan yang bisa ditarik darinya. Di sinilah buku mengajukan tesis utamanya: FL membalik alur big data.
Bagi manusia, kecerdasan adalah bentuk ringkas dari banyak pengalaman. Dengan cara serupa, melatih model di lokasi asal data merangkum data itu menjadi bentuk yang paling mudah dipakai. Pengumpulan yang dilakukan belakangan (yang dikumpulkan adalah model) memberi akses data maksimal sekaligus efisiensi penyimpanan. Bahkan bila hanya sebagian sumber yang ikut, ragam format data yang masuk ke data lake sisa menjadi jauh lebih sedikit.
Pola pikir Triple-A
Mengacu pada buku Big Data: A Revolution That Will Transform How We Live, Work, and Think (Mayer-Schönberger & Cukier, 2013), penulis merangkum hakikat big data sebagai tiga pergeseran pola pikir yang saling menguatkan. Sisa bab ini menunjukkan bahwa ketiganya kini sedang ditantang, dan masing-masing tantangan itu menjadi satu alasan untuk FL:
Kelimpahan observasi
Jumlah observasi n mendekati atau sama dengan populasi (n = all). Statistik klasik menebak populasi dari sampel acak dengan p-value; big data seolah “membuktikan keadaan”.
Ditantang oleh: regulasi privasi → §1.2
Menerima data berantakan
Pencarian Google yang diketik anggota keluarga lain di ponsel seseorang adalah “kotoran” data. Dengan n sangat besar, efek kotoran itu diasumsikan mengecil.
Ditantang oleh: bias data & model → §1.3
Abai terhadap kausalitas
Big data menjawab apa, bukan mengapa. Contohnya Medication Adherence Score dari FICO (2011) yang memprediksi kepatuhan minum obat dari perilaku lain.
Ditantang oleh: model drift → §1.4
1.2Privasi data sebagai hambatan
FL sering disebut teknologi AI penjaga privasi paling populer karena data pribadi tidak perlu dikumpulkan atau dibagikan ke pihak ketiga untuk menghasilkan kecerdasan bermutu. Kekhawatiran publik nyata: jajak pendapat Pew Research Center 2019 menunjukkan lebih dari 80% warga AS menilai risiko pengumpulan data oleh perusahaan lebih besar daripada manfaatnya, dan kerja sama data kesehatan berskala besar (misalnya HCA Healthcare dengan Google pada 2021) langsung disorot media.
Privasi data (privasi informasi) adalah hak individu mengendalikan penggunaan informasi pribadinya. Konsep ini sering tertukar dengan keamanan data, yang memastikan data akurat, andal, dan hanya bisa diakses pihak berwenang. Analoginya: keamanan adalah jendela, privasi adalah tirai. Keamanan membatasi siapa yang bisa melihat; privasi membatasi apa yang terlihat. Keduanya bersama membentuk perlindungan data, dan kegagalan keamanan akan berlipat dampaknya bila datanya bersifat pribadi.
Risiko menangani data pribadi
Menurut laporan IBM Cost of a Data Breach 2021, rata-rata biaya global satu insiden kebocoran mencapai US$4,24 juta, naik dari US$3,86 juta setahun sebelumnya dan tertinggi dalam 17 tahun laporan itu. Lima industri termahal: kesehatan, keuangan, farmasi, teknologi, dan energi. Hampir separuh kebocoran melibatkan PII pelanggan dengan biaya rata-rata US$180 per rekaman. Ketidakpatuhan pada regulasi perlindungan data termasuk faktor yang paling memperbesar biaya.
Regulasi perlindungan data yang makin ketat
| Regulasi | Wilayah · berlaku | Pokok yang dibahas buku |
|---|---|---|
| GDPR | Uni Eropa · Mei 2018 | Regulasi modern pertama, banyak ditiru. Melindungi PII termasuk lokasi, ras, keyakinan, data genetik/biometrik/kesehatan. Prinsip baru: accountability. Denda 2% omzet/€10 juta atau 4% omzet/€20 juta (mana yang lebih besar). Contoh: Amazon €746 juta, WhatsApp €225 juta. |
| CCPA | California · 1 Jan 2020 | Cakupan lebih sempit (perusahaan dengan >50.000 titik data/tahun, pendapatan >US$25 juta, atau separuh pendapatan dari menjual data) tetapi tanpa batas atas denda: US$2.500 per rekaman (tak sengaja), US$7.500 (sengaja). |
| CPA | Colorado · mulai 1 Jul 2024 | Pengendali data wajib menghormati universal opt-out untuk iklan tertarget, penjualan data, dan profiling tertentu. |
| CDPA | Virginia · 1 Jan 2023 | Persetujuan diperlukan untuk memakai data pribadi; menilai kecukupan privasi vendor AI. |
| LGPD | Brasil · Sep 2020 | Mengikuti GDPR, menggantikan puluhan aturan lama. |
| APPI | Jepang · 2003, amandemen 2015, versi terbaru Apr 2022 | Regulasi perlindungan data pertama di Asia. |
Dari privacy by design ke data minimalism
Survei TrustArc 2021 mencatat 83% perusahaan sudah memiliki kantor privasi (naik dari 67% pada 2020), dipimpin Data Protection Officer (DPO) yang bertanggung jawab atas Data Protection Impact Assessment (DPIA). Tren perlindungan data kini bergeser ke data minimalism: bukan memperkecil ukuran data, melainkan meminimalkan unsur PII agar individu tak dapat dikenali. Akibatnya, ragam data untuk ML menyusut, dan kekurangan ragam itu melahirkan bias dan kinerja buruk.
Pola pikir abundance pun “didisiplinkan” oleh kekhawatiran privasi dan biaya kuburan data. FL menjadi jalan keluar karena pembelajaran bisa terjadi di mana saja: penyedia AI cukup mengumpulkan dan mengagregasi model terlatih secara konsisten, tanpa memegang datanya.
1.3Dampak data latih dan bias model
Volume besar konon menghapus prinsip garbage in, garbage out. Kenyataannya, kotoran data hanya bisa diterima bila data dari beragam sumber dan distribusi benar-benar bisa dipelajari tanpa memunculkan bias. Pelatihan terpusat atas big data juga mahal dan lambat. FL menawarkan pembelajaran kolaboratif dan terdistribusi yang menaikkan aksesibilitas data sekaligus efisiensi proses.
Pelatihan big data yang mahal
Laporan Flexera 2022: 37% perusahaan menghabiskan lebih dari US$12 juta per tahun untuk cloud publik, dan 80% lebih dari US$1,2 juta. Lima kendala membuat big data sering tidak bisa dilatih sepenuhnya:
| Kendala | Masalah pada sistem terpusat | Bagaimana FL membantu |
|---|---|---|
| Penyimpanan | Lebih dari US$100 miliar per tahun dibelanjakan untuk storage cloud dan pusat data, padahal yang dicari sebenarnya kecerdasan bisnis. | Data tetap di sumber; yang disimpan terpusat hanya model. |
| Waktu latih | Pipeline dan pelatihan lama; nilai kecerdasan hilang saat model akhirnya dikirim. | Pelatihan paralel di banyak lokasi dan agregasi cepat. |
| Komputasi | Satu tugas (misal tangan robot memutar kubus Rubik) bisa butuh >1.000 komputer. | Memanfaatkan sumber daya terdistribusi untuk pelatihan ringan. |
| Latensi komunikasi | Data dalam jumlah masif harus ditransfer ke server. | Hanya bobot model yang dikirim ke aggregator. |
| Skalabilitas | Infrastruktur storage dan komputasi terpusat makin rumit dan mahal. | Server hanya mengagregasi; skalabilitas sistem dan pembelajaran naik. |
Bias model dan data latih
Bias ML terjadi ketika algoritma menghasilkan keluaran yang berprasangka secara sistemik karena asumsi keliru dalam proses ML. Yann LeCun merangkumnya: sistem ML bias ketika datanya bias. Contoh yang dibahas: sistem face upsampling yang dilatih pada dataset Flickr-Faces-HQ (didominasi wajah orang kulit putih) cenderung “memutihkan” wajah lain, padahal arsitekturnya netral. Makalah Gender Shades (2018) menunjukkan bias ras dan gender pada model pengenalan wajah komersial, hingga Amazon, IBM, dan Microsoft menunda atau menghentikan penjualannya ke kepolisian.
Sering kali data yang dibutuhkan untuk mengurangi bias tidak dapat diakses karena tersimpan di silo yang dilindungi regulasi. FL membuka silo itu tanpa memindahkan datanya. Di dalam FL sendiri pun ada teknik mitigasi bias seperti Reweighing dan Prejudice Remover.
1.4Model drift dan degradasi kinerja
Model drift (disebut juga model decay) adalah penurunan kinerja model karena data atau hubungan input–output berubah. Model dengan parameter tetap bekerja baik selama data yang diterimanya mirip data latih. Model mengemudi otonom yang dilatih saat siang cerah aman di hari cerah, tetapi pada malam berhujan menerima gambar gelap dan buram yang asing baginya.
- Data drift: distribusi input berubah. Contoh: model penjualan es krim yang dilatih di California dipakai di Selandia Baru, tempat musim panas dan dinginnya terbalik.
- Concept drift: hubungan antarvariabel berubah; proses pembangkit datanya sendiri berganti. Contoh: Google Flu Trends sekitar 2013 melebih-lebihkan penyebaran flu karena kata kunci flu tak lagi hanya diketik orang yang curiga sakit, tetapi juga orang yang waspada pandemi atau sekadar penasaran.
Keduanya berakar pada fokus big data terhadap korelasi. “Ground truth” dalam ilmu data hanyalah pernyataan tentang korelasi pada lingkungan tertentu, bukan kebenaran universal seperti hukum fisika, sehingga bisa bergeser seiring waktu dan lokasi.
Pemantauan berkelanjutan: harga dari melepas kausalitas
Survei Redis Labs menyebut tantangan utama penerapan model adalah keandalan (48%), kinerja (44%), akurasi dari waktu ke waktu (57%), dan latensi (51%). Karena itu, setelah model dirilis ada dua tugas tambahan: memantau kinerja untuk mendeteksi drift, lalu melatih ulang dengan data baru (atau mengganti arsitektur bila concept drift parah). Prinsip Continuous Delivery for Machine Learning (CD4ML) membakukan siklus itu, mengadopsi CI/CD ke ML; ModelOps menjembatani MLOps dengan rekayasa aplikasi.
- Kode dan latih model dengan data latih.
- Uji dan evaluasi pada dataset terpisah; pilih model terbaik dari beberapa kandidat.
- Produksikan dengan pengujian tambahan pascapenerapan, lalu rilis.
- Pantau kinerja secara terus-menerus.
- Terdeteksi drift? Latih ulang dengan data baru, atau ganti arsitektur bila parah, lalu kembali ke langkah 2.
FL secara alami adalah kerangka continuous learning: model diperbarui setiap kali pembelajaran terjadi di lingkungan lokal. Bahkan memungkinkan crowdsourced learning, di mana pengguna platform mengambil model, menyesuaikannya secara lokal, dan mengembalikannya ke server. Dengan mekanisme agregasi yang menyaring model beracun, operasi pembelajaran berkelanjutan semacam itu menjadi berkelanjutan pula secara sistem.
1.5FL sebagai solusi utama masalah data
Pada sistem big data tradisional, data dikumpulkan menjadi penyimpanan besar untuk melatih model yang generalisasinya kuat. Harganya: bandwidth besar untuk pengumpulan terus-menerus, larangan transmisi pada aplikasi yang peka privasi, pelatihan yang mahal dan dibatasi kemampuan satu mesin, serta jeda panjang antarpembaruan sehingga model lambat menyesuaikan tren baru.
Pada sistem FL, pelatihan dilakukan langsung di lokasi data; model hasil latih dikumpulkan di server pusat, diagregasi, lalu dikirim kembali untuk pelatihan berikutnya. Ada overhead untuk membangun dan merawat sistem terdistribusi, tetapi manfaatnya lebih besar: privasi terjaga karena data tak pernah ditransmisikan, pelatihan bisa asinkron pada jumlah node yang berubah-ubah, komunikasi efisien karena hanya bobot yang dikirim, dan algoritma agregasi lanjutan dapat mempertahankan kinerja bahkan pada skenario terbatas.
Penulis menutup bab dengan visi collective intelligence: platform yang berpusat pada kecerdasan, bukan pada data, yang akan dibahas lagi di Bab 10.
Apa itu federated learning?
Singkatnya, FL adalah pendekatan ML yang melatih model secara paralel di banyak sumber data tanpa memindahkan datanya. Bab ini membangun argumennya dari dua arah: apa yang ingin dilakukan (ML dan pemodelan) dan di mana hal itu ingin dilakukan (perangkat edge), lalu mempertemukan keduanya.
- Model, white-box vs black-box, dan peran ML
- Komputasi terdistribusi, edge inference, edge training
- Definisi dan proses satu ronde FL
- Transfer learning, personalisasi, horizontal vs vertical FL
- Keamanan: DP, MPC, HE, serta FL terdesentralisasi
2.1Memahami kondisi ML saat ini
Apa itu model?
Secara umum, model adalah representasi kerja dari dinamika suatu sistem. Kita membangun model B dari fenomena A agar bisa memahami A lewat B yang lebih mudah “disentuh”. Contohnya benda yang dijatuhkan di ruang hampa: persamaan kinematika memberi tahu berapa lama benda 10 kg dan 50 kg jatuh dari ketinggian tertentu tanpa harus benar-benar menjatuhkannya. Dalam ilmu komputer, model menyempit menjadi algoritma yang mengeluarkan nilai-nilai kunci (waktu jatuh, kecepatan maksimum) dari karakterisasi awal (massa, ketinggian), dan komputer bisa menghitungnya untuk konfigurasi yang tak terhitung banyaknya.
Cara paling sederhana membuat model adalah white-box (glass-box): menuliskan fungsi sistem secara eksplisit, misalnya menentukan bilangan ganjil/genap dari sisa bagi dua, atau biaya isi bensin = liter × harga. Ini hanya mungkin bila fungsi sistem diketahui. Untuk menaksir harga properti dari luas, usia, lokasi, dan suku bunga, kita perlu tahu bobot setiap faktor, padahal fungsinya tidak kita ketahui. Di sinilah black-box modeling diperlukan.
ML: mengotomatiskan pembuatan model
Konsep black box berasal dari teknik rangkaian listrik era Perang Dunia II; Norbert Wiener menjadikannya konsep abstrak dan Mario Bunge merumuskan teori umumnya pada 1960-an. ML adalah jenis AI yang menghasilkan parameter model secara otomatis. Contoh klasiknya ordinary least squares (OLS): alih-alih menebak garis lalu menguji, OLS memakai data untuk langsung menghitung parameter garis terbaik.
β̂ = arg minβ ‖y − Xβ‖² = (XᵀX)−1 Xᵀ y X berisi fitur (luas, usia, …), y harga jual. OLS tidak peduli makna datanya; ia hanya mencari garis terbaik. Inilah inti ML: membuat model tanpa pengetahuan internal tentang hubungan yang dimodelkan, asalkan datanya cukup.
Fungsi sistem yang kompleks bisa berubah karena faktor luar, sehingga model dari data lama cepat usang. Model harga properti tadi belum tentu berlaku di masa depan atau di distrik jauh; untuk variasi berskala makro kita butuh model berbeda per kelompok data, atau pendekatan yang lebih canggih seperti deep learning.
Deep learning
Deep learning memakai deep neural network (DNN), model dengan sangat banyak parameter yang terinspirasi transmisi sinyal antarneuron. Fondasinya diletakkan Frank Rosenblatt pada awal 1960-an, dikembangkan Geoffrey Hinton, Yann LeCun, dan Yoshua Bengio pada 1970–80-an, dan istilahnya dipopulerkan Rina Dechter. Kelebihan utamanya adalah memodelkan hubungan non-linear yang kompleks, dijamin secara matematis oleh teorema aproksimasi universal.
Model mutakhir kini bisa mencapai triliunan parameter. Fenomena double descent menjelaskan mengapa model DL dapat terus diperbesar: setelah ambang parameterisasi tertentu, kinerja kembali naik melampaui trade-off bias–variance klasik. Kesimpulannya, kinerja DL praktis hanya dibatasi daya komputasi dan data, dua hal yang melonjak dalam sepuluh tahun terakhir. Bagian ini adalah apa-nya FL.
2.2Sifat pembelajaran terdistribusi: menuju AI yang skalabel
Komputasi terdistribusi
Komputasi terdistribusi menyebar pekerjaan ke banyak agen komputasi yang bekerja hampir otonom. Dalam contoh menjawab pertanyaan, pendekatan terpusat memproses pertanyaan satu per satu, sedangkan pendekatan terdistribusi memprosesnya bersamaan, menukar pemakaian sumber daya dengan kecepatan.
Contoh bisnisnya toko daring yang menjadi tuan rumah situs sendiri. Pendekatan tradisional membeli satu atau dua server besar sesuai proyeksi trafik. Bila trafik melampaui proyeksi, satu-satunya jalan adalah upgrade perangkat keras (perangkat lama terbuang); bila trafik turun, server besar menganggur. Pendekatan terdistribusi membeli banyak server kecil yang masing-masing melayani porsi trafik tetap; saat trafik naik tinggal menambah server serupa, saat turun sebagian dimatikan atau dialihkan.
Skalabilitas
Jumlah server atau agen disesuaikan dengan beban saat itu.
Throughput
Paralelisme banyak mesin kecil menurunkan latensi pemrosesan permintaan.
Ketahanan
Bila satu server mati, server lain mengambil alih beban.
Keuntungan tambahannya, tidak bergantung pada perangkat keras termutakhir menghemat biaya karena rasio harga-terhadap-kinerja perangkat keras jarang linear.
ML terdistribusi
Tugas ML adalah kasus khusus dari analisis data besar. Seiring model makin haus komputasi dan memori (miliaran parameter), menambah daya satu mesin tidak lagi realistis; ML mutakhir harus memakai pendekatan terdistribusi agar hasilnya keluar dalam waktu yang wajar.
Edge inference
Fondasi fisik ML terdistribusi datang dari edge computing: memproses data di atau dekat sumbernya. Ketika model ditanam langsung di perangkat edge, lahirlah edge AI (Alexa untuk pengenalan suara, mobil yang terus belajar dari jalan). Ponsel adalah contoh paling umum; produsen sudah menanam prosesor khusus ML seperti Neural Processing Unit Samsung dan Tensor Processing Unit di chip Google Tensor, dan Google menyediakan Android ML Kit.
Pada skema terpusat, setiap ketikan dan informasi pribadi pengguna dikirim ke server. Latensi setengah sampai satu detik saja sudah membuat saran kata lebih lambat daripada mengetik sendiri, fitur mati tanpa internet, dan server harus melayani permintaan dari miliaran ponsel. Dengan edge inference, beban komputasi pindah ke perangkat.
Edge training
Bagaimana dengan melatih modelnya? Pelatihan terpusat masih mengharuskan data dari semua ponsel dikumpulkan dan disimpan di server: kapasitas server harus tumbuh mengikuti jumlah ponsel, dan data yang dikirim maupun disimpan selalu berisiko disadap atau diserang. Untuk sektor keuangan dan medis, risiko ini sering tidak bisa diterima. Kebutuhan melatih langsung di perangkat edge inilah motivasi FL. Bagian ini adalah di mana-nya FL.
2.3Memahami FL
Definisi
Federated learning adalah metode menyintesis model global dari model-model lokal yang dilatih di edge. FL pertama kali dikembangkan Google pada 2016 untuk Gboard, yang memakai riwayat ketikan pengguna Android untuk menyarankan koreksi dan kata berikutnya. Model yang dilatih pada satu sumber data tidak mewakili keseluruhan, sehingga disebut model lokal. Langkah teoretis kuncinya adalah agregasi, yang membentuk satu model global dari himpunan model lokal pada suatu iterasi. Algoritma paling terkenal, FedAvg, menghitung rata-rata aritmetika per parameter. Satu kali agregasi tidak cukup; kemajuan datang dari proses iteratif: model global dilatih lokal, lalu hasilnya diagregasi lagi menjadi model global baru.
Proses FL: satu ronde
Pada Gboard, setiap ponsel mengumpulkan data ketikan secukupnya, melatih model lokal, lalu mengirim parameternya. Setelah menerima dari cukup banyak ponsel, server mengagregasi dan mengirim model global ke ponsel. Siklus ini berulang sesuai konfigurasi, sehingga model global terus dipantau dan diperbarui. Data pengguna tidak pernah meninggalkan perangkat dan tidak perlu dipusatkan (data minimalism), dan bias model dapat dikurangi. Itulah sebabnya FL disebut solusi atas tiga masalah big data di Bab 1.
Transfer learning dan federated transfer learning
Transfer learning (TL) memakai model besar yang sudah dilatih pada data umum lalu menyesuaikannya untuk tugas spesifik. Lapisan tengah DNN besar cenderung menjadi ekstraktor fitur yang baik, sehingga parameternya bisa dibekukan (parameter freezing) dan pelatihan cukup difokuskan pada lapisan akhir. Ini penting di FL karena perangkat lokal sering berdaya rendah; misalnya di Gboard, lapisan word embedding pralatih dibekukan sehingga jumlah parameter yang dilatih jauh berkurang.
Federated transfer learning (FTL) menerapkan FL pada bagian model yang dipakai bersama, ketika struktur dataset lokal berbeda. Contoh: model analisis sentimen dan model peringkas teks sama-sama memakai komponen sentence encoder; encoder itulah yang dilatih secara federated, lalu masing-masing pihak memperluasnya untuk tugasnya sendiri.
Personalisasi
Ketika data di perangkat tidak independent and identically distributed (non-IID), setiap perangkat dapat menyesuaikan model global, yaitu fine-tuning dengan data lokal atau pemanfaatan bias data secara strategis. Contohnya jaringan mal di dua wilayah dengan demografi berbeda: rekomendasi penyewa yang dipersonalisasi melayani tiap lokasi lebih baik. Model personal unggul di data lokalnya tetapi kalah di data umum; kekuatan FL ada pada keluwesan menyeimbangkan kinerja spesifik pengguna dan generalisasi.
Horizontal dan vertical FL
Horizontal (homogeneous, sample-based) FL berlaku bila semua dataset lokal memiliki fitur yang sama dengan sampel berbeda; Gboard adalah horizontal FL berbentuk cross-device. Vertical (heterogeneous, feature-based) FL memungkinkan pihak-pihak yang memegang fitur berbeda untuk sampel yang sama bekerja sama: bank dan perusahaan e-commerce di kota yang sama mengidentifikasi pelanggan bersama lewat private set intersection berbasis RSA, masing-masing melatih model awal atas fiturnya, lalu model itu digabung. Karena melibatkan beberapa silo data, vertical FL biasanya juga cross-silo. Di Tiongkok, ekosistem FATE dikenal lewat demonstrasi vertical FL bersama WeBank.
2.4Pertimbangan sistem FL
Keamanan sistem FL
Uji coba FL sudah muncul di anti pencucian uang (AML) dan penemuan obat (Consilient, Owkin), otomasi kasir ritel (Edgify bersama Intel dan HP), serta infrastruktur kota pintar di Munich (Fetch.ai). Namun ada hambatan: rasa tidak percaya antarpeserta. Misalkan Bank A dan Bank B sepakat membangun model AML bersama. Implementasi FL yang naif bisa memungkinkan satu bank merekonstruksi model lokal bank lain dari model lokalnya sendiri dan model agregat, lalu menyimpulkan informasi tentang data pelatihan bank lain. Pihak ketiga sebagai penyelenggara server pun memunculkan pertanyaan baru: bagaimana bila ia berkolusi dengan salah satu bank?
Differential privacy (DP)
Setiap peserta menambahkan noise acak ke parameter lokalnya, diambil dari distribusi simetris bermean nol dengan varians relatif kecil (Gaussian, Laplace). Noise ini diharapkan saling meniadakan saat agregasi, sehingga model global hampir sama dengan versi tanpa DP. Batasannya kritis: noise baru saling meniadakan jika pesertanya cukup banyak.
Untuk koalisi kecil, diperlukan langkah tambahan, misalnya setiap peserta mengirim beberapa salinan model lokal. Alternatif lain adalah secure multi-party computation (MPC), di mana agen berkomunikasi satu sama lain untuk menghitung model agregat tanpa server pihak ketiga tepercaya.
Homomorphic encryption (HE)
HE mempertahankan efek penjumlahan dan perkalian melintasi enkripsi, sehingga model lokal bisa diagregasi dalam keadaan terenkripsi dan tidak terbuka bagi pihak luar yang tak memegang kunci. Harganya sangat mahal; komputasi HE penuh bisa ratusan triliun kali lebih lambat. Jalan tengahnya partial HE, yang hanya mendukung penjumlahan atau perkalian sehingga jauh lebih ringan:
- Setiap peserta mengenkripsi model lokalnya dan mengirimkannya ke aggregator.
- Aggregator menjumlahkan semua model dalam bentuk terenkripsi (tanpa bisa membacanya).
- Jumlah terenkripsi dikirim kembali ke peserta.
- Peserta mendekripsi lalu membagi setiap parameter dengan jumlah peserta, menghasilkan model global.
DP dan HE sama-sama esensial untuk penerapan FL nyata; buku Federated AI for Real-World Business Scenarios karya Dinesh C. Verma direkomendasikan untuk pendalaman.
FL terdesentralisasi dan blockchain
Arsitektur client–server memiliki tiga kelemahan: penyelenggara aggregator sulit dijamin netral terhadap datanya sendiri, server pusat adalah single point of failure, dan aggregator di cloud butuh insinyur DevOps yang mahal. Nakayama (penulis utama) ikut menulis eksperimen FL terdesentralisasi penuh pertama memakai blockchain (BAFFLE): smart contract pada jaringan Ethereum privat mengoordinasikan pembaruan dan agregasi model tanpa server. Hasilnya lebih efisien dan skalabel daripada FL berbasis aggregator, temuan yang juga dikonfirmasi eksperimen Hewlett Packard dan institut riset Jerman dengan nama swarm learning.
Meski riset bergeser ke arah desentralisasi, sisa buku memakai arsitektur terpusat dengan aggregator karena dua alasan: blockchain masih asing bagi banyak peneliti AI/ML sehingga bisa memperumit materi, dan logika FL sendiri tidak bergantung pada arsitektur jaringan.
Cara kerja sistem federated learning
Konsep FL sederhana, tetapi implementasinya menuntut pemahaman AI sekaligus sistem terdistribusi. Bab ini menjadi cetak biru untuk Bab 4–6: komponen sistem, urutan pesan dari inisialisasi hingga operasi berkelanjutan, dasar agregasi, serta cara menskalakan sistem secara horizontal.
- Arsitektur: aggregator, agen, database, server perantara
- Alur sistem dari inisialisasi hingga siklus berkelanjutan
- FL sinkron vs asinkron, siklus sisi aggregator dan agen
- Dasar agregasi dan FedAvg di ruang parameter
- Desain horizontal dengan model semi-global
3.1Arsitektur sistem FL
Sistem FL adalah sistem terdistribusi yang tersebar ke server dan klien. Arsitektur representatif di buku dirancang terpisah-pisah (decoupled) agar mudah dikembangkan, terdiri dari tiga komponen:
- Cluster aggregator (aggregator): sistem dengan FL server yang mengumpulkan model hasil latih dari banyak agen, mengagregasinya menjadi model global, lalu mengirimkannya kembali.
- Distributed agent (agen): lingkungan belajar dengan FL client, misalnya perangkat edge, aplikasi seluler, tablet, atau lingkungan cloud terdistribusi. Kode sisi klien berupa pustaka yang dipasang ke aplikasi ML lokal buatan insinyur ML.
- Database server (database): menyimpan data aggregator, agen, model lokal dan global, serta metrik kinerjanya. Agen tidak terhubung langsung ke database demi kesederhanaan desain.
Keuntungan arsitektur ini: pengguna tak perlu mengirim data mentah ke server, terlebih ke server milik pihak ketiga. Model yang dikirim bisa berupa bobot penuh, perubahan bobot (gradien), atau sebagian saja, dan ukurannya biasanya jauh lebih kecil daripada data mentah sehingga beban komunikasi turun.
Cluster aggregator
Aggregator terdiri dari modul FL server, FL state manager, dan modul agregasi model. Modul lanjutan (keamanan, fleksibilitas agregasi) bisa ditambahkan; sebagian tidak diimplementasikan di simple-fl karena tujuan buku adalah memahami struktur dasar.
- Communication handler: menerima pesan polling dari agen dan membalasnya. Jenis pesannya mencakup registrasi agen beserta kredensial, inisialisasi model awal, konfirmasi partisipasi ronde, dan model lokal hasil latih ulang. Ia juga mengakses database untuk membaca dan menyimpan data serta model. Dapat memakai HTTP, WebSocket, atau kerangka komunikasi lain.
- System configuration handler: mencatat registrasi dan status agen. Agen yang belum dikenal menjalani autentikasi (misalnya validasi token) agar dikenali pada koneksi berikutnya.
- Model synthesis routine: memeriksa status pengumpulan model lokal dan mengagregasi ketika kriteria terpenuhi, misalnya 80% agen terhubung sudah mengirim model. Pola umumnya: memeriksa database atau buffer secara periodik selama server berjalan, lalu menyimpan dan mengirim model global.
- FL state manager: menyimpan informasi volatil, yaitu model lokal dan global yang diterima, cluster model dari database, info ronde, dan daftar agen. Model lokal yang di-buffer inilah yang dipakai modul agregasi.
- Model aggregation module: kumpulan algoritma agregasi (Bab 7). Yang paling umum adalah FedAvg, yang merata-ratakan bobot dengan mempertimbangkan jumlah sampel tiap model.
Distributed agent
- Communication handler: kanal ke aggregator yang ditugaskan. Mengirim payload registrasi, model awal, serta model lokal beserta data kinerjanya. Mendukung push dan polling lewat HTTP atau WebSocket.
- FL participation handler: mendaftarkan agen ke platform dan memulai proses FL bila perlu. Balasannya menyiapkan agen untuk proses berkelanjutan dan sering kali menyertakan model global terbaru.
- Model exchange routine: rutin sinkronisasi yang terus memeriksa ketersediaan model global baru, mengunduhnya, dan mengirim model hasil latih bila pelatihan lokal selesai.
- Client libraries: pustaka administratif (mendaftarkan model awal, meminta perubahan konfigurasi) dan pustaka umum (memulai thread inti, mengirim model, menyimpan model, mengubah status klien, mengunduh model global). Buku berfokus pada yang umum.
- ML engine lokal dan pipeline data: dirancang masing-masing insinyur ML, independen dari fungsi FL. Bagian ini unik untuk setiap aplikasi.
Database server
Database sebaiknya dipisah dari aggregator agar sistem sederhana dan tangguh. Query handler menerima permintaan aggregator dan mengembalikan data atau model. Entri yang mungkin disimpan:
| Entri | Isi | Ada di simple-fl? |
|---|---|---|
| Aggregator | ID, IP dan port, waktu registrasi/pembaruan, status, ronde, kriteria agregasi | — |
| Agen | ID, IP dan port, status, opt-in/out untuk FL sinkron, penanda agen bermasalah (peracun, sangat lambat) | — |
| Base model | Arsitektur dan info model awal yang dipakai sepanjang ronde | — |
| Model lokal | ID model, waktu dibuat, ID agen pengunggah, ID aggregator penerima. ID dipetakan ke lokasi file (lokal atau S3) | ✓ tabel local_models |
| Cluster global model | ID model, ID aggregator, waktu dibuat | ✓ tabel cluster_models |
| Data kinerja | Metrik model lokal dan global sebagai metadata, untuk memastikan model agregat cukup baik sebelum dirilis | sebagian (akurasi) |
Server perantara untuk perangkat berdaya rendah
Sebagian perangkat (misalnya jam pintar) hanya mampu inferensi. Platform dapat menambah lapisan server perantara seperti tablet, laptop, atau server edge yang melakukan pelatihan atas nama perangkat. Interaksi aggregator dengan server perantara tidak berubah; cukup tambahkan API antara perangkat pengguna dan server perantara.
3.2Alur sistem: dari inisialisasi ke operasi berkelanjutan
Setiap agen menjadi milik satu aggregator. Model hasil agregasi dari model-model lokal disebut cluster global model (disingkat cluster model atau model global).
Inisialisasi database, aggregator, dan agen
Urutannya selalu database → aggregator → agen. Database sebaiknya tetap dipakai walau ringan (SQLite) agar proses federasi terjaga. Aggregator mendaftar ke database saat pertama tersambung; bila tersambung ulang setelah putus, database mengembalikan info lama sehingga aggregator melanjutkan dari titik terakhir. Agen mendaftar ke aggregator yang dikenalnya dengan IP, port, dan token autentikasi, dengan mekanisme pemulihan yang sama.
- Aggregator menerima pesan partisipasi dari agen.
- Agen tepercaya / sudah terdaftar? Jika tidak lolos, registrasi ditolak; jika lolos, proses berlanjut.
- Model global awal sudah terdaftar? Jika ya, agen langsung menerima model global dan memakainya untuk pelatihan lokal. Jika belum, model yang dibawa agen dapat menjadi model awal.
- Aggregator membalas agen dengan konfirmasi partisipasi.
Unggah model awal oleh initial agent
Model awal yang arsitekturnya dipakai sepanjang proses FL disebut base model, dan agen yang mengunggahnya disebut initial agent. Biasanya base model disediakan pemilik aplikasi ML sebagai bagian konfigurasi aggregator. Info base model mencakup model itu sendiri, waktu dibuat, dan kinerja awal.
Siklus FL keseluruhan
- Agen selain initial agent meminta model global terbaru untuk dipasang di aplikasinya.
- Agen melatih ulang model secara lokal dengan data yang lebih baru; data ini tetap lokal. Agen dapat ikut banyak ronde dengan data berbeda.
- Agen memanggil API klien FL untuk mengirim model (arsitektur sama dengan base model) ke aggregator.
- Aggregator menerima dan menyimpan model ke database, menghitung jumlah model terkumpul, dan terus menerima selama ronde terbuka. Ketika kriteria terpenuhi, model diagregasi.
- Selama itu agen terus melakukan polling, atau aggregator mendorong (push) model global ke agen, tergantung desain dan kendala jaringan.
- Agen memasang dan melatih ulang model global. Siklus berulang sampai kriteria henti terpenuhi, atau tanpa henti agar model terus mempelajari tren terbaru; ronde bisa dihentikan manual untuk evaluasi sebelum rilis.
FL sinkron dan asinkron
Aggregator memilih agen per ronde
Sederhana dirancang dan cocok bila pemilihan agen harus jelas. Kelemahannya, bila agen sangat banyak dan kemampuannya beragam, aggregator bisa menunggu lama; agen yang lambat atau gagal mengunggah disebut straggler.
Agen tepercaya boleh mengunggah kapan saja
Ronde boleh ditutup kapan pun aggregator mau, dengan atau tanpa jumlah minimum model, atau dengan tenggat waktu. Lebih fleksibel, tetapi desainnya lebih rumit. Perlu memikirkan penjadwalan, respons terlambat, tingkat partisipasi minimum, dan agen buruk.
Simulasi efek straggler pada beberapa strategi ronde tersedia di Bab 7.
Siklus di sisi aggregator
Aggregator menjalankan dua thread: satu menerima dan menyimpan sementara model lokal, satu lagi mengagregasi.
Thread 1 · Menerima & menyimpan model lokal
- Menunggu model lokal diunggah agen.
- Dari agen tepercaya & termasuk daftar yang diterima? Modelnya valid? Jika tidak, buang. Penyaringan ini mencegah peracunan model global.
- Dorong model ke database (dikemas bila database di server lain).
- Simpan di buffer state manager dalam format yang sesuai, misalnya array NumPy.
Thread 2 · Agregasi model lokal
- Kriteria agregasi terpenuhi? Misalnya 8 dari 10 agen (80%) sudah mengirim, atau kombinasi jumlah model dan lama ronde agar sistem tidak macet.
- Jalankan agregasi (umumnya FedAvg). Bila waktu habis dan model kurang, ronde dibatalkan atau dipaksa mengagregasi yang ada.
- Dorong model global ke database.
- Kirim model global ke semua agen, atau beri tahu saat mereka polling.
- Naikkan nomor ronde FL.
Siklus pelatihan ulang di sisi agen
Di sisi agen, perilaku dikendalikan transisi status. Pada waiting_gm agen melakukan polling (atau menerima push). Setelah model global diunduh status menjadi gm_ready; sebelum mengganti model lokal, agen boleh memeriksa apakah kinerja model global memadai bagi engine lokalnya, dan tetap memakai model lama bila tidak. Lalu training, kemudian sending, dan kembali ke waiting_gm. Bila model global baru tiba saat masih melatih, model yang sedang dilatih dibuang. Coba jalankan:
Interpretasi model berdasarkan deviasi dari baseline
Agar model lokal selalu layak dipakai di produksi, keluarannya bisa dibandingkan dengan keluaran baseline (rata-rata jendela waktu sebelumnya, titik acuan dari operator atau pakar, atau algoritma berbasis aturan):
3.3Dasar agregasi model
Apa sebenarnya arti mengagregasi model?
Tujuan setiap strategi agregasi adalah menghasilkan model yang kinerjanya meningkat bertahap atas seluruh data milik agen. FL adalah versi terbatas dari distributed learning: data lokal tidak boleh diakses agen lain. Tanpa batasan itu, kita cukup menggabungkan data lalu melatih satu model; ini agregasi sebelum pelatihan, dan model terpusat itulah target yang ingin didekati FL. Karena data tak boleh dibagikan, FL melakukan agregasi setelah pelatihan: menggabungkan kecerdasan yang ditangkap model-model dari dataset berbeda.
FedAvg: federated averaging
Mengejutkan bahwa cara sesederhana ini menghasilkan generalisasi. Buku menggambarkannya di ruang parameter dua dimensi: dua model baru (lingkaran dan kotak) bergerak saat dilatih. Tanpa agregasi, masing-masing menuju optimum khusus datasetnya yang tidak menggeneralisasi; seberapa jauh optimum itu dari optimum sebenarnya bergantung pada kemiripan distribusi data. Dengan FedAvg di setiap langkah, model lokal ditarik ke rata-ratanya dan akhirnya mendekati target. Simulasi di bawah memakai tiga agen dengan loss kuadratik; mulai dengan skenario IID, lalu bandingkan dengan “Tanpa agregasi”.
Mengapa tidak melatih penuh tiap model lalu merata-ratakannya sekali di akhir? Pada contoh mainan itu mungkin berhasil, tetapi pada model nyata berdimensi tinggi, sekali rata-rata di akhir menghasilkan kinerja buruk. Proses iteratif FedAvg jauh lebih andal. Kasus non-IID dan perbaikannya dibahas mendalam di Bab 7.
3.4Meningkatkan skalabilitas dengan desain horizontal
Bila jumlah agen tidak besar, FL terpusat lebih masuk akal: kontrol, pemeliharaan, dan penerapannya mudah dengan overhead komunikasi rendah. Saat agen sangat banyak, skala horizontal dengan arsitektur terdesentralisasi patut dipertimbangkan (kerangka auto-scaling seperti Kubernetes cocok, meski di luar cakupan buku).
Desain horizontal dengan model semi-global
Google, dalam makalah Towards Federated Learning at Scale, memakai node master terpusat yang berkala mengagregasi semua cluster model, yang berpotensi bermasalah ketahanannya. Alternatifnya berdiri di atas dua gagasan: agregasi antar-cluster aggregator tanpa node master, dan sintesis model semi-global dari cluster model aggregator lain. Setiap aggregator bertukar cluster model (langsung atau lewat database) dan mendekati model global optimal sendiri-sendiri, sehingga sistem lebih tangguh dan mudah diskalakan.
Database terdistribusi
Riwayat model dapat disimpan di database terdistribusi seperti IPFS atau blockchain untuk akuntabilitas. Setiap model (lokal, cluster, semi-global) diberi ID unik global berupa nilai hash, misalnya dengan konsep Chord Distributed Hash Table, protokol lookup peer-to-peer yang skalabel. Metadata seperti stempel waktu dan hash memastikan cluster model tidak diubah, dan aggregator yang mengirim cluster model berbahaya dapat dikenali dari pola bobot atau penyimpangan yang terlalu besar dibanding cluster model lain. Database ini juga menyimpan seluruh status volatil sehingga sistem dapat pulih dari kegagalan, serta tabel pemetaan cluster model–aggregator dengan metadatanya.
Partisipasi agen asinkron dengan banyak aggregator
Agen dapat menyiarkan pesan partisipasi (berisi ID unik) ke aggregator yang dapat dijangkau. Salah satu aggregator membalas dengan ID cluster aggregator tujuan, dihitung dari fungsi hash bersama.
Sintesis model semi-global
Setelah ditugaskan, agen meminta base model bila sudah terdaftar, atau mengunggahnya bila belum. Aggregator menyaring setiap model lokal (misalnya memeriksa selisih bobot terhadap model global) dan membuang yang tidak valid, mengagregasi yang diterima menjadi cluster model, menyimpannya, sekaligus menarik cluster model aggregator lain untuk disintesis menjadi model semi-global yang dipakai agen-agennya.
Aggregator tidak perlu menarik semua cluster model setiap ronde; model global tetap bisa konvergen dari subset acak. Melonggarkan syarat pembentukan model global di setiap pembaruan ini meningkatkan ketahanan dan kemandirian aggregator, sekaligus mengurangi hambatan komputasi dan komunikasi yang khas pada FL terpusat.
Implementasi server FL dengan Python
Bab ini mewujudkan komponen sisi server dari Bab 3 menjadi kode nyata di repositori simple-fl: server FL yang menerima registrasi dan model, state manager yang menyimpan buffer, modul FedAvg, serta database pseudo yang menulis ke SQLite. Kodenya sengaja disederhanakan agar prinsipnya terlihat jelas.
- Komponen perangkat lunak aggregator dan database
- Kelas
Serverdiserver_th.py - Kelas
StateManagerdan kriteria agregasi - FedAvg di
aggregation.py PseudoDBdanSQLiteDBHandler
Kode: github.com/tie-set/simple-fl. Potongan di bawah dipersingkat dan diberi komentar Bahasa Indonesia; nama fungsi dan alur dipertahankan agar mudah dicocokkan dengan repositori.
4.1Komponen perangkat lunak aggregator dan database
server_th.py mewujudkan seluruh alur dasar FL: komunikasi antara aggregator, agen, dan database; koordinasi partisipasi agen; inisialisasi cluster model dari agen pertama; penerimaan model lokal; dan rutin sintesis cluster model. state_manager.py mengisi buffer saat model lokal tiba dan mengosongkannya saat ronde berganti. aggregation.py di contoh ini hanya berisi FedAvg. Di sisi database, pseudo_db.py menerima pesan model dari aggregator, menyimpan biner model ke sistem file, dan meneruskan metadatanya ke sqlite_db.py.
Konfigurasi aggregator
polling = 0.| Parameter | Arti |
|---|---|
aggr_ip, db_ip | Alamat IP server FL (aggregator) dan server database. |
reg_socket | Port tempat agen mendaftar pertama kali. |
recv_socket | Port tempat agen mengunggah model lokal atau melakukan polling; diberitahukan ke agen saat registrasi. |
exch_socket | Port untuk mengirim model global ke agen pada mode push. |
db_socket | Port komunikasi aggregator ↔ database. |
round_interval | Interval (detik) pemeriksaan kriteria agregasi. |
aggregation_threshold | Persentase model lokal terkumpul (dari agen terdaftar) yang diperlukan untuk memulai agregasi. |
polling | 1 = agen melakukan polling, 0 = aggregator mendorong model. Harus sama dengan konfigurasi agen. |
4.2Mengimplementasikan fungsi server FL
Seluruh fungsi dasar server ada di server_th.py. Server mengimpor pustaka internal dari fl_main.lib.util (komunikasi, struktur data, helper, pembuat pesan, enumerasi status) serta StateManager dan Aggregator.
Registrasi agen
register() adalah coroutine yang menerima pesan partisipasi (berisi struktur model) dan membalas dengan informasi socket untuk pertukaran model berikutnya serta model global. Bila ronde masih 0 (belum ada model global), pesan ini sekaligus menginisialisasi proses FL.
Menangani pesan dari agen
receive_msg_from_agent() terus berjalan di recv_socket dan membedakan dua jenis pesan: update (unggah model lokal) dan polling.
Perhatikan logika polling: agen menyertakan nomor ronde yang ia ketahui. Bila ronde server lebih besar, berarti agregasi sudah terjadi sejak polling terakhir, dan model global ikut dalam balasan. Bila tidak, server hanya membalas ACK.
Rutin sintesis model global
4.3Memelihara model untuk agregasi dengan state manager
StateManager menyimpan status volatil aggregator: model lokal, informasi agen, cluster model hasil agregasi, dan ronde saat ini.
int() berarti 3 agen dengan threshold 0,5 hanya butuh 1 model. Threshold 1,0 berarti semua agen terdaftar harus mengirim (mode sinkron penuh).Beberapa hal yang patut diperhatikan:
LimitedDicthanya menerima kunci yang ada dimnames, sehingga agen yang mengirim arsitektur berbeda akan ditolak dengan error.init_weights_flagmenentukan apakah model awal memakai bobot kiriman agen atau diisi nol dengan bentuk yang sama.clear_lmodel_buffers()wajib dipanggil setiap pergantian ronde; tanpa itu, model dari ronde lain ikut teragregasi dan kinerja FL menurun.add_agent()mengenali agen lama berdasarkan nama, sehingga agen yang tersambung ulang mendapat ID dan socket yang sama.
Gunakan simulator berikut untuk melihat bagaimana buffer, ambang, ronde, dan tabel database berinteraksi persis seperti kode di atas:
4.4Mengagregasi model lokal
Contoh perhitungan: dua agen mengirim lapisan [[1,2],[3,4]] (n = 300) dan [[5,6],[7,8]] (n = 100). Bobotnya 0,75 dan 0,25, sehingga hasil = 0,75·[[1,2],[3,4]] + 0,25·[[5,6],[7,8]] = [[2,3],[4,5]]. Agen dengan data lebih banyak menarik model global lebih kuat. Kalkulator interaktif FedAvg tersedia di Bab 6.
4.5Menjalankan server FL
init_fl_server (dari communication_handler) membuka dua server WebSocket dan menjalankan ketiga coroutine bersamaan dalam satu event loop asyncio, lalu berjalan selamanya.
4.6Mengimplementasikan dan menjalankan database server
Database boleh berjalan di mesin yang sama atau terpisah; kodenya sama.
| Tabel | Kolom | Diisi saat |
|---|---|---|
local_models | model_id, generation_time, agent_id, round, performance, num_samples | Model awal dan setiap unggahan model lokal |
cluster_models | model_id, generation_time, aggregator_id, round, num_samples | Setiap kali agregasi menghasilkan cluster model |
4.7Potensi pengembangan server FL
Mendesain ulang database
Tambahkan tabel aggregator, agen, base model, dan info proyek. Versi sekarang kehilangan hampir semua informasi bila server atau agen berhenti, sehingga belum mendukung terminasi dan restart.
Otomasi registrasi model awal
Alih-alih mendefinisikan lapisan lewat nama manual, cukup muat model PyTorch atau Keras (.pt, .pth, .h5) untuk memulai.
Metrik kinerja lokal & global
Saat ini hanya akurasi. Aplikasi nyata butuh banyak metrik, yang harus didukung skema database dan protokol komunikasi.
Agregasi yang lebih halus
Jumlah sampel bisa berubah dinamis; FedAvg dapat diganti metode lain sesuai aplikasi (Bab 7).
pickle. Membuka pickle dari sumber tak tepercaya dapat menjalankan kode sembarang. Untuk penerapan nyata, tambahkan TLS (buku juga menyebutnya), autentikasi agen, dan pertimbangkan serialisasi yang lebih aman seperti numpy.savez atau safetensors.local_models dan cluster_models dapat dipindah ke PostgreSQL, ditambah kolom wilayah (geometri PostGIS) per agen dan metrik per klien (mIoU, F1). Dengan begitu dasbor peta bisa mewarnai tiap wilayah berdasarkan kinerja model lokalnya per ronde.Implementasi sisi klien FL
Klien FL menghubungkan aplikasi ML lokal yang melatih dan menguji model dengan aggregator. Bab ini membedah client.py: registrasi, sinkronisasi pertukaran model, mekanisme push dan polling, desain pustaka klien, lalu cara memasangnya ke ML engine minimal dan ke klasifikasi citra dengan CNN.
- Komponen dan konfigurasi agen
- Partisipasi, model exchange routine, push vs polling
- Merancang pustaka klien yang mudah dipakai
- Integrasi ke ML engine minimal (5 langkah)
- Contoh klasifikasi citra CIFAR-10 dengan PyTorch
5.1Ikhtisar komponen sisi klien
Sisi klien disederhanakan menjadi satu file utama, fl_main/agent/client.py, ditambah pustaka pendukung di lib/util. File ini berisi fungsi untuk ikut dalam siklus FL, kerangka pertukaran model, serta mekanisme push dan polling. Fungsi-fungsinya juga menjadi antarmuka (pustaka) bagi ML engine lokal yang Anda siapkan sendiri.
| Parameter | Arti |
|---|---|
aggr_ip, reg_socket | Alamat dan port registrasi aggregator. |
model_path | Folder penyimpanan model lokal, model global, dan file status. |
local_model_file_name / global_model_file_name | Nama file biner model lokal (lms.binaryfile) dan global (gms.binaryfile). |
state_file_name | File berisi status klien: menunggu model global, melatih, mengirim, dan seterusnya. |
init_weights_flag | 1 = agen mengirim model berbobot yang sudah dikonfigurasi sebagai model awal; 0 = aggregator mengisi nol. |
polling | Harus sama dengan konfigurasi aggregator. |
5.2Mengimplementasikan fungsi utama klien
Klien membuat ID unik, membaca IP-nya, lalu menyiapkan port. msend_socket (untuk mengirim model lokal) baru diketahui setelah registrasi, sedangkan exch_socket (menerima model global pada mode push) dapat berasal dari argumen baris perintah saat simulasi atau ditentukan aggregator. Status klien disimpan sebagai angka ClientState di file state: waiting_gm, training, sending, gm_ready.
Partisipasi agen dalam siklus FL
Pesan partisipasi berisi agent_name, id, model_id, models (dict model per nama lapisan; bobotnya tak perlu terlatih bila init_flag False karena hanya dipakai untuk mengingat bentuk), init_weights_flag, simulation_flag, exch_socket, gene_time, performance_dict, dan agent_ip.
Sinkronisasi pertukaran model
model_exchange_routine() berjalan selama klien hidup, memeriksa status setiap beberapa detik dan memanggil fungsi yang sesuai.
| Status | Nilai | Yang dilakukan rutin | Siapa yang mengubah status |
|---|---|---|---|
waiting_gm | 0 | Polling ke aggregator (bila mode polling) | send_models() setelah mengirim |
training | 1 | Tidak ada, menunggu | wait_for_global_model() |
sending | 2 | Memanggil send_models() | setup_sending_models() |
gm_ready | 3 | Tidak ada; ML engine yang memakai model | save_model_from_message() |
Implementasi push dan polling
Setelah partisipasi dikonfirmasi, agen menunggu model global lewat salah satu dari dua cara. SSL/TLS tidak diimplementasikan demi kesederhanaan, tetapi sangat dianjurkan.
5.3Merancang pustaka klien FL
Fungsi inti dikemas sebagai pustaka agar pengembang ML bisa memasang FL tanpa mempelajari detail sistem. Fungsi yang berjalan terus dibungkus sebagai thread agar ML engine bisa berjalan paralel.
| API untuk pengembang ML | Kapan dipanggil |
|---|---|
Client() | Sekali di awal; membaca konfigurasi dan argumen. |
send_initial_model(models) | Sekali; mendaftarkan arsitektur/bobot awal (status → sending). |
start_fl_client() | Sekali; registrasi, server push (opsional), dan rutin pertukaran. |
wait_for_global_model() | Di awal setiap iterasi loop; memblokir sampai model global siap. |
send_trained_model(models, n, perf) | Setelah pelatihan lokal; n dipakai sebagai bobot FedAvg. |
5.4Integrasi ML engine lokal ke sistem FL
Contoh examples/minimal/minimal_MLEngine.py memakai model dan pelatihan dummy agar alur FL terlihat tanpa kerumitan ML. Model berupa dict NumPy dengan dua “lapisan”.
- ML engine memanggil
wait_for_global_model(); begitu statusgm_ready, model global dimuat dan status menjaditraining. - ML engine menghitung kinerja model global, lalu melatih lokal.
- Model global baru tiba saat masih melatih? Bila ya (pelatihan terlalu lambat sehingga aggregator sudah mengagregasi tanpa agen ini), status menjadi
gm_readydansend_trained_model()membuang model ini. send_trained_model()menyimpanlms.binaryfiledan mengubah status kesending.- Thread pertukaran melihat status
sending, mengirim model ke aggregator, lalu status kembaliwaiting_gmdan polling dimulai.
5.5Contoh integrasi klasifikasi citra
Folder examples/image_classification/ berisi cnn.py (model), conversion.py (konverter model ↔ dict NumPy), ic_training.py (data manager dan loop latih), dan classification_engine.py (integrasi). Hanya fungsi model, latih, dan evaluasi yang diganti; kode integrasi lima langkah tetap sama, kecuali jumlah sampel yang dikirim sebagai bobot FedAvg.
Konverter adalah jembatan antara framework ML dan aggregator yang agnostik framework: model PyTorch diurai menjadi Dict[str, np.array] per nama parameter, dan sebaliknya. Isi conversion.py tidak dibahas di buku; sketsa berikut menunjukkan gagasannya (ilustrasi, bukan salinan repositori):
Net dengan U-Net atau ResNet (mis. bobot pralatih TorchGeo), DataManger dengan pemuat patch COG memakai windowed reading rasterio, dan kirim num_samples = jumlah patch (atau piksel berlabel) agar FedAvg memberi bobot adil antarwilayah. Satu hal penting: hitung statistik normalisasi per band secara federated (mean dan std agregat), bukan per klien, agar input semua klien berada pada skala yang sama.Menjalankan sistem FL dan menganalisis hasilnya
Saatnya menjalankan semua yang dibangun di Bab 4–5. Bab ini memandu instalasi, konfigurasi tiga file JSON, menjalankan database, aggregator, dan agen, lalu membaca apa yang terjadi di konsol dan di database. Penutupnya adalah klasifikasi CIFAR-10 dengan CNN pada dua hingga lima agen.
- Instalasi lingkungan conda dan konfigurasi JSON
- Urutan menjalankan komponen, mode simulasi
- Folder data, database SQLite, dan isi tabelnya
- Menelusuri log contoh minimal satu dan dua agen
- Klasifikasi citra CIFAR-10 dengan CNN
6.1Mengonfigurasi dan menjalankan sistem FL
Instalasi lingkungan
Klon repositori di setiap mesin yang akan menjalankan komponen FL, lalu buat lingkungan conda federatedenv. Untuk simulasi cukup satu mesin; untuk lingkungan terdistribusi, pasang lingkungan yang sama di mesin database, aggregator, dan setiap agen.
Tiga file konfigurasi
Semua file JSON ada di folder setups. Bagian penting yang sering salah adalah alamat IP saat komponen berada di mesin berbeda:
| File | Parameter kunci | Catatan penerapan |
|---|---|---|
config_db.json | db_ip, db_socket (9017), db_name, db_data_path (./db), db_model_path (./db/models) | Di cloud (misal AWS EC2) isi db_ip dengan IP privat instans. |
config_aggregator.json | aggr_ip, db_ip, reg_socket, recv_socket, exch_socket, db_socket, round_interval, aggregation_threshold, polling | aggr_ip = IP privat instans. db_ip = IP publik DB bila di instans lain, atau IP privat yang sama bila satu instans. Contoh threshold di buku: 0,85. |
config_agent.json | aggr_ip, reg_socket, model_path, nama file model & status, init_weights_flag, polling | aggr_ip = IP publik aggregator; port harus dibuka untuk koneksi masuk. Disarankan polling = 1 bila server di cloud. |
Menjalankan database, aggregator, dan agen
Setelah aggregator berjalan, model_synthesis_routine memeriksa setiap 5 detik apakah jumlah model lokal sudah memenuhi ambang. Dalam mode simulasi, gm_recv_port adalah port tempat agen menunggu model global (diberitahukan ke aggregator lewat pesan partisipasi), dan agent_name harus unik karena menjadi nama folder status dan model agen.
Folder data dan database
File .db dapat dibuka dengan penampil SQLite apa pun. Contoh isi kedua tabel (nilai ilustratif):
| local_models | |||||
|---|---|---|---|---|---|
| model_id | generation_time | agent_id | round | performance | num_samples |
047b18… | 02/17/2022 15:50:07 | a89fd1… | 0 | 0.0 | 1 |
e89ccc… | 02/17/2022 16:06:46 | a1031a… | 1 | 0.5 | 1 |
| cluster_models | ||||
|---|---|---|---|---|
| model_id | generation_time | aggregator_id | round | num_samples |
ab6333… | 02/17/2022 16:06:51 | 8c6c94… | 1 | 2 |
6.2Memahami apa yang terjadi saat contoh minimal berjalan
Dengan satu agen, agregasi terjadi setiap kali agen itu mengunggah model, dan karena pelatihannya dummy, model global selalu sama dengan model awal. Pelajaran yang lebih menarik datang dari dua agen dengan aggregation_threshold = 1.0. Telusuri langkah demi langkah di bawah; setiap baris log diambil dari pola keluaran konsol di buku.
Pesan partisipasi yang dikirim agen pertama berbentuk list Python seperti ini (diringkas):
Buku menutup bagian ini dengan tiga pertanyaan verifikasi, dan ketiganya terjawab dari log:
- Apakah agregasi benar untuk kasus sederhana? Ya, model global terbentuk setelah dua model terkumpul.
- Apakah FedAvg diterapkan dengan benar? Ya. Agen 1 mengirim
[[1,2,3],[4,5,6]], agen 2[[3,4,5],[6,7,8]], num_samples sama, dan hasilnya[[2,3,4],[5,6,7]]. - Apakah ambang agregasi bekerja? Ya, aggregator menunggu sampai “collected 2 / needed 2”.
Periksa sendiri dengan bobot berbeda:
6.3Menjalankan klasifikasi citra dan menganalisis hasil
Contoh ini memakai CIFAR-10 untuk menunjukkan bagaimana model tumbuh lewat proses FL. Fokusnya integrasi, bukan memaksimalkan akurasi.
citra warna 32×32 piksel, 10 kelas × 6.000 citra
data latih / data uji
citra (2.000 batch berukuran 4), diatur lewat num_training_data
Kelas: airplane, automobile, bird, cat, deer, dog, frog, horse, ship, truck.
Akurasi setiap model lokal dan cluster model tersimpan di database, sehingga riwayat kinerja bisa dibaca dari file .db. Instance DataManager juga punya fungsi get_random_images untuk membandingkan label asli dan prediksi pada citra tertentu. Buku menampilkan kurva kinerja dari eksperimen penulis dan menekankan bahwa hasil Anda bisa berbeda; dengan hanya dua agen perbedaannya tipis, dan pengaturan hyperparameter, jumlah data, serta jumlah agen yang tepat diperlukan untuk evaluasi yang bermakna.
Menjalankan lima agen cukup dengan memberi port dan nama berbeda. Folder data/agents/ kemudian berisi lima subfolder, tabel local_models berisi lima model per ronde lengkap dengan akurasi lokal, dan setiap ronde menghasilkan satu baris cluster_models.
- Jalankan dua agen minimal dengan model berbeda dan cocokkan model global dengan perhitungan FedAvg manual.
- Ubah
num_samplessalah satu agen dan pastikan bobotnya ikut berubah. - Set ambang < 1 dan pastikan agregasi berjalan tanpa menunggu semua agen.
- Periksa jumlah baris tabel: satu baris
cluster_modelsper ronde, dan barislocal_modelssebanyak unggahan. - Untuk CIFAR-10, akurasi model global seharusnya cenderung naik antar-ronde; bila turun drastis, periksa konverter dan num_samples.
pseudo_db, satu server_th, dan satu kontainer per wilayah (agen) dengan volume data patch masing-masing. Partisi data sebaiknya mengikuti batas administratif atau tile, bukan acak, agar meniru heterogenitas nyata. Untuk evaluasi, laporkan metrik global dan per wilayah serta bandingkan dengan pelatihan terpusat dan lokal saja.Agregasi model
Agregasi adalah cara FL memakai model-model yang dilatih lokal untuk menghasilkan model dengan kinerja global yang kuat. Kekuatan dan ketahanan metode agregasi berbanding lurus dengan kinerja model akhir. Bab ini menguraikan kapan FedAvg bekerja sangat baik, kapan gagal, dan metode apa yang memperbaikinya.
- Dua fase setiap ronde; agregasi parameter vs gradien
- FedAvg dan tiga syarat skenario ideal
- Non-IID, heterogenitas komputasi, agen adversarial
- FedProx, kompensasi, median, Krum, FedCurv
- Berbagi data, personalisasi, cluster dan semi-global
Kode algoritma: folder ch7 di PacktPublishing/Federated-Learning-with-Python (MIT). Contoh FL lengkap di repositori itu memakai pip install stadle-client.
7.1Meninjau ulang agregasi
Agar FL bisa diterapkan dibutuhkan: sekumpulan agen komputasi; dataset lokal (statis atau dinamis) di setiap agen yang dalam skenario paling ketat tidak boleh dikomunikasikan sedikit pun; model berparameter di setiap agen yang bisa dilatih pada data lokal; serta server parameter (aggregator) yang menerima model lokal setiap iterasi dan mengirim balik hasil agregasi. Setiap ronde komunikasi terdiri dari dua fase:
Pelatihan lokal
Agen melatih model lokal pada dataset lokal selama sejumlah iterasi.
Agregasi
Agen mengirim model hasil latih ke aggregator dan menerima model agregat sebagai titik awal ronde berikutnya.
Yang dikirim bisa berupa parameter model (berlaku umum untuk semua model yang dapat diparameterisasi) atau gradien yang terakumulasi selama pelatihan berbasis gradien; agen lalu memperbarui model dengan gradien agregat. Pendekatan kedua terbatas pada optimasi berbasis gradien, tetapi karena deep learning mendominasi, muncul subkelas metode agregasi gradien. Bab ini membingkai agregasi lewat FedAvg.
7.2Memahami FedAvg
FedAvg dipilih karena algoritmanya sederhana, berlaku untuk lebih banyak jenis model daripada pendekatan gradien, dan menjadi baseline di hampir semua riset (makalah aslinya ditulis tim Google yang memperkenalkan FL, arXiv 1602.05629). Pendahulunya, FedSGD, adalah analog agregasi gradien dari rata-rata parameter FedAvg. Langkah algoritma asli:
- Server mengambil sampel acak K·C klien, dengan K jumlah total klien dan 0 < C ≤ 1 (idealnya C = 1).
- Klien terpilih menerima model agregat terbaru dan mulai melatih pada data lokal (ClientUpdate).
- Setiap klien mengirim model hasil latih setelah jumlah pelatihan tertentu.
- Server menghitung rata-rata per parameter (berbobot nk/N) sebagai model agregat baru.
Pada skenario ideal, FedAvg identik dengan parallelized SGD (pSGD), yang membagi data ke banyak inti prosesor, melatih paralel beberapa iterasi, merata-ratakan, lalu mengulang. Seluruh jaminan konvergensi pSGD berlaku untuk FedAvg, sehingga laju konvergensinya kuat. Masalahnya, “skenario ideal” memuat tiga syarat yang di dunia nyata hampir selalu dilanggar:
Dataset lokal IID
Diambil secara independen dari distribusi yang sama.
Daya komputasi homogen
Semua agen menyelesaikan pelatihan dalam waktu serupa.
Tidak ada agen adversarial
Semua agen melatih dan mengirim model dengan benar.
Distribusi dataset
Pada klasifikasi, “distribusi dataset” biasanya berarti distribusi kelas. Sampel acak 1.000 citra MNIST akan berisi jumlah per digit yang hampir sama (seragam); sampel berisi 910 citra digit 0 dan 10 citra untuk digit lain sangat miring. Secara umum, definisinya diperluas ke distribusi fitur, baik fitur rancangan manual maupun fitur yang diekstraksi model.
Ruang parameter model dengan n parameter adalah ruang Euclid n-dimensi. Selama pelatihan dan agregasi, titik model bergerak menuju optimum lokal fungsi loss, dan fungsi loss itu bergantung pada data.
- Kasus IID: optimum loss tiap agen berdekatan. Bila inisialisasinya sama, semua model menuju optimum yang sama dan laju konvergensinya menyamai satu model. Bila inisialisasinya berbeda, ronde pertama menghasilkan model awal yang buruk, tetapi setelah agregasi pertama semua mulai dari titik yang sama sehingga kembali ke kasus pertama.
- Kasus non-IID: misalkan agen 1 hanya punya digit 0–4 dan agen 2 hanya 5–9. Tugas lokalnya menjadi dua klasifikasi lima kelas yang berbeda total, optimumnya tidak lagi dibagi bersama, dan model “hanyut” (drift) ke arah berlawanan setiap fase lokal. Setiap agregasi lalu menarik model ke arah yang salah, membatalkan kemajuan lokal. Rata-rata optimum dari agen berbeda sangat mungkin tidak dekat dengan optimum mana pun.
Contoh MNIST itu ekstrem. Dalam praktik, non-IID berarti kemencengan dengan derajat bervariasi (misalnya dua kali lebih banyak digit 0–4 daripada 5–9). Semakin parah kemencengan, semakin buruk FedAvg, dan kinerjanya selalu di bawah pelatihan terpusat yang menjadi batas teoretis FL. Ubah skenario di bawah ini ke non-IID dan perhatikan jarak model global ke optimum sebenarnya:
Distribusi daya komputasi
Batas konvergensi biasanya dihitung dalam jumlah ronde, yang tidak bergantung pada daya komputasi. Di dunia nyata yang dihitung adalah waktu, dan waktu satu ronde ditentukan agen paling lambat yang ikut. Pada kasus homogen selisihnya kecil; pada kasus heterogen, satu straggler membuat agen cepat menganggur lama. Dua perbaikan naif sama-sama punya kelemahan:
- Subsampling agen per ronde mengurangi peluang straggler ikut, tetapi memburuk seiring bertambahnya agen lambat dan sampel kecil kehilangan manfaat robustnes agregasi banyak agen.
- Mengagregasi lebih awal setelah sejumlah model diterima menghapus straggler, tetapi agen paling lambat tak pernah ikut membentuk model global, mengurangi ragam data, dan kerja komputasinya sia-sia.
Melindungi dari agen adversarial
Tidak semua agen berperilaku benar. Tanpa niat jahat pun, bobot bisa rusak karena dataset cacat, implementasi pelatihan salah, atau korupsi saat transmisi, sehingga statistiknya setara noise acak. Bila norma L2 noise tidak jauh lebih besar dari model valid, kerugian FedAvg sebanding rasio agen rusak; tetapi satu agen dengan norma noise sangat besar dapat membuat model agregat hampir acak, karena sifat rata-rata aritmetika. Lebih buruk lagi, satu agen jahat yang cukup tahu dapat mengarahkan model agregat ke mana saja dengan memodifikasi parameternya secara besar; bahkan tanpa tahu model agen lain, ia bisa memakai model agregat ronde sebelumnya sebagai perkiraan. FedAvg menukar robustnes demi kesederhanaan.
7.3Memodifikasi agregasi untuk kasus tidak ideal
Menangani daya komputasi heterogen
Penyesuaian manual: tetapkan waktu latih lokal, bukan jumlah iterasi; setiap agen melakukan iterasi sebanyak yang sempat. Straggler hilang, tetapi bila waktu harus panjang demi agen lambat, agen cepat bisa melakukan terlalu banyak iterasi dan menyebabkan drift. Batas iterasi maksimum membantu, namun menemukan keseimbangan tanpa eksperimen sulit.
Penyesuaian otomatis: FedProx. Jumlah iterasi tetap diganti syarat henti γ-inexact: pelatihan berhenti ketika norma gradien kurang dari γ kali norma gradien di awal pelatihan lokal (0 < γ ≤ 1; makin kecil γ makin banyak iterasi). γ memparameterisasi daya komputasi agen. Agar model lokal tidak menyimpang jauh karena banyak iterasi, FedProx menambahkan suku proksimal ke fungsi objektif lokal.
Karena semua perubahan FedProx ada di sisi klien, implementasinya adalah modifikasi loop latih PyTorch biasa:
p.data, yang terlepas dari grafik autograd, sehingga suku itu menggeser nilai loss tetapi tidak ikut menghasilkan gradien. Bila Anda ingin penalti benar-benar memengaruhi pembaruan bobot, hitung dari parameter langsung, misalnya sum(((p - q.detach())**2).sum() for p, q in zip(model.parameters(), agg_model.parameters())), dan gunakan μ/2 sesuai rumus.Kompensasi adalah pendekatan pelengkap untuk heterogenitas ringan. Bila agregasi dimulai setelah ambang model terlampaui, kerja agen lambat biasanya terbuang. Dengan kompensasi, model agen lambat diikutkan pada ronde berikutnya dengan bobot rata-rata dikalikan suku penalti sesuai usianya, sehingga agen lambat bisa mendapat dua atau tiga kali waktu latih tanpa efek straggler. Penalti untuk model yang terlalu tua akan cukup besar sehingga praktis tak berpengaruh, mencegah model basi merusak konvergensi (lihat mode “Ambang + kompensasi” pada simulasi straggler).
Agen adversarial: estimator rata-rata robust
Inti masalahnya adalah rata-rata aritmetika yang tidak tahan pencilan. Jawabannya adalah kelas robust mean estimator, dengan trade-off antara robustnes, jarak dari rata-rata sebenarnya, dan efisiensi komputasi. Semua contoh memakai bentuk umum aggregate(parameter_vectors) → aggregated_parameter_vector.
Meminimalkan jumlah jarak
Titik yang meminimalkan jumlah jarak Euclid ke semua sampel (rata-rata meminimalkan jumlah jarak kuadrat). Titik sembarang baru bisa dipaksakan bila setidaknya separuh titik adversarial. Tidak bisa dihitung langsung; dipakai algoritma iteratif Weiszfeld.
Median di setiap dimensi
Langsung dihitung dan jauh lebih cepat. Intuisinya robust seperti median univariat, tetapi kemiripan teoretisnya dengan rata-rata (kinerja, konvergensi) belum jelas.
Buang pencilan dulu
Skor tiap titik = jumlah n − f − 2 jarak L2 terkecil ke titik lain; pilih titik berskor terendah, atau rata-ratakan titik berskor terendah. Untuk n cukup besar dan 2f + 2 < n, konvergensinya mirip FedAvg tanpa adversari.
Catatan: perhitungan jarak Krum di atas memakai loop karena vektor parameter diperkirakan besar sementara jumlah agen kecil. Pada Weiszfeld, bila tebakan awal tepat berimpit dengan satu titik, jarak nol menyebabkan pembagian nol; implementasi praktis biasanya menambahkan epsilon kecil pada dists.
Dataset non-IID
Tanpa batasan pada derajat non-IID, metode agregasi yang tak sadar dataset tidak punya jaminan konvergensi, karena model lokal terus hanyut ke optimum yang tidak dibagi bersama.
FedCurv memanfaatkan overparameterisasi deep learning: setiap tugas lokal mungkin bisa diselesaikan dengan subset parameter yang relatif terpisah. FedCurv memakai matriks informasi Fisher dari model agregat sebelumnya sebagai regulator agar pelatihan lokal tidak mengubah parameter yang penting bagi agen lain. Informasi Fisher adalah kovarians gradien log-likelihood terhadap parameter; FedCurv hanya memakai diagonalnya, yang dapat ditaksir sebagai kuadrat gradien yang sudah dihitung saat backpropagation. Robustnesnya untuk kasus non-IID ekstrem di aplikasi nyata masih perlu diuji lebih jauh.
Dua modifikasi diperlukan: suku regularisasi pada loss lokal memakai Fisher agregat ronde sebelumnya, serta perhitungan dan agregasi parameter Fisher untuk ronde berikutnya. Karena aggregator bekerja dengan representasi agnostik framework (dict NumPy), parameter sekunder ini bisa dibundel bersama model, diagregasi, lalu dipisahkan kembali.
param.data, sama seperti FedProx, sehingga tidak menghasilkan gradien. Selain itu, penjabaran penalti Σj Fj(θ − θj)² memberi suku tengah −2θ·v dengan v = Σ Fjθj, sedangkan kode cetak memakai tanda plus. Periksa kembali dengan kode di repositori sebelum memakainya untuk eksperimen.Berbagi data: bila larangan privasi dilonggarkan sehingga sebagian kecil data lokal boleh dibagikan, distribusi lokal menjadi lebih homogen sebanding jumlah data yang dibagikan. Namun ini mengorbankan sifat data stasioner yang membuat FL menarik, sehingga umumnya tidak cocok.
Personalisasi lewat fine-tuning: bila tujuannya model yang bagus di perangkat tempat ia dilatih, batasan “satu model” bisa dilepas. Setiap agen mempertahankan model lokal antar-ronde dan memperbaruinya dengan rata-rata berbobot model lokal sebelumnya dan model agregat yang diterima, menyeimbangkan kinerja lokal dengan robustnes global.
Agregasi sadar distribusi: bila distribusi lokal bisa dikelompokkan ke beberapa klaster, beberapa model agregat dapat dibuat. Algoritma PENS (Performance-Based Neighbor Selection) menguji model agen lain pada data sendiri di fase pertama, dengan asumsi model dari data serupa berkinerja lebih baik, lalu hanya mengagregasi dengan agen serupa di fase kedua. Cara lain adalah lapisan cluster model di antara model lokal dan model global: agen berdistribusi mirip ditempatkan ke cluster aggregator yang sama sehingga datanya praktis IID. Menyeimbangkan kinerja cluster model dengan robustnes agregasi global melahirkan model semi-global (Bab 3), yang menguntungkan baik bagi agregasi maupun sistem FL terdistribusi penuh.
| Kondisi tidak ideal | Metode | Diubah di | Catatan |
|---|---|---|---|
| Komputasi heterogen | Waktu tetap / iterasi adaptif | Klien | Perlu menyetel waktu & iterasi maksimum |
| Komputasi heterogen | FedProx (γ-inexact + proksimal) | Klien | Butuh optimasi berbasis gradien |
| Komputasi heterogen ringan | Kompensasi model basi | Server | Penalti sesuai usia model |
| Agen adversarial | Median geometrik, median koordinat, Krum | Server | Trade-off robustnes vs kecepatan |
| Non-IID | FedCurv | Klien + server | Fisher dikirim bersama model |
| Non-IID | Personalisasi, PENS, cluster/semi-global | Klien / topologi | Melepas syarat satu model global |
Framework FL yang sudah ada
Setelah membangun sistem dari nol, bab ini memperkenalkan framework dan platform FL yang siap pakai, lalu menerapkannya pada dua masalah mainan: analisis sentimen (NLP) dengan data IID dan klasifikasi citra dengan data non-IID. Tujuannya agar Anda bisa memilih platform sesuai kelebihan dan kekurangannya.
- Flower, TensorFlow Federated, OpenFL, IBM FL, STADLE, PySyft
- Model sentimen SST-2: BERT + kepala klasifikasi
- Integrasi FL untuk tiap framework
- Membuat CIFAR-10 non-IID dan dampaknya pada FedAvg
Kode lengkap: PacktPublishing/Federated-Learning-with-Python folder ch8. Semua contoh dijalankan penulis di Ubuntu 20.04 x64.
8.1Persyaratan teknis
| Kebutuhan | Pustaka / perintah |
|---|---|
| Contoh NLP | Python ≥ 3.8, NumPy, TensorFlow ≥ 2.9.1, tensorflow-hub, tensorflow-datasets, tensorflow-text (GPU disarankan) |
| Contoh CV non-IID | Python ≥ 3.8, NumPy, PyTorch ≥ 1.9, Torchvision ≥ 0.10.0 |
| TensorFlow Federated | pip install tensorflow_federated nest_asyncio |
| OpenFL | pip install openfl atau build dari github.com/intel/openfl |
| IBM FL | Klon github.com/IBM/federated-learning-lib, lalu pip install federated_learning_lib-*-py3-none-any.whl |
| Flower | pip install flwr |
| STADLE | pip install stadle-client |
ClientApp/ServerApp dan menandai sebagian fungsi lama seperti start_numpy_client sebagai usang. Selalu cocokkan dengan dokumentasi versi yang Anda pasang.8.2Pengenalan framework FL
Flower
Arsitektur client–server standar. Orkestrasi tingkat tinggi (pemilihan klien, agregasi parameter) diatur lewat strategy di server. Memakai Remote Procedure Call agar server memicu eksekusi di klien. Mudah diperluas untuk riset agregasi dan kompresi model.
TensorFlow Federated (TFF)
Lapisan Federated Core untuk komputasi federated umum dan lapisan Federated Learning di atasnya. Fokus pada simulasi FL di satu mesin dengan membungkus dataset, model, dan komputasi TensorFlow/Keras.
OpenFL
Dua alur kerja: aggregator-based (satu eksperimen dan rencana FL dikirim ke kolaborator, federasi berhenti setelah selesai) dan director-based (komponen berumur panjang menjalankan eksperimen sesuai permintaan). Perhatian khusus pada pengelolaan shard data, termasuk representasi data yang berbeda antar-silo.
IBM FL
Sejumlah party mengirim hasil latih bertahap ke aggregator. Mendukung banyak algoritma fusion (agregasi) dan teknik keadilan untuk melawan bias, sangat bisa diperluas, serta dasbor berbasis Jupyter Notebook.
STADLE
Platform FL dan distributed learning dari TieSet untuk aplikasi siap produksi dengan kode FL seminimal mungkin. Pelacakan kinerja, manajemen model, panel konfigurasi, dan hierarki dua tingkat yang memungkinkan banyak aggregator berjalan paralel.
PySyft
Komputasi atas data di mesin lain tanpa akses langsung ke data, lewat lapisan perantara yang mengirim permintaan komputasi ke worker. Memakai hook yang membungkus PyTorch/TensorFlow. Tidak diimplementasikan di buku karena kodenya sedang banyak berubah.
| Framework | Arsitektur | Kekuatan | Cocok untuk |
|---|---|---|---|
| Flower | Client–server, strategy, RPC | Agnostik framework ML, mudah diperluas | Riset algoritma, prototipe hingga penerapan |
| TFF | Komputasi federated di atas TF | Simulasi lokal yang fleksibel dari level rendah | Riset dengan model Keras/TF |
| OpenFL | Director–Envoy atau aggregator-based | Manajemen shard data cross-silo | Kolaborasi antarinstitusi jangka panjang |
| IBM FL | Aggregator–party, berbasis konfigurasi | Banyak algoritma fusion, teknik keadilan | FL enterprise |
| STADLE | SaaS, multi-aggregator | Integrasi minimal, dasbor dan manajemen model | Aplikasi produksi |
8.3Contoh: pelatihan federated model NLP
Tugasnya analisis sentimen ulasan film pada dataset SST-2 (label 0 = negatif, 1 = positif). Modelnya BERT pralatih yang dibekukan untuk mengubah kalimat menjadi vektor berdimensi tinggi, ditambah kepala klasifikasi kustom. Dengan BERT yang sudah belajar encoding umum, pelatihan cukup memfokuskan diri pada kepala klasifikasi (fine-tuning), menghemat waktu tanpa mengorbankan kinerja.
y_train = x_train[...], sehingga label klien terisi kalimat. Versi di atas sudah memotong x_train dan y_train dengan irisan yang sama.Mengadopsi pendekatan pelatihan FL
Dataset SST-2 dibagi menjadi tiga subset terpisah secara acak tanpa pengembalian (jadi IID). Alih-alih 3 epoch lokal, dijalankan 3 ronde FL dengan 1 epoch lokal per ronde dan agregasi FedAvg di akhir setiap ronde; model agregat terakhir lalu dievaluasi seperti baseline. Pilih framework:
TFF dibangun di atas TensorFlow/Keras sehingga integrasinya paling ringkas. Beberapa agen disimulasikan dengan memberikan beberapa dataset lokal. Learning rate optimizer server = 1,0 membuat model agregat baru menggantikan yang lama setiap ronde.
Memakai alur director-based. Agar serialisasi mudah, hanya bobot kepala klasifikasi yang diagregasi; model penuh dirakit ulang saat latih dan validasi (TF Hub menyimpan cache unduhan BERT). Dataset disiapkan lewat ShardDescriptor (memuat dan memecah data per rank) dan DataInterface (akses data).
IBM FL memakai model tersimpan (Keras SavedModel di sst_model_save_dir), subclass DataHandler untuk menyediakan data, dan dua file konfigurasi JSON. Aggregator memakai FlaskConnection dan fusion IterAvgFusionHandler; perc_quorum adalah persentase party yang harus ikut sebelum agregasi dimulai.
Dua komponen Flower: subclass client (antarmuka pertukaran parameter) dan subclass strategy (detail agregasi di server). NumPyClient cocok dengan get_weights/set_weights Keras yang mengembalikan list array NumPy.
STADLE menyediakan platform cloud (STADLE Ops) untuk menerapkan aggregator dan mengelola proses FL, sehingga yang perlu ditulis hanya sisi klien: file konfigurasi agen dan sedikit perubahan loop latih.
- Buat akun di stadle.ai, lalu Create New Project.
- Klik ikon plus di Initiate Aggregator, lalu buka halaman Dashboard.
- Salin nilai IP Address to Connect dan Port to Connect ke
aggr_ipdanreg_port. - Unggah base model:
stadle upload_model --config_path config_agent.json. - Jalankan
python fl_sim.py 1,2,3. Setelah tiga ronde, model agregat akhir tampil di dasbor dan dapat diunduh.
Kesimpulan untuk semua framework sama: dengan data IID, kinerja model agregat praktis setara pelatihan terpusat (sekitar 82%), sesuai analisis Bab 7.
8.4Contoh: klasifikasi citra pada data non-IID
Kini model VGG-16 dilatih pada subset CIFAR-10 yang sengaja dimiringkan. Kesepuluh kelas dibagi menjadi tiga kelompok, satu per klien. Untuk kelas pilihan klien diambil sel_count × 5000 citra, sedangkan kelas lain hanya def_count × 5000. Makin kecil def_count, makin parah non-IID-nya.
Perubahan kunci per framework
| Framework | Yang berubah dari contoh NLP |
|---|---|
| OpenFL | load_cifar_data() memuat dan memiringkan data sesuai rank; sample_shape = ["32","32"], target_shape = ["10"] di shard descriptor dan director; adapter pytorch_adapter.FrameworkAdapterPlugin; fungsi train/validate mengikuti versi PyTorch (SGD lr 0,001, momentum 0,9, weight decay 5e-4). |
| IBM FL | Simpan model dengan torch.save(vgg16(), 'saved_vgg_model.pt'); DataHandler memiringkan CIFAR-10; konfigurasi party memakai PytorchFLModel dengan optim.SGD dan nn.CrossEntropyLoss. |
| Flower | get_parameters/set_parameters berbasis state_dict PyTorch; grpc_max_message_length = 1024**3 (1 GB) di klien dan server karena VGG-16 besar; strategy menyimpan final_agg_vgg_model.pt. |
| STADLE | model_fn: "vgg16", model_fn_src: "torchvision.models", model_format: "PyTorch"; model dikirim setiap dua epoch lokal. |
Menguji berbagai tingkat bias berujung pada kesimpulan Bab 7: makin parah non-IID, makin lambat konvergensi dan makin rendah kinerja FedAvg. Penulis mengajak pembaca mencoba metode agregasi alternatif untuk kasus ini.
Studi kasus penerapan federated learning
FL sudah dicoba di banyak bidang. Kesehatan menjadi salah satu yang paling cocok karena kebutuhan AI penjaga privasi, disusul keuangan, edge computing, IoT, dan robotika. Bab ini meninjau kasus-kasus itu, lalu menutup dengan FL sebagai alat distributed learning untuk big data.
- Kesehatan: citra medis, penemuan obat, EHR
- Keuangan: anti pencucian uang (AML)
- Edge: deteksi objek, kendaraan otonom, robotika
- Internet of Intelligence, IoFT, Web 3.0
- FL untuk distributed learning pada big data
9.1Menerapkan FL di sektor kesehatan
Tantangan di bidang kesehatan
Hambatan utama adalah aksesibilitas data, yang punya beberapa komponen:
Regulasi privasi
Regulasi ini memang perlu. Tujuannya bekerja sejajar dengan regulasi, bukan mengakalinya, sambil tetap memanfaatkan kecerdasan dari data.
Kurangnya data nyata
Model AI butuh data besar, padahal regulasi membatasi penggunaannya. Industri kesehatan tertinggal dalam memanfaatkan AI.
Banyak tipe dari banyak tempat
Teks, video, citra, suara, tersimpan di banyak lokasi dengan format berbeda.
Citra medis
Data citra medis tumbuh eksponensial seiring perbaikan peralatan, sementara deep learning sudah terbukti di bidang ini. Jaringan saraf menerima piksel citra otak, lapisan tersembunyi memberi bobot dan aktivasi, dan lapisan keluaran memilih “tumor tipe 1” atau “tipe 2”. Masalahnya, satu repositori data biasanya kecil sehingga model sulit menggeneralisasi. Solusinya FL: alih-alih membawa data ke model, model dibawa ke data, dan yang kembali hanya kecerdasannya, disebut Intelligence from Data (IfD).
Contoh nyatanya mengikuti tantangan internasional segmentasi tumor otak dari MRI. Tiga rumah sakit (A, B, C) menyimpan citra anonim secara lokal dan masing-masing melatih model lokal. Parameter dikirim ke server, digabung menjadi model global, dikirim balik, dilatih lagi, dan diulang hingga konvergen. Hasilnya model yang berkinerja seolah semua data berasal dari satu lokasi.
Penemuan obat dan precision medicine
Precision medicine menyesuaikan layanan kesehatan dengan individu, alih-alih satu cara untuk semua, demi efektivitas obat dan hasil terapi kanker yang lebih baik. Bidangnya luas: onkologi, kebugaran, diagnostik, riset, dan pemantauan kesehatan. Ia membutuhkan data dunia nyata dalam jumlah besar, dan banyak solusi AI kesehatan gagal karena dibuat dari dataset kecil yang hanya mewakili sebagian pasien.
Membawa data ke model
Data dari banyak rumah sakit dikirim ke server pusat lalu dilatih. Mahal, mengancam keamanan data, dan menyulitkan kepatuhan regulasi.
Membawa model ke data
Model dilatih pada data lokal; hanya kecerdasan yang dikirim untuk agregasi. Transfer model efisien, data aman, ramah kepatuhan.
Akses federated ke data dunia nyata dapat mempercepat semua tahap riset klinis, termasuk rekrutmen uji klinis: menemukan pasien yang cocok dengan protokol lebih cepat, terutama untuk penyakit langka dan kanker, bahkan berpotensi memungkinkan semua peserta menerima obat sungguhan alih-alih plasebo.
Electronic Health Records (EHR)
EHR adalah kumpulan informasi kesehatan yang tersimpan digital dan dirancang untuk dibagikan antarpenyedia layanan. Menurut statistik HealthIT.gov, pada 2017 sebanyak 86% dokter praktik di AS sudah memakai EHR. Namun penyimpanan di Central Data Repository (CDR) membawa masalah: kebocoran, regulasi berat, biaya tinggi, dan yang tak kalah penting, masalah isolasi data: model yang dilatih pada data satu pusat sulit menggeneralisasi dibanding data dari banyak lokasi. Contoh riset: Two-stage federated phenotyping and patient representation learning memakai FL dan NLP. Tahap pertama mempelajari representasi pasien dari catatan medis beberapa rumah sakit tanpa berbagi data mentah; tahap kedua melatih model fenotipe spesifik secara federated memakai fitur dari representasi itu.
9.2Menerapkan FL di sektor keuangan
Di AS, lembaga keuangan menghabiskan miliaran dolar per tahun untuk kepatuhan anti pencucian uang, tetapi kurang dari 1% aktivitas pencucian yang berhasil digagalkan, dan biaya yang dikeluarkan diperkirakan sekitar 100 kali lebih besar dari yang berhasil dipulihkan. Hanya sebagian kecil transaksi yang ditangkap sistem AML, dan lebih sedikit lagi yang berakhir di suspicious activity report (SAR) sesuai Bank Secrecy Act 1970. Nilai informasi dari jaringan bank jauh lebih tinggi daripada informasi satu bank, karena terlihat bukan hanya asal uang tetapi juga ke mana uang itu pergi.
Anti-Money Laundering (AML)
Dua alternatif selain FL tidak layak: memusatkan data semua lembaga terhalang regulasi privasi nasabah, dan berbagi pengenal nasabah hanya mungkin dalam proses investigasi. Dengan FL, modelnya yang berpindah dari lembaga ke lembaga. Syaratnya: pelatihan di setiap lembaga tidak melanggar privasi, dan komunikasi pembaruan parameter ke server federated aman. Pendekatan baru diharapkan memungkinkan lembaga dan regulator saling belajar tanpa berbagi data sensitif, meningkatkan akurasi deteksi risiko dan mengurangi laporan risiko tak berdasar, serta memperbaiki kalkulasi risiko-imbalan saat memutuskan melayani pasar tertentu. Biaya penilaian risiko dan risiko reputasi telah membuat hubungan correspondent banking global turun 25%.
Dalam skenario yang diusulkan, sebuah bank bertindak sebagai hub mirip utilitas: membuat algoritma klasifikasi yang dilatih di data tiap lembaga peserta, menyusun model kunci yang mencerminkan wawasan semua peserta dan data pemerintah, lalu mendistribusikannya. Model mempelajari pola risiko lokal dan kembali ke bank, sementara data tetap di lembaga masing-masing.
Demo FL untuk AML
Peneliti TieSet menjalankan FL di atas STADLE dengan data transaksi sintetis dari simulator uang seluler PaySim. Modelnya regresi logistik dengan fitur waktu, jumlah, serta saldo lama dan baru akun asal dan tujuan.
transaksi: 8.213 fraud, sisanya sah, dibagi ke 10 agen lokal
precision dan F1, stabil di setiap ronde, dibanding agen yang dilatih sendiri hanya dengan data lokal
tersisa US$65,78 juta dari total US$1.241,77 juta transaksi fraud
Manfaat FL untuk sistem deteksi risiko: kumpulan data latih yang lebih besar, akurasi deteksi aktivitas ilegal yang lebih baik, cara bagi organisasi untuk berkolaborasi, kemampuan memasuki pasar baru, serta efisiensi operasional dan alokasi SDM yang lebih baik.
9.3FL bertemu edge computing
Dekade ini ditandai perluasan edge computing, IoT, dan konektivitas 5G (diperkirakan 1,3 miliar pelanggan 5G pada akhir 2023): data dan kecepatan transmisinya melonjak, regulasi privasi bertambah, dan otomasi meluas. Banyak perangkat IoT juga lemah keamanannya, sehingga kebutuhan solusi yang mengekstrak IfD akan terus tumbuh.
Contoh edge FL: deteksi objek
Tiga perangkat melatih model deteksi objek masing-masing: mikroserver edge EIS200 (NVIDIA Jetson, Ubuntu), Raspberry Pi (Raspberry Pi OS), dan PC biasa (Ubuntu). Ketiganya memakai label yang sama, yaitu ikan, daging, dan sayur, tetapi “sayur” di tiap perangkat hanya satu jenis: tomat, terong, atau daun bawang (leek). Datanya bias secara lokal.
Mewujudkan kendaraan otonom dengan FL
Kendaraan otonom butuh latensi rendah dan respons real time. Mobil modern sudah membawa perangkat edge berkomputasi kompleks; Advanced Driver Assistance Systems (ADAS) berjalan di dalam mobil. Model tetap dilatih di server mahal walau prediksinya di kendaraan, dan biayanya membengkak seiring data. Dengan FL, model diperbarui antara kendaraan dan server, sementara pola mengemudi dan stream kamera tetap di mobil, sesuai persetujuan pengguna dan regulasi daerah.
TieSet bersama mitranya menjalankan FL terdesentralisasi dengan banyak aggregator untuk ADAS yang memberi bantuan kemudi personal, terutama bagi pengemudi lanjut usia. Dengan computer vision dan reinforcement learning, sistem cepat menyadari situasi berbahaya dan mempelajari strategi mengemudi terbaik per pengemudi. Uji konsep dengan mobil sungguhan menunjukkan model RL dapat menghasilkan strategi kemudi yang disesuaikan, dan model agregat mampu menghadapi situasi berisiko di luar pengalaman pribadi pengemudi.
Menerapkan FL di robotika
ML di robotika menangani persepsi, perencanaan jalur, fusi sensor, dan menggenggam objek, tetapi pelatihannya bisa memakan minggu hingga bulan, dan data sering terbatas atau sulit diakses. TieSet mengembangkan kerangka federated crowdsourced global manipulation: lengan robot berbagi keterampilan manipulasi (menjangkau, pick-and-place, memegang, menggenggam) dengan mengirim model ke aggregator. Dalam simulasi, lima lengan robot dengan tugas berbeda (mengambil kotak, bola, bebek, dan boneka beruang) diagregasi terus-menerus secara asinkron; model federated akhirnya mampu menggenggam semua objek dengan tingkat keberhasilan sekitar 80%, lebih baik dan lebih cepat dilatih daripada robot yang dilatih sendiri-sendiri.
9.4Menuju Internet of Intelligence
Data diunggah ke cloud
Model dilatih di cloud untuk tujuan tertentu (pemeliharaan prediktif, prediksi teks) lalu dikirim ke edge. Masalahnya: butuh penyimpanan besar, latensi tinggi karena volume data, dan isu privasi karena data berpindah.
Internet of Federated Things
Gagasan peneliti University of Michigan yang menggabungkan IoT dan FL. Daya komputasi edge (chip AI, ponsel kuat) memindahkan pelatihan ke edge, dan jalur pengiriman data IoT dipakai untuk mengirim model. Aplikasinya: manufaktur terdistribusi, kendali persimpangan lalu lintas, manajemen energi.
Peran FL dalam Web 3.0
Kecerdasan dalam bentuk model ML bisa menjadi milik individu atau industri, tetapi juga bisa dianggap aset publik bila berkontribusi pada pembelajaran model untuk banyak orang. Dengan teknologi Web 3.0, kecerdasan dapat dikelola dan dikembangkan secara terdesentralisasi, sehingga makin banyak orang menikmati kecerdasan yang dilatih bersama.
9.5FL untuk distributed learning pada big data
Untuk big data, FL tidak selalu soal privasi karena datanya sudah dimiliki. Nilainya ada pada efisiensi: mempercepat pelatihan dan menekan biaya server, komputasi, dan penyimpanan raksasa. Kerangka seperti parameter server, ML di atas Hadoop/Spark, GraphLab, atau Pregel mendukung pelatihan paralel, tetapi tidak mudah menugaskan sumber data ke mesin berbeda untuk dilatih lokal, terutama bila tersebar di internet. Dengan FL cukup menyinkronkan federasi model, asalkan ada platform yang mengoordinasikan operasi berkelanjutan, repositori model, dan versioning.
- Sumber data besar dipecah (sharding) menjadi banyak sumber di mesin atau instans berbeda.
- Setiap mesin melatih lokal dalam kerangka FL.
- Model dari semua lingkungan diagregasi.
- Model agregat masuk MLOps untuk validasi kinerja dan ModelOps untuk pemantauan berkelanjutan.
- Opsional: wawasan dari sumber data lain digabung, membentuk model hibrida ML terpusat dan terdistribusi.
Tren dan perkembangan masa depan
Generasi teknologi berikutnya akan digerakkan oleh kecerdasan, bukan big data. Bab penutup merangkum keterbatasan ML terpusat, manfaat FL, ragam tipe FL, kerangka lanjutan seperti split learning dan swarm learning, hingga visi collective intelligence dan Internet of Intelligence.
- Keterbatasan ML terpusat dan manfaat FL
- Horizontal/vertical, terpusat/terdesentralisasi, cross-silo/cross-device
- Split learning, SplitFed, swarm learning, BAFFLE
- Collective intelligence dan crowdsourced learning
10.1Melihat tren AI masa depan
Keterbatasan ML terpusat
Banyak perusahaan kesulitan mengekstrak wawasan dari data yang mereka miliki; lebih dari separuh data yang dikumpulkan biasanya tak terpakai. Pendekatan tradisional mengharuskan data diorganisasi dan dikonsolidasikan ke data lake sebelum analisis, artinya data diduplikasi dan dipindah, menunda nilai kecerdasan dan menambah risiko operasional. Selain itu, sebagian besar data perusahaan akan dibuat dan diproses di luar pusat data atau cloud tradisional. FL membawa model ke tempat data dilatih, bukan sebaliknya, sehingga disebut masa depan ilmu data dan ML.
Meninjau ulang manfaat FL
Akurasi & generalisasi
Pembelajaran kolaboratif pada dataset tersebar yang terus dimasukkan ke model global menghasilkan model lebih akurat dan umum.
Privasi & keamanan
Tidak membutuhkan data mentah, mengurangi risiko penyalahgunaan dan kebocoran; sejalan dengan GDPR, CCPA, dan HIPAA.
Kecepatan & efisiensi
Penerapan dan pengujian lebih cepat, latensi rendah, prediksi hampir real time; bandwidth, energi, serta biaya penyimpanan dan transfer turun.
Menuju distributed learning
Seperti era superkomputer yang beralih dari satu mesin pusat ke lingkungan terdistribusi, AI pun sedang bergerak dari data lake terpusat ke kerangka belajar terdistribusi. Beberapa platform yang memakai FL sebagai teknik distributed learning: Devron, FedML, dan STADLE.
10.2Riset dan pengembangan FL yang sedang berjalan
Berbagai tipe dan pendekatan FL
| Dimensi | Pilihan A | Pilihan B |
|---|---|---|
| Ruang fitur | Horizontal (homogeneous, sample-based): kolom sama, baris berbeda. Sebagian besar proyek FL; prosesnya lugas. | Vertical (heterogeneous, feature-based): ID sampel sama, fitur berbeda. Sulit bila ID unik antarbasis data berbeda. |
| Topologi | Terpusat: server pusat mengumpulkan dan mengagregasi. Paling umum, dipakai sepanjang buku. | Terdesentralisasi: model dipertukarkan antarnode tanpa master. Rawan peracunan bila pihak tak tepercaya bisa mengakses. |
| Skala klien | Cross-silo: sedikit silo besar melintasi batas fungsi, organisasi, atau regulasi; komputasi seperti VM cloud. | Cross-device: sangat banyak perangkat edge (ponsel, IoT, Raspberry Pi) berdaya rendah; harus menangani perangkat tak aktif; beban dan data latih dibatasi. |
Kerangka distributed learning yang diperkaya FL
Split learning
Jaringan saraf dipartisi menjadi beberapa bagian yang dilatih di klien berbeda; bobot tiap bagian diteruskan ke server dan klien berikutnya. Data tetap tidak dibagikan, hanya bobot bagian jaringan.
SplitFed
Memecah DNN antara klien FL dan server untuk privasi yang lebih tinggi daripada FL biasa, dengan efisiensi lebih baik daripada split learning berkat pelatihan paralel ala FL.
Swarm learning
Node berbagi parameter model; penggabungan dilakukan pemimpin sementara yang dipilih antar-node, bukan server pusat. Benar-benar terdesentralisasi, tahan gangguan, dan memungkinkan peserta memonetisasi kontribusi lewat kerangka kripto yang anti-rusak.
BAFFLE
Blockchain-based Aggregator Free Federated Learning: smart contract mengatur manajemen ronde, agregasi, dan pembaruan model. Model global dipecah menjadi banyak potongan (chunk) yang ditangani langsung oleh smart contract, meningkatkan kinerja komputasi.
10.3Perjalanan menuju collective intelligence
Era yang berpusat pada kecerdasan
Collective intelligence (CI) adalah fenomena ketika sekelompok besar entitas tunggal bertindak bersama dengan cara yang tampak cerdas, menghasilkan wawasan yang tak dapat dipahami anggotanya secara individual. Thomas Malone, kepala MIT Center for Collective Intelligence yang mencetuskan istilah ini, memperluas definisinya: CI dapat muncul dari kelompok yang berisi manusia dan komputer.
FL mendorong CI karena hakikatnya adalah mengumpulkan kecerdasan terdistribusi lalu menguatkannya lewat agregasi, sebuah platform “tanpa data” yang tidak perlu mengumpulkan data dari orang atau perangkat. Penulis mengakui bahwa mempelajari big data tetap penting, dan industri big data masih paling makmur meski menghadapi regulasi, keamanan, dan silo. Gelombang berikutnya adalah platform yang berpusat pada kecerdasan atau model, tempat orang berbagi dan meningkatkan kecerdasan yang mereka hasilkan sendiri.
Internet of Intelligence
IoT berkembang menjadi Internet of Everything, tetapi yang sebenarnya dicari orang adalah kecerdasan yang diturunkan dari data. 5G mempercepat transfer, dan FL mengirim lebih sedikit informasi daripada data mentah meski tetap memindahkan model. Ke depan, informasi tentang kecerdasan akan menjadi entitas yang sering dipertukarkan di web, dengan repositori model seperti Model Zoo di mana-mana.
Crowdsourced learning dengan FL
Model unggulan di computer vision dan NLP saat ini dilatih perusahaan big data dengan biaya hingga ratusan juta dolar. Dengan FL, model yang bermanfaat luas bisa dilatih bersama: pengguna platform CI mengunduh model yang diminati, melatihnya ulang di lingkungan sendiri dengan data yang hanya mereka miliki, lalu membagikan model hasil latih. Kerangka agregasi lanjutan memilih model yang tepat untuk difederasikan sehingga model global makin baik. Ini berbeda dari crowdsourcing tradisional yang terbatas pada perekrutan anotator data. Hasilnya, kecerdasan ML tersedia bagi banyak individu, bukan hanya perusahaan dengan data dan anggaran besar.
Menjelajahi pustaka internal simple-fl
Bab 4 dan 5 memakai fungsi pustaka internal agar penjelasan server dan klien tetap ringkas. Lampiran ini membuka isinya: kelas enumerasi, penangan komunikasi WebSocket, struktur data LimitedDict, fungsi helper, dan pembuat payload pesan. Semuanya ada di fl_main/lib/util.
states.py: status klien, tipe model & pesan, posisi fieldcommunication_handler.py: server & kirim/terimadata_struc.py:LimitedDicthelpers.pydanmessengers.py
A.1Ikhtisar pustaka internal
| File | Peran | Dipakai oleh |
|---|---|---|
states.py | Kelas enumerasi: status klien FL, tipe model dan pesan, indeks field di setiap pesan. | DB, aggregator, agen |
communication_handler.py | Fungsi kirim/terima dan pemula server untuk database, aggregator, dan agen. | DB, aggregator, agen |
data_struc.py | LimitedDict dan konversinya ke dict biasa untuk buffer model. | Aggregator |
helpers.py | Baca konfigurasi, ID hash unik, pengemasan model, simpan/muat model, IP mesin, status klien. | Semua |
messengers.py | Pembuat payload pesan protokol antar-komponen. | Aggregator, agen |
A.2Kelas enumerasi untuk sistem FL
Setiap pesan adalah list Python; kelas *MSGLocation berfungsi seperti “skema” yang memberi tahu di indeks mana suatu field berada, sehingga kode seperti msg[int(ModelUpMSGLocation.lmodels)] mudah dibaca. Telusuri setiap jenis pesan:
Catatan kecil: pada kode cetak, komentar indeks untuk agent_name tertulis 9 dua kali, padahal posisinya di list adalah 10 sesuai ParticipateMSGLocation. Field round (indeks 11) didefinisikan tetapi tidak diisi oleh pembuat pesan partisipasi.
A.3Fungsi penangan komunikasi
Komunikasi memakai pustaka websockets dengan pesan yang di-pickle. SSL/TLS tidak diimplementasikan demi kesederhanaan, tetapi dianjurkan. Protokol lain seperti HTTP juga bisa dipakai.
max_size=None dan max_queue=None penting karena model bisa berukuran besar. send() membuka koneksi baru untuk setiap pesan dan menelan error secara diam-diam, praktis untuk pembelajaran tetapi menyulitkan debugging; pada sistem nyata sebaiknya error dicatat.
A.4Kelas penangan struktur data
Contoh: buf = LimitedDict(['model1','model2']) menghasilkan {'model1': [], 'model2': []}. Setiap model lokal yang tiba menambahkan satu array ke list lapisannya, sehingga panjang list = jumlah model terkumpul, persis yang dihitung ready_for_local_aggregation(). Untuk cluster model, list hanya berisi satu elemen yang diganti hasil agregasi.
A.5Pustaka helper dan pendukung
| Fungsi | Kegunaan |
|---|---|
set_config_file(config_type) | Path setups/config_{db|aggregator|agent}.json dari direktori kerja. |
read_config(path) | Membaca JSON konfigurasi menjadi dict. |
generate_id() | ID unik sistem: SHA-256 dari alamat MAC + waktu instansiasi. |
generate_model_id(type, id, time) | ID model: SHA-256 dari prefiks komponen + ID pembuat + waktu pembuatan. |
create_data_dict_from_models(model_id, models, component_id) | Mengemas model ke dict dengan models, model_id, my_id, gene_time. |
create_meta_data_dict(perf_val, num_samples) | Metadata {'accuracy', 'num_samples'}. |
compatible_data_dict_read(data_dict) | Mengekstrak ID, waktu, model, dan model ID; mengisi default bila kunci tidak ada. |
save_model_file / load_model_file | Simpan/muat dict model (dengan kunci performance) sebagai pickle. |
read_state / write_state | Baca/tulis angka ClientState di file status; bila file sedang ditulis (kosong), coba lagi setelah 0,01 detik. |
get_ip() | IP mesin dengan trik soket UDP ke 1.1.1.1; jatuh ke 127.0.0.1 bila gagal. |
init_loop(func) | Menjalankan coroutine di event loop baru selamanya (dipakai thread pertukaran model). |
read_state() mengatasinya sebagian dengan mencoba ulang bila file kosong. Pada sistem produksi, pertimbangkan mekanisme sinkronisasi di memori (lock atau antrean) atau penulisan file secara atomik.A.6Messenger untuk membuat payload komunikasi
| Fungsi | Arah | Tipe pesan | Isi (urutan) |
|---|---|---|---|
generate_db_push_message | Aggregator → DB | DBMsgType.push | component_id, round, model_type, models, model_id, gene_time, performance_dict |
generate_lmodel_update_message | Agen → aggregator | AgentMsgType.update | agent_id, model_id, local_models, time.time(), performance_dict |
generate_cluster_model_dist_message | Aggregator → agen | AggMsgType.update | aggregator_id, model_id, round, models |
generate_agent_participation_message | Agen → aggregator | AgentMsgType.participate | agent_id, model_id, models, init_weights_flag, simulation_flag, exch_socket, gene_time, meta_dict, agent_ip, agent_name |
generate_agent_participation_confirm_message | Aggregator → agen | AggMsgType.welcome | aggregator_id, model_id, models, round, agent_id, exch_socket, recv_socket |
generate_polling_message | Agen → aggregator | AgentMsgType.polling | round, agent_id |
generate_ack_message | Aggregator → agen | AggMsgType.ack | (hanya tipe pesan) |