LiteRT na Androida

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ą.

Przebieg funkcjonalnego wykonywania modeli LiteRT w aplikacjach na Androida

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 uruchomieniowebiblioteki 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:

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ć rdzeniabibliotek 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, modeludanych 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.