Przegląd
TFF to rozszerzalna, potężna platforma do prowadzenia badań nad uczeniem się stowarzyszonym (FL) poprzez symulowanie obliczeń stowarzyszonych na realistycznych zbiorach danych zastępczych. Na tej stronie opisano główne koncepcje i komponenty istotne dla symulacji badawczych, a także szczegółowe wytyczne dotyczące prowadzenia różnych rodzajów badań w TFF.
Typowa struktura kodu badawczego w TFF
Symulacja badania FL realizowana w TFF zazwyczaj składa się z trzech głównych typów logiki.
Poszczególne fragmenty kodu TensorFlow, zazwyczaj
tf.function
s, które hermetyzują logikę działającą w jednym miejscu (np. na klientach lub na serwerze). Ten kod jest zazwyczaj pisany i testowany bez żadnychtff.*
i może być ponownie użyty poza TFF. Na tym poziomie zaimplementowana jest na przykład pętla szkoleniowa klienta w Federated Averaging .TensorFlow Logika stowarzyszonej orkiestracji, która łączy poszczególne
tf.function
z 1. poprzez opakowanie ich jakotff.tensorflow.computation
s, a następnie orkiestrowanie przy użyciu abstrakcji, takich jaktff.federated_broadcast
itff.federated_mean
wewnątrztff.federated_computation
. Zobacz na przykład tę aranżację dla Federated Averaging .Zewnętrzny skrypt sterownika, który symuluje logikę sterowania produkcyjnego systemu FL, wybiera symulowanych klientów ze zbioru danych, a następnie wykonuje na tych klientach obliczenia stowarzyszone zdefiniowane w punkcie 2. Na przykład sterownik eksperymentalny Federated EMNIST .
Sfederowane zbiory danych do uczenia się
Stowarzyszone TensorFlow hostuje wiele zestawów danych , które są reprezentatywne dla charakterystyki rzeczywistych problemów, które można rozwiązać za pomocą stowarzyszonego uczenia się.
Zbiory danych obejmują:
Przepełnienie stosu . Realistyczny zbiór danych tekstowych do modelowania języka lub zadań uczenia się pod nadzorem, obejmujący 342 477 unikalnych użytkowników i 135 818 730 przykładów (zdań) w zestawie szkoleniowym.
Sfederowany EMNIST . Stowarzyszone przetwarzanie wstępne zbioru danych znaków i cyfr EMNIST, gdzie każdy klient odpowiada innemu zapisowi. Pełny zestaw zawiera 3400 użytkowników z 671 585 przykładami z 62 etykiet.
Szekspir . Mniejszy zbiór danych tekstowych na poziomie znaków, oparty na wszystkich dziełach Williama Szekspira. Zbiór danych składa się z 715 użytkowników (postaci sztuk Szekspira), przy czym każdy przykład odpowiada ciągłemu zestawowi wersów wypowiedzianych przez postać w danej sztuce.
CIFAR-100 . Stowarzyszony podział zbioru danych CIFAR-100 na 500 klientów szkoleniowych i 100 klientów testowych. Każdy klient ma 100 unikalnych przykładów. Podział odbywa się w sposób zapewniający bardziej realistyczną heterogeniczność pomiędzy klientami. Więcej szczegółów znajdziesz w API .
Zbiór danych Google Landmark v2 Zbiór danych składa się ze zdjęć różnych punktów orientacyjnych świata oraz zdjęć pogrupowanych według fotografów w celu uzyskania stowarzyszonego podziału danych. Dostępne są dwie wersje zbioru danych: mniejszy zbiór danych z 233 klientami i 23080 obrazami oraz większy zbiór danych z 1262 klientami i 164172 obrazami.
CelebA Zbiór danych zawierający przykłady (wizerunek i cechy twarzy) twarzy gwiazd. W stowarzyszonym zbiorze danych przykłady każdej gwiazdy są pogrupowane w celu utworzenia klienta. Istnieje 9343 klientów, każdy z co najmniej 5 przykładami. Zbiór danych można podzielić na grupy pociągowe i testowe według klientów lub przykładów.
iNaturalist Zbiór danych składa się ze zdjęć różnych gatunków. Zbiór danych zawiera 120 300 zdjęć dla 1203 gatunków. Dostępnych jest siedem odmian zbioru danych. Jedna z nich jest pogrupowana według fotografa i liczy 9257 klientów. Pozostałe zbiory danych są pogrupowane według lokalizacji geograficznej, w której zdjęcie zostało zrobione. Te sześć odmian zbioru danych obejmuje 11–3606 klientów.
Symulacje o wysokiej wydajności
Chociaż czas zegara ściennego symulacji FL nie jest odpowiednią miarą do oceny algorytmów (ponieważ sprzęt symulacyjny nie jest reprezentatywny dla rzeczywistych środowisk wdrażania FL), możliwość szybkiego przeprowadzenia symulacji FL ma kluczowe znaczenie dla produktywności badań. Dlatego też TFF poczyniło znaczne inwestycje w zapewnianie wysokowydajnych środowisk wykonawczych dla jednej i wielu maszyn. Dokumentacja jest w opracowaniu, ale na razie zapoznaj się z instrukcją dotyczącą symulacji TFF z akceleratorami oraz instrukcją konfiguracji symulacji z TFF na GCP . Środowisko wykonawcze TFF o wysokiej wydajności jest domyślnie włączone.
TFF dla różnych obszarów badawczych
Stowarzyszone algorytmy optymalizacyjne
Badania nad stowarzyszonymi algorytmami optymalizacji można przeprowadzić w TFF na różne sposoby, w zależności od pożądanego poziomu dostosowania.
Tutaj przedstawiono minimalną samodzielną implementację algorytmu Federated Averaging . Kod zawiera funkcje TF do obliczeń lokalnych, obliczenia TFF do orkiestracji i jako przykład skrypt sterownika w zestawie danych EMNIST. Pliki te można łatwo dostosować do niestandardowych aplikacji i zmian algorytmicznych, postępując zgodnie ze szczegółowymi instrukcjami zawartymi w pliku README .
Bardziej ogólną implementację Federated Averaging można znaleźć tutaj . Ta implementacja pozwala na bardziej wyrafinowane techniki optymalizacji, w tym użycie różnych optymalizatorów zarówno na serwerze, jak i na kliencie. Inne stowarzyszone algorytmy uczenia się, w tym stowarzyszone grupowanie k-średnich, można znaleźć tutaj .
Kompresja aktualizacji modelu
Kompresja stratna aktualizacji modelu może prowadzić do zmniejszenia kosztów komunikacji, co z kolei może prowadzić do skrócenia całkowitego czasu szkolenia.
Aby odtworzyć najnowszy artykuł , zobacz ten projekt badawczy . Aby zaimplementować niestandardowy algorytm kompresji, zobacz na przykład metodę porównawczą w projekcie, aby zapoznać się z wartościami bazowymi, oraz samouczek dotyczący agregatorów TFF, jeśli jeszcze go nie znasz.
Różnicowa prywatność
TFF współpracuje z biblioteką TensorFlow Privacy, aby umożliwić badania nad nowymi algorytmami na potrzeby federacyjnego uczenia modeli z różnicową prywatnością. Przykład szkolenia z DP przy użyciu podstawowego algorytmu i rozszerzeń DP-FedAvg można znaleźć w tym sterowniku eksperymentu .
Jeśli chcesz zaimplementować niestandardowy algorytm DP i zastosować go do zagregowanych aktualizacji uśredniania stowarzyszonego, możesz zaimplementować nowy algorytm średniej DP jako podklasę tensorflow_privacy.DPQuery
i utworzyć tff.aggregators.DifferentiallyPrivateFactory
z instancją zapytania. Przykład implementacji algorytmu DP-FTRL można znaleźć tutaj
Stowarzyszone sieci GAN (opisane poniżej ) to kolejny przykład projektu TFF wdrażającego zróżnicowaną prywatność na poziomie użytkownika (np. tutaj w kodzie ).
Wytrzymałość i ataki
TFF można również wykorzystać do symulacji ukierunkowanych ataków na stowarzyszone systemy uczenia się i zróżnicowanych zabezpieczeń opartych na prywatności, o których mowa w artykule Czy naprawdę możesz backdoor Federated Learning? . Odbywa się to poprzez budowanie procesu iteracyjnego z potencjalnie złośliwymi klientami (patrz build_federated_averaging_process_attacked
). Katalog Target_attack zawiera więcej szczegółów.
- Nowe algorytmy ataku można zaimplementować, pisząc funkcję aktualizacji klienta, która jest funkcją Tensorflow, zobacz przykład
ClientProjectBoost
. - Nowe zabezpieczenia można wdrożyć, dostosowując plik „tff.utils.StatefulAggregateFn” , który agreguje dane wyjściowe klienta w celu uzyskania globalnej aktualizacji.
Przykładowy skrypt do symulacji można znaleźć w emnist_with_targeted_attack.py
.
Generacyjne sieci przeciwstawne
Sieci GAN tworzą interesujący wzorzec stowarzyszonej orkiestracji , który wygląda nieco inaczej niż standardowe stowarzyszone uśrednianie. Obejmują dwie odrębne sieci (generator i dyskryminator), z których każda jest trenowana za pomocą własnego etapu optymalizacji.
TFF można wykorzystać do badań nad stowarzyszonym szkoleniem sieci GAN. Przykładowo zaprezentowany w ostatniej pracy algorytm DP-FedAvg-GAN jest zaimplementowany w TFF . Ta praca pokazuje skuteczność łączenia uczenia się stowarzyszonego, modeli generatywnych i prywatności różnicowej .
Personalizacja
Personalizacja w kontekście uczenia się stowarzyszonego jest aktywnym obszarem badań. Celem personalizacji jest zapewnienie różnych modeli wnioskowania różnym użytkownikom. Istnieją potencjalnie różne podejścia do tego problemu.
Jedno z podejść polega na umożliwieniu każdemu klientowi dostrojenia pojedynczego modelu globalnego (wyszkolonego przy użyciu uczenia stowarzyszonego) z jego danymi lokalnymi. Podejście to ma powiązania z metauczeniem się, patrz np. ten artykuł . Przykład takiego podejścia podano w emnist_p13n_main.py
. Aby poznać i porównać różne strategie personalizacji, możesz:
Zdefiniuj strategię personalizacji, wdrażając
tf.function
, która rozpoczyna się od modelu początkowego, szkoli i ocenia spersonalizowany model przy użyciu lokalnych zbiorów danych każdego klienta. Przykład podajebuild_personalize_fn
.Zdefiniuj
OrderedDict
, który odwzorowuje nazwy strategii na odpowiednie strategie personalizacji i użyj go jako argumentupersonalize_fn_dict
wtff.learning.build_personalization_eval_computation
.
Innym podejściem jest unikanie uczenia w pełni globalnego modelu poprzez trenowanie części modelu całkowicie lokalnie. Przykład takiego podejścia opisano w tym poście na blogu . To podejście jest również powiązane z metauczeniem się, zobacz ten artykuł . Aby poznać częściowo lokalne stowarzyszone nauczanie, możesz:
Zapoznaj się z samouczkiem , aby zapoznać się z pełnym przykładem kodu stosującym rekonstrukcję stowarzyszoną i ćwiczeniami uzupełniającymi .
Utwórz częściowo lokalny proces szkoleniowy za pomocą
tff.learning.reconstruction.build_training_process
, modyfikującdataset_split_fn
, aby dostosować zachowanie procesu.