Najczęstsze pytania

Czy TensorFlow Federated można używać w środowisku produkcyjnym, np. na telefonach komórkowych?

Obecnie nie. Chociaż projektowaliśmy TFF z myślą o wdrożeniu na rzeczywistych urządzeniach, na tym etapie nie udostępniamy obecnie żadnych narzędzi do tego celu. Bieżąca wersja jest przeznaczona do zastosowań eksperymentalnych, takich jak wyrażanie nowatorskich algorytmów stowarzyszonych lub wypróbowywanie stowarzyszonego uczenia się z własnymi zbiorami danych przy użyciu dołączonego środowiska wykonawczego symulacji.

Przewidujemy, że z biegiem czasu ekosystem open source wokół TFF będzie ewoluował i obejmował środowiska wykonawcze przeznaczone dla fizycznych platform wdrożeniowych.

Jak używać TFF do eksperymentów z dużymi zbiorami danych?

Domyślne środowisko uruchomieniowe zawarte w pierwszej wersji TFF jest przeznaczone tylko do małych eksperymentów, takich jak te opisane w naszych tutorialach, w których wszystkie dane (we wszystkich symulowanych klientach) jednocześnie mieszczą się w pamięci na jednej maszynie, a cały eksperyment działa lokalnie w notatniku Colab.

Nasz krótkoterminowy plan działania obejmuje wysokowydajne środowisko wykonawcze na potrzeby eksperymentów z bardzo dużymi zbiorami danych i dużą liczbą klientów.

Jak mogę zapewnić, że losowość w TFF odpowiada moim oczekiwaniom?

Ponieważ TFF ma zintegrowane przetwarzanie danych, twórca TFF nie powinien przejmować kontroli nad tym, gdzie i w jaki sposób Session TensorFlow są wprowadzane lub run w ramach tych sesji. Semantyka losowości może zależeć od wejścia i wyjścia z Session TensorFlow, jeśli ustawione są nasiona. Zalecamy używanie radomness w stylu TensorFlow 2, używając na przykład tf.random.experimental.Generator od TF 1.14. Używa zmiennej tf.Variable do zarządzania swoim stanem wewnętrznym.

Aby pomóc w zarządzaniu oczekiwaniami, TFF pozwala, aby serializowany przez TensorFlow miał zestaw nasion na poziomie operacyjnym, ale nie na poziomie wykresu. Dzieje się tak, ponieważ semantyka nasion na poziomie operacyjnym powinna być jaśniejsza w ustawieniu TFF: deterministyczna sekwencja zostanie wygenerowana przy każdym wywołaniu funkcji opakowanej jako tf_computation i tylko w ramach tego wywołania zachowane zostaną wszelkie gwarancje złożone przez generator liczb pseudolosowych . Zauważ, że nie jest to całkiem to samo, co semantyka wywoływania tf.function w trybie aktywnym; TFF skutecznie wchodzi i wychodzi z unikalnej tf.Session za każdym razem, gdy wywoływane jest obliczenie tf_computation , podczas gdy wielokrotne wywoływanie funkcji w trybie chętnym jest analogiczne do wielokrotnego wywoływania sess.run na tensorze wyjściowym w ramach tej samej sesji.

Jak mogę się przyczynić?

Zobacz plik README , wytyczne dotyczące wkładu i współpracy .

Jaki jest związek pomiędzy FedJAX i TensorFlow Federated?

TensorFlow Federated (TFF) to pełnoprawna platforma do stowarzyszonego uczenia się i analityki, zaprojektowana w celu ułatwienia tworzenia różnych algorytmów i funkcji oraz umożliwienia przenoszenia kodu w różnych scenariuszach symulacji i wdrożeń. TFF zapewnia skalowalne środowisko wykonawcze i obsługuje wiele algorytmów prywatności, kompresji i optymalizacji za pośrednictwem standardowych interfejsów API. TFF obsługuje także wiele typów badań FL , a zbiór przykładów z opublikowanych artykułów Google pojawia się w repozytorium google-research .

Natomiast FedJAX to lekka biblioteka symulacyjna oparta na Pythonie i JAX, która koncentruje się na łatwości użytkowania i szybkim prototypowaniu algorytmów uczenia się stowarzyszonego do celów badawczych. TensorFlow Federated i FedJAX są opracowywane jako osobne projekty, bez oczekiwania na przenośność kodu.