Serwer Federated Compute (FC) jest częścią sfederowanego uczenia się oferowanego przez personalizację na urządzeniu (ODP). Celem tego dokumentu jest przedstawienie serwera Federated Compute Server (FC Server), jego komponentów i używanej technologii. Dokument zawiera ogólne omówienie architektury, a następnie szczegółowe informacje o poszczególnych komponentach. Opisuje też, jak poszczególne komponenty współpracują ze sobą, aby zapewnić środowisko sfederowanego uczenia się, oraz przedstawia strategie skalowania i dzielenia obciążeń.
Proces trenowania
Trenowanie polega na przepływie danych między klientem FC a serwerem FC. Klient FC to podstawowy moduł Androida, który trenuje modele ML na urządzeniu i współpracuje z serwerem FC. Serwer FC przetwarza i agreguje wyniki z klienta FC w bezpieczny sposób w zaufanym środowisku wykonawczym (TEE).
Trenowanie obejmuje te etapy:
- Klient FC na urządzeniu pobiera publiczny klucz szyfrowania z usług kluczy.
- Klient FC kontaktuje się z serwerem FC i otrzymuje zadanie szkoleniowe.
- Klient FC pobiera plan treningowy oraz najnowszą wersję modelu, czyli wersję N.
- Klient FC trenuje na podstawie danych lokalnych i planu.
- Klient FC szyfruje dane pochodzące z tego urządzenia za pomocą klucza publicznego uzyskanego w kroku 0 i przesyła je na serwer FC.
- Klient FC powiadamia serwer FC o zakończeniu szkolenia.
- Serwer FC czeka, aż wystarczająca liczba klientów prześle swoje dane.
- Rozpoczyna się runda agregacji.
- Zaszyfrowane dane są wczytywane do zaufanego środowiska wykonawczego (TEE) przez agregatora.
- Agregator potwierdza swoją tożsamość koordynatorom zgodnie z architekturą RFC 9334 Remote ATtestation procedureS (RATS) opracowaną przez NIST. Po pomyślnym potwierdzeniu usługa Key Services przyznaje mu klucze odszyfrowywania. Te klucze mogą być podzielone między wielu dostawców kluczy w ramach schematu udostępniania sekretów Shamira.
- Agregator przeprowadza agregację na różnych urządzeniach, przycina i dodaje szum do danych zgodnie z odpowiednimi mechanizmami prywatności różnicowej (DP) i przesyła wyniki z dodatkiem szumu.
- Pośrednik uruchamia aktualizator modelu.
- Aktualizator modeli wczytuje zagregowany wkład i stosuje go do wersji modelu N, aby utworzyć wersję modelu N+1. Nowy model jest przesyłany do pamięci modeli.
Serwer FC można wdrożyć w dowolnej usłudze w chmurze, która obsługuje środowiska TEE i powiązane funkcje zabezpieczeń. Oceniamy dostawców chmury publicznej i technologie bazowe, ale na razie w tej sekcji przedstawiamy przykładowe wdrożenie w Google Cloud z użyciem Confidential Space.
Architektura wysokiego poziomu
Serwer FC ma wdrożone w Google Cloud te komponenty:
| Komponent | Opis |
| Usługa zarządzania zadaniami | Usługa internetowa do zarządzania zadaniem trenowania. Partnerzy powinni używać interfejsu Task Management API do tworzenia zadań szkoleniowych, wyświetlania listy wszystkich istniejących zadań szkoleniowych, anulowania zadania i pobierania wszystkich stanów szkolenia. |
| Usługa przypisywania zadań | Usługa internetowa oparta na protokole HTTPS, w której urządzenia klienckie okresowo sprawdzają, czy są dostępne zadania szkoleniowe, i zgłaszają stan szkolenia. |
| Właściciel witryny | Usługa działająca w tle w Poufnej przestrzeni. Uruchamia zadania utworzone przez ODP. Musi potwierdzać to koordynatorom, którzy chronią dostęp do kluczy odszyfrowywania. Tylko zweryfikowani pośrednicy mogą odszyfrowywać dane przesłane przez urządzenia klienckie i przeprowadzać agregację na różnych urządzeniach. |
| Aktualizator modelu | Usługa działająca w tle w Poufnej przestrzeni, która stosuje zagregowane gradienty do modelu. |
Szczegóły komponentu
W kolejnych sekcjach znajdziesz bardziej szczegółowe informacje o architekturze:
Usługa zarządzania zadaniami
Usługa zarządzania zadaniami zawiera 2 podzespoły: internetową usługę zarządzania zadaniami i usługę harmonogramowania zadań. Oba są wdrażane w GKE.
Zarządzanie zadaniami
Jest to zestaw usług internetowych frontendu, które przyjmują żądania HTTPS i tworzą zadania w bazie danych zadań lub pobierają z niej zadania.
Harmonogram zadań
Usługa działająca w tle, która stale skanuje bazę danych zadań. Zarządza procesem trenowania, np. tworzy nowe rundy i iteracje trenowania.
Baza danych zadań
Baza danych zgodna z ANSI SQL, która przechowuje informacje o zadaniach, iteracjach i przypisaniach. W tej implementacji jako podstawowa usługa bazy danych jest używana Google Cloud Spanner.
Usługa przypisywania zadań
Usługa przypisywania zadań to internetowa usługa frontendowa hostowana w GKE. Odbiera żądania od klientów FC i w odpowiednich przypadkach rozdziela zadania szkoleniowe.
Baza danych zadań jest tutaj tą samą instancją bazy danych co baza danych zadań w usłudze zarządzania zadaniami.
Usługa agregacji
Agregator i aktualizator modeli
Agregator i aktualizator modelu są podobne. Są to usługi działające w tle, które bezpiecznie przetwarzają dane w przestrzeni poufnej. Komunikacja między zadaniami offline odbywa się za pomocą PubSub.
Gradienty, zagregowane gradienty, model i plan
- Miejsce na dane gradientów przesłanych (zaszyfrowanych) z urządzenia klienta.
- Zagregowany magazyn gradientów na potrzeby zagregowanych, przyciętych i zaszumionych gradientów.
- Model i miejsce na dane do przechowywania planów treningowych, modeli i wag.
Kolektor
Kolektor to usługa działająca w tle, która okresowo zlicza przesłane przez urządzenia klientów dane podczas rundy trenowania. Powiadamia on agregatora o rozpoczęciu agregacji, gdy dostępna jest wystarczająca liczba przesłanych danych.
Hosty usług
Wszystkie usługi, które nie mają dostępu do informacji poufnych, są hostowane w GKE.
Wszystkie usługi, które mogą mieć dostęp do informacji poufnych, są hostowane w przestrzeni poufnej.
Wszystkie dane wrażliwe są szyfrowane za pomocą kluczy szyfrowania zarządzanych przez usługi kluczy należące do wielu podmiotów. Tylko pomyślnie potwierdzony kod open source napisany przez ODP, który działa w prawidłowych wersjach Confidential Space z włączonym Confidential Computing, może uzyskać dostęp do kluczy odszyfrowywania.
W jednej jednostce usługi zasób obliczeniowy wygląda tak:
Skalowalność
Opisana wcześniej infrastruktura koncentruje się na jednej jednostce usługi.
Jednostka usługi korzysta z 1 instancji Cloud Spanner. Więcej informacji o istotnych ograniczeniach znajdziesz w sekcji Limity przydziału i limity systemu Spanner.
Każdy komponent tej architektury można skalować niezależnie. W tym celu skaluj pojemność w przestrzeni poufnej lub w klastrze GKE za pomocą standardowych mechanizmów skalowania. Moc obliczeniową można zwiększyć, dodając więcej instancji:
- Usługa sieciowa przypisywania zadań
- Usługa sieciowa zarządzania zadaniami
- Instancje agregatora
- Instancje aktualizatora modeli
Odporność
Odporność serwera FC jest zapewniana przez odtwarzanie po awarii przy użyciu replikowanej pamięci. Jeśli interesuje Cię odtwarzanie awaryjne, włącz replikację danych między regionami. Dzięki temu w przypadku katastrofy (np. zdarzenia pogodowego, które spowoduje przerwę w działaniu centrum danych) usługa zostanie wznowiona od ostatniej rundy trenowania.
Spanner
Domyślna implementacja serwera FC korzysta z usługi Google Cloud Spanner jako bazy danych do przechowywania stanu zadań, który jest używany do sterowania procesem trenowania. Zanim wybierzesz konfigurację obejmującą wiele regionów, oceń kompromisy między spójnością a dostępnością pod kątem potrzeb biznesowych.
W żadnej instancji Spanner nie są przechowywane dane użytkownika ani ich pochodne, ani w formie nieprzetworzonej, ani zaszyfrowanej. Możesz korzystać z dowolnych funkcji odtwarzania awaryjnego oferowanych przez Spannera.
Spanner rejestruje historię zmian. Agregator i aktualizator modelu przechowują dane z każdej rundy trenowania, a wyniki każdej rundy są przechowywane oddzielnie, bez wzajemnego nadpisywania. Dzięki temu w razie awarii usługa może wznowić działanie od ostatniej rundy trenowania.
Google Cloud Storage
Domyślna implementacja serwera FC wykorzystuje Google Cloud Storage do przechowywania danych binarnych, takich jak modele, plany trenowania i zaszyfrowane dane z urządzeń.
Projekt zawiera 3 instancje GCS:
- Dane z urządzeń: zaszyfrowane dane z urządzeń przesłane z urządzeń.
- Modele: plany treningowe, modele i ich wagi.
- Gradienty zbiorcze: gradienty zbiorcze wygenerowane przez agregator.
Dane przechowywane w GCS to:
- dane dostarczone przez dewelopera, np. plan treningowy, LUB
- Potencjalnie prywatne dane, ponieważ pochodzą z sygnałów użytkownika (chronionych przez szyfrowanie z użyciem wielu koordynatorów), takich jak przesłane przez urządzenie gradienty i zagregowane gradienty, LUB
- Dane nieprywatne pochodzące z sygnałów użytkowników, ale po zastosowaniu prywatności różnicowej, np. wagi modelu.
Oceń kompromisy między spójnością a dostępnością i wybierz odpowiednie funkcje dostępności i trwałości danych GCS. Powinieneś określić własne zasady przechowywania danych.
Replikacja i kopie zapasowe
Oprócz mechanizmów replikacji danych udostępnianych przez Google Cloud możesz też okresowo tworzyć kopie zapasowe danych w Spannerze i GCS. Możesz na przykład korzystać z usług i ofert replikacji w wielu chmurach. ODP nie udostępnia przykładu, ponieważ te konfiguracje są w dużym stopniu zależne od potrzeb biznesowych. Obecna konstrukcja uwzględnia potencjalne potrzeby deweloperów w zakresie takich replikacji i kopii zapasowych. Dzięki temu jest on zgodny z usługami i produktami do replikacji i tworzenia kopii zapasowych innych firm.