LiteRT umożliwia uruchamianie modeli TensorFlow, PyTorch i JAX w aplikacjach na Androida. System LiteRT udostępnia wstępnie skonfigurowane i możliwe do dostosowania środowiska wykonywania, które umożliwiają szybkie i wydajne uruchamianie modeli na Androidzie, w tym z opcjami przyspieszania sprzętowego.
Na przykład aplikacje na Androida, które korzystają z LiteRT, znajdziesz w repozytorium LiteRT samples.
Modele uczenia maszynowego
LiteRT używa modeli TensorFlow, PyTorch i JAX, które są konwertowane do mniejszego, przenośnego i bardziej wydajnego formatu modelu systemów uczących się. Możesz używać w LiteRT na Androidzie gotowych modeli lub tworzyć własne modele i konwertować je do formatu LiteRT.
Ta strona zawiera informacje o używaniu już utworzonych modeli systemów uczących się. Nie omawia jednak tworzenia, trenowania, testowania ani konwertowania modeli. Więcej informacji o wybieraniu, modyfikowaniu, tworzeniu i konwertowaniu modeli systemów uczących się na potrzeby LiteRT znajdziesz na stronie Modele.
Uruchamianie modeli na Androidzie
Model LiteRT działający w aplikacji na Androida pobiera dane, przetwarza je i generuje prognozę na podstawie logiki modelu. Model LiteRT wymaga specjalnego środowiska uruchomieniowego, a dane przekazywane do modelu muszą być w określonym formacie danych, zwanym tensorem. Gdy model przetwarza dane (czyli wykonuje inferencję), generuje wyniki przewidywania w postaci nowych tensorów i przekazuje je aplikacji na Androida, aby mogła podjąć działanie, np. wyświetlić wynik użytkownikowi lub wykonać dodatkową logikę biznesową.
Rysunek 1. Schemat funkcjonalnego wykonywania modeli LiteRT w aplikacjach na Androida.
Aby model LiteRT mógł działać w aplikacji na Androida, ta ostatnia musi zawierać te elementy:
- Środowisko wykonawcze LiteRT do wykonywania modelu
- Moduł obsługi danych wejściowych modelu do przekształcania danych w tensory
- Moduł obsługi danych wyjściowych modelu do odbierania tensorów wyników i interpretowania ich jako wyników prognozy.
W następnych sekcjach opisano, jak biblioteki i narzędzia LiteRT zapewniają te elementy funkcjonalne.
Tworzenie aplikacji za pomocą LiteRT
W tej sekcji opisujemy zalecaną, najczęściej stosowaną metodę implementowania LiteRT w aplikacji na Androida. Największą uwagę zwróć na sekcje środowisko uruchomieniowe i biblioteki programistyczne. Jeśli masz opracowany model niestandardowy, zapoznaj się z sekcją Ścieżki zaawansowanego rozwoju.
Opcje środowiska wykonawczego
Środowisko wykonawcze do wykonywania modeli w aplikacji na Androida można włączyć na kilka sposobów. Oto preferowane opcje:
- LiteRT w środowisku uruchomieniowym usług Google Play (zalecane)
- Samodzielne środowisko wykonawcze LiteRT
Ogólnie zalecamy używanie środowiska uruchomieniowego udostępnianego przez usługi Google Play, ponieważ zajmuje ono mniej miejsca niż środowisko standardowe, ponieważ ładuje się dynamicznie, co pozwala zmniejszyć rozmiar aplikacji. Usługi Google Play automatycznie korzystają z najnowszej stabilnej wersji środowiska wykonawczego LiteRT, co zapewnia dodatkowe funkcje i zwiększa wydajność z czasem. Jeśli oferujesz aplikację na urządzeniach, które nie obsługują Usług Google Play, lub musisz dokładnie zarządzać środowiskiem ML Runtime, użyj standardowego środowiska LiteRT. Ta opcja umożliwia dodanie do aplikacji dodatkowego kodu, co daje większą kontrolę nad środowiskiem uczenia maszynowego w aplikacji, ale powoduje zwiększenie rozmiaru pliku do pobrania aplikacji.
Aby uzyskać dostęp do tych środowisk wykonawczych w aplikacji na Androida, dodaj do środowiska programistycznego aplikacji biblioteki programistyczne LiteRT. Informacje o używaniu standardowych środowisk uruchomieniowych w aplikacji znajdziesz w następnej sekcji.
Biblioteki
Do interfejsu Interpreter API możesz uzyskać dostęp za pomocą usług Google Play. W aplikacji na Androida możesz używać rdzenia i bibliotek LiteRT. Szczegółowe informacje o używaniu bibliotek LiteRT i środowisk wykonawalnych znajdziesz w artykule Narzędzia programistyczne na Androida.
Pobieranie modeli
Uruchomienie modelu w aplikacji na Androida wymaga modelu w formacie LiteRT. Możesz użyć gotowych modeli lub utworzyć model i przekształcić go w format Lite. Więcej informacji o modelach do aplikacji na Androida znajdziesz na stronie Modele w LiteRT.
Obsługa danych wejściowych
Wszystkie dane przekazywane do modelu uczenia maszynowego muszą być tensorem o konkretnej strukturze danych, często nazywanej kształtem tensora. Aby przetwarzać dane za pomocą modelu, kod aplikacji musi przekształcić dane z ich formatu natywnego (np. obrazu, tekstu lub danych audio) w tensor o kształcie wymaganym przez model.
Wykonywanie wniosków
Przetwarzanie danych w ramach modelu w celu wygenerowania wyniku prognozy to wyciąganie wniosków. Przeprowadzanie wnioskowania w aplikacji na Androida wymaga środowiska wykonawczego LiteRT, modelu i danych wejściowych.
Szybkość, z jaką model może generować wnioskowanie na danym urządzeniu, zależy od rozmiaru przetwarzanych danych, złożoności modelu i dostępnych zasobów obliczeniowych, takich jak pamięć i procesor lub wyspecjalizowane procesory zwane akceleratorami. Modele systemów uczących się mogą działać szybciej na tych wyspecjalizowanych procesorach, takich jak procesory graficzne (GPU) i jednostki tensorowe (TPU), korzystając z sterowników sprzętowych LiteRT zwanych delegowanymi. Więcej informacji o delegowaniu i przyspieszaniu sprzętowym przetwarzania modeli znajdziesz w artykule Omówienie przyspieszania sprzętowego.
Obsługa wyników wyjściowych
Modele generują wyniki prognozy w postaci tensorów, które muszą być przetwarzane przez aplikację na Androida, aby wykonać odpowiednie działanie lub wyświetlić wynik użytkownikowi. Dane wyjściowe modelu mogą być tak proste jak liczba odpowiadająca pojedynczemu wynikowi (0 = pies, 1 = kot, 2 = ptak) w przypadku klasyfikacji obrazu, aż po znacznie bardziej złożone wyniki, takie jak wiele ramek ograniczających dla kilku zaklasyfikowanych obiektów na obrazie, z oceną pewności przewidywania w zakresie od 0 do 1.
Zaawansowane ścieżki rozwoju
Jeśli używasz bardziej zaawansowanych i spersonalizowanych modeli LiteRT, może być konieczne zastosowanie bardziej zaawansowanych metod tworzenia niż opisano powyżej. W następnych sekcjach opisujemy zaawansowane techniki wykonywania modeli i ich tworzenia w przypadku LiteRT w aplikacjach na Androida.
Zaawansowane środowisko wykonawcze
Oprócz standardowych środowisk wykonawalnych i środowisk wykonawalnych usług Google Play dla LiteRT dostępne są dodatkowe środowiska wykonawcze, których możesz używać w przypadku aplikacji na Androida. Najczęściej będziesz używać tych środowisk, jeśli masz model uczenia maszynowego, który korzysta z operacji uczenia maszynowego, których nie obsługuje standardowe środowisko wykonawcze dla LiteRT.
- Flex runtime dla LiteRT
- Niestandardowe środowisko wykonawcze LiteRT
LiteRT Flex runtime umożliwia uwzględnianie konkretnych operatorów wymaganych przez Twój model. Jako zaawansowaną opcję uruchamiania modelu możesz tworzyć LiteRT na Androida, aby uwzględnić operatory i inne funkcje wymagane do uruchamiania modelu uczenia maszynowego TensorFlow. Więcej informacji znajdziesz w artykule Tworzenie LiteRT na Androida.
Interfejsy API C i C++
LiteRT udostępnia też interfejs API do uruchamiania modeli za pomocą języków C i C++. Jeśli Twoja aplikacja korzysta z Android NDK, rozważ użycie tego interfejsu API. Warto też rozważyć użycie tego interfejsu API, jeśli chcesz udostępniać kod na różnych platformach. Więcej informacji o tej opcji rozwoju znajdziesz na stronie Narzędzia dla programistów.
Wykonywanie modelu na serwerze
Ogólnie modele w aplikacji powinny być uruchamiane na urządzeniu z Androidem, aby zapewnić użytkownikom mniejsze opóźnienia i większą prywatność danych. Jednak w niektórych przypadkach lepszym rozwiązaniem jest uruchomienie modelu na serwerze w chmurze, a nie na urządzeniu. Jeśli na przykład masz duży model, który nie jest łatwo kompresowany do rozmiaru pasującego do urządzeń z Androidem użytkowników, lub nie może być uruchamiany z rozsądną wydajnością na tych urządzeniach. Może to być też preferowane rozwiązanie, jeśli najważniejsza jest spójna wydajność modelu na różnych urządzeniach.
Google Cloud oferuje pełny zestaw usług do uruchamiania modeli AI. Więcej informacji znajdziesz na stronie usług sztucznej inteligencji i systemów uczących się Google Cloud.
Tworzenie i optymalizacja modelu niestandardowego
Bardziej zaawansowane ścieżki rozwoju obejmować będą prawdopodobnie tworzenie niestandardowych modeli uczenia się maszynowego i ich optymalizowanie pod kątem użycia na urządzeniach z Androidem. Jeśli planujesz tworzyć modele niestandardowe, rozważ zastosowanie w nich technik kwantyzacji, aby zmniejszyć koszty pamięci i przetwarzania. Więcej informacji o tworzeniu modeli o wysokiej wydajności do wykorzystania w LiteRT znajdziesz w sekcji Modele w artykule Sprawdzone metody dotyczące wydajności.