LiteRT umożliwia uruchamianie modeli TensorFlow, PyTorch i JAX w aplikacjach na Androida. System LiteRT udostępnia wstępnie utworzone 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. Przebieg funkcjonalnego wykonywania modeli LiteRT w aplikacjach na Androida.
Aby uruchamiać model LiteRT, aplikacja na Androida 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 opisaliśmy, jak biblioteki i narzędzia LiteRT zapewniają te elementy funkcjonalne.
Tworzenie aplikacji za pomocą LiteRT
W tej sekcji opisujemy zalecaną, najczęściej stosowaną metodę implementacji LiteRT w aplikacji na Androida. Największą uwagę zwróć na sekcje środowisko wykonawcze i biblioteki programistyczne. Jeśli masz opracowany model niestandardowy, zapoznaj się z sekcją Zaawansowane ścieżki 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 korzystanie ze ś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 w czasie wykonywania, użyj standardowego środowiska wykonawczego LiteRT. Ta opcja umożliwia dodanie do aplikacji dodatkowego kodu, co daje większą kontrolę nad środowiskiem uczenia maszynowego w aplikacji, ale wiąże się z większym rozmiarem 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 wykonań 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ć wstępnie utworzonych 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 ML 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 modelu w celu wygenerowania wyniku prognozy to wnioskowanie. 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 uczenia maszynowego 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 delegatach i przyspieszaniu sprzętowym przetwarzania modeli znajdziesz w artykule Omówienie akceleracji sprzętowej.
Obsługa wyników wyjściowych
Modele generują wyniki prognozy w postaci tensorów, które muszą być obsługiwane przez aplikację na Androida, aby wykonać odpowiednie działanie lub wyświetlić wynik użytkownikowi. Wyniki modelu mogą być tak proste jak liczba odpowiadająca pojedynczemu wynikowi (0 = pies, 1 = kot, 2 = ptak) w przypadku klasyfikacji obrazu, jak i znacznie bardziej złożone, takie jak wiele ramek ograniczających dla kilku sklasyfikowanych obiektów na obrazie, z oceną pewności prognozy 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 opisaliśmy zaawansowane techniki wykonywania modeli i ich tworzenia w przypadku LiteRT w aplikacjach na Androida.
Zaawansowane środowisko wykonawcze
Oprócz standardowych środowisk wykonań i środowisk wykonań usług Google Play dla LiteRT dostępne są dodatkowe środowiska wykonań, 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 LiteRT.
- Środowisko wykonawcze Flex w przypadku LiteRT
- Niestandardowe środowisko wykonawcze LiteRT
LiteRT Flex runtime umożliwia uwzględnianie konkretnych operatorów wymaganych przez model. Jako zaawansowaną opcję uruchamiania modelu możesz skompilować 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 po stronie serwera
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ń użytkowników z Androidem lub nie może być uruchamiany z przyzwoitą 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 optymalizowanie modelu niestandardowego
Bardziej zaawansowane ścieżki rozwoju mogą obejmować tworzenie niestandardowych modeli uczenia maszynowego i ich optymalizowanie pod kątem użycia na urządzeniach z Androidem. Jeśli zamierzasz 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.
Obsługiwane wersje Androida
Wersja LiteRT | Stan | Minimalny poziom pakietu SDK | Minimalny poziom NDK (jeśli jest używany) | Data wydania |
---|---|---|---|---|
v1.2.0 ⭐ |
✅ Aktywny | 31 (Android 12 Do lodów) |
r26a |
2025-03-13 |
Ważne: aby zapewnić zgodność z najnowszymi funkcjami i aktualizacjami zabezpieczeń, aktualizuj zależności.