Serwer sfederowanego przetwarzania (FC) jest częścią sfederowanego uczenia się oferowanego przez personalizację na urządzeniu (ODP). Celem tego dokumentu jest przedstawienie federacyjnego serwera obliczeniowego (FC Server), jego komponentów i używanej technologii. Dokument zawiera ogólny opis architektury, a następnie szczegółowe omówienie każdego komponentu. Omawia też, jak komponenty współpracują ze sobą, aby zapewnić środowisko sfederowanego uczenia się, oraz podaje strategie skalowania i dzielenia zadań.
Proces trenowania
Trening składa się z przepływów danych między klientem FC a serwerem FC. Klient FC to podstawowy moduł Androida, który trenuje modele ML na urządzeniu i współdziała z serwerem FC. Serwer FC przetwarza i zbiera wyniki z klienta FC w bezpiecznym zaufanym środowisku wykonawczym (TEE).
Szkolenie obejmuje te kroki:
- Klient FC na urządzeniu pobiera klucz publiczny szyfrowania z usług kluczy.
- Klient FC sprawdza się na serwerze FC i otrzymuje zadanie szkoleniowe.
- Klient FC pobiera plan treningowy oraz najnowszą wersję modelu (wersja N).
- Klient FC trenuje, korzystając z danych lokalnych i planu.
- Klient FC szyfruje dane 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ż odpowiednia liczba klientów prześle swoje dane.
- Uruchamia się runda agregacji.
- Zaszyfrowane dane są ładowane przez agregatora do zaufanego środowiska wykonawczego (TEE).
- Zgodnie z specyfikacją NIST 9334 dotyczącą architektury procedur zdalnej weryfikacji (RATS), usługodawca weryfikuje się sam przed koordynatorami. Po pomyślnym uwierzytelnieniu usługa Key Services przyznaje klucze odszyfrowywania. Klucze te mogą być rozdzielane między wielu dostawców kluczy w ramach schematu udostępniania sekretu Shamira.
- Agregator wykonuje agregację na różnych urządzeniach, przycina i dodaje szum zgodnie z odpowiednimi mechanizmami prywatności różnicowej (DP), a następnie generuje wyniki z dodanym szumem.
- Agregator uruchamia aktualizator modelu.
- Aktualizator modelu wczytuje zbiorczą wartość i stosuje ją do wersji N modelu, aby utworzyć wersję N + 1. Nowy model jest przesyłany do magazynu modeli.
Serwer FC może być wdrażany w dowolnych usługach w chmurze, które obsługują TEE i powiązane funkcje zabezpieczeń. Obecnie analizujemy dostawców chmury publicznej i podstawowe technologie, ale w tej sekcji przedstawiamy przykładową implementację Google Cloud z użyciem Confidential Space.
Architektura ogólna
Serwer FC ma w Google Cloud te komponenty:
Składnik | Opis |
Usługa zarządzania zadaniami | Usługa internetowa do zarządzania zadaniem treningowym. Partnerzy powinni używać interfejsu Task Management API, aby tworzyć zadania szkoleniowe, wyświetlać listę wszystkich istniejących zadań szkoleniowych, anulować zadanie i pobierać stany wszystkich szkoleń. |
Usługa przypisywania zadań | usługa internetowa oparta na protokole HTTPS, w której urządzenia klienta okresowo sprawdzają dostępność zadań związanych z treningiem i zgłaszają stan treningu; |
Właściciel witryny | usługa działająca w tle w Poufnej przestrzeni. Uruchamia zadania utworzone za pomocą ODP. Musi ona potwierdzać tożsamość koordynatorów, którzy mają dostęp do kluczy odszyfrowywania. Tylko pośrednicy, którzy przeszli weryfikację, mogą odszyfrowywać dane przesłane przez urządzenia klientów i przeprowadzać agregację danych na różnych urządzeniach. |
Aktualizator modelu | Usługa działająca w tle w Poufnej przestrzeni, która stosuje zsumowane gradienty do modelu. |
Szczegóły komponentu
W poniższych sekcjach znajdziesz więcej informacji o architekturze ogólnej:
Usługa zarządzania zadaniami
Usługa zarządzania zadaniami zawiera 2 podelementy: usługę internetową zarządzania zadaniami i usługę harmonogramowania zadań, które są wdrażane w GKE.
Zarządzanie zadaniami
Jest to zbiór usług internetowych front-endu, które przyjmują żądania HTTPS i tworzą lub pobierają zadania z bazy danych zadań.
Harmonogram zadań
Usługa działająca w tle, która stale skanuje bazę danych zadań. Zarządza on przepływem danych, np. tworzy nowe rundy i iterakcje treningowe.
Baza danych zadań
Baza danych zgodna z ANSI SQL, która przechowuje informacje o zadaniu, iteracji i przypisaniu. W tej implementacji jako podstawowa usługa bazy danych jest używana usługa Google Cloud Spanner.
Usługa przypisywania zadań
Usługa przypisywania zadań to usługa internetowa frontendu, która jest hostowana w GKE. Odbiera ona żądania od klientów FC i w razie potrzeby rozprowadza zadania szkoleniowe.
Baza danych zadań to ta sama instancja bazy danych co baza danych zadań w usłudze Task Management Service.
Usługa agregatora
Agregator i aktualizator modelu
Agregator i aktualizator modelu są podobne. Są to usługi działające w tle, które bezpiecznie przetwarzają dane w poufnej przestrzeni. Komunikacja między zadaniami offline odbywa się za pomocą PubSub.
Gradienty, zagregowane gradienty, model i plan
- Miejsce na dane gradientów dla przesłanych (zaszyfrowanych) gradientów na urządzeniu klienta.
- Zbiorcze miejsce na dane gradientów dla zbiorczych, przyciętych i zaburzonych gradientów.
- Miejsce na modele i plany na potrzeby planów treningowych, modeli i wag.
Kolektor
Collector to usługa działająca w tle, która okresowo zlicza dane przesłane przez urządzenie klienta podczas sesji treningowej. Gdy jest już dostępnych wystarczająco dużo zgłoszeń, informuje ona agregatora o rozpoczęciu agregacji.
Hosty usług
Wszystkie usługi, które nie mają dostępu do informacji wrażliwych, są hostowane w GKE.
Wszystkie usługi, które mogą dotyczyć informacji poufnych, są hostowane w poufnym miejscu.
Wszystkie dane wrażliwe są szyfrowane za pomocą kluczy szyfrowania zarządzanych przez usługi kluczy należące do wielu stron. Do kluczy odszyfrowywania mają dostęp tylko autoryzowane, tworzone przez ODP wersje kodu open source działające w legalnych wersjach Confidential Space z włączoną obsługą pracy z danymi poufnymi.
W jednej jednostce usługi zasób obliczeniowy wygląda tak:
Skalowalność
Omówiona wcześniej infrastruktura koncentruje się na jednej jednostce usługi.
Jedna jednostka usługi korzysta z jednego wystąpienia usługi Cloud Spanner. Więcej informacji o ważnych ograniczeniach znajdziesz w artykule Limity i limity Spannera.
Każdy element tej architektury można skalować niezależnie. Jest to realizowane przez skalowanie pojemności w przestrzeni poufnej lub w klastrze GKE za pomocą standardowych mechanizmów skalowania. Możliwości przetwarzania można zwiększyć, dodając więcej instancji:
- Usługa internetowa przypisywania zadań
- Usługa sieciowa Zarządzanie zadaniami
- Instancje agregatora
- Instancje aktualizatora modelu
Odporność
Odporność serwera FC jest obsługiwana przez odtwarzanie awaryjne przy użyciu replikowanej pamięci masowej. Jeśli interesuje Cię odtwarzanie awaryjne, włącz replikację danych między regionami. Dzięki temu w przypadku katastrofy (np. zdarzenia pogodowego, które zakłóci działanie centrum danych) usługa wznowi działanie od ostatniej rundy trenowania.
Spanner
Domyślna implementacja serwera FC używa bazy danych Google Cloud Spanner do przechowywania stanu zadania, który służy do kontrolowania przepływu treningowego. Zanim wybierzesz konfigurację z wieloma regionami, przeanalizuj kompromisy między spójnością a dostępnością w zależności od potrzeb firmy.
W żadnym wystąpieniu Spanner nie są przechowywane dane użytkownika ani ich pochodne, zarówno w postaci nieprzetworzonej, jak i zaszyfrowanej. Możesz korzystać z dostępnych funkcji odtwarzania awaryjnego oferowanych przez Spanner.
Spanner rejestruje historię zmian. Agregator i aktualizator modelu przechowują dane z każdej rundy treningu, a wyniki z każdej rundy są przechowywane osobno bez możliwości ich nadpisywania. Dzięki temu w przypadku katastrofy usługa może wznowić działanie od ostatniej rundy trenowania.
Google Cloud Storage
Domyślna implementacja serwera FC używa Google Cloud Storage do przechowywania danych blob, takich jak modele, plany treningowe i zaszyfrowane dane urządzenia.
W tej architekturze występują 3 instancji GCS:
- Dane z urządzeń: zaszyfrowane dane z urządzeń przesłane z urządzeń.
- Modele: plany treningowe, modele i ich wagi.
- Zbiorcze gradienty: zbiorcze gradienty utworzone przez agregator.
Dane przechowywane w GCS są:
- Deweloper dostarczył dane, takie jak plan treningowy LUB
- potencjalnie prywatne, ponieważ pochodzą z sygnałów użytkownika (chronionych szyfrowaniem z wielokrotnie szyfrowaniem) takich jak gradienty przesłane przez urządzenie i zbiorcze gradienty LUB
- Dane nieprywatne pochodzące z sygnałów użytkownika, ale po zastosowaniu mechanizmu ochrony prywatności Differential Privacy, np. wagi modelu.
Należy przeanalizować kompromisy między spójnością a dostępnością i wybrać odpowiednie funkcje dostępności i trwałości danych GCS. Należy 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 Spanner i GCS. Możesz na przykład korzystać z usług i ofert replikacji w wielu chmurach. ODP nie udostępnia próbki, ponieważ te konfiguracje są bardzo zależne od potrzeb biznesowych. Obecna wersja uwzględnia potencjalne potrzeby deweloperów związane z takimi replikacją i kopiami zapasowymi. Dzięki temu jest zgodny z usługami i produktami do replikacji i tworzenia kopii zapasowych innych firm.