Omówienie LiteRT

LiteRT to platforma Google do wdrażania na urządzeniach modeli ML i GenAI o wysokiej wydajności na platformach brzegowych, która wykorzystuje wydajną konwersję, środowisko wykonawcze i optymalizację.

LiteRT 2.x zawiera najnowszy interfejs API środowiska wykonawczego, czyli interfejs CompiledModel API, który jest ulepszoną wersją interfejsu Interpreter API (czyli interfejsów TensorFlow Lite API), zwłaszcza pod względem akceleracji sprzętowej i ogólnej wydajności w przypadku aplikacji ML i AI na urządzeniach. Interfejs CompiledModel API jest dostępny w wersji beta w językach Kotlin i C++.

Najważniejsze funkcje LiteRT

Obsługiwane modele

LiteRT obsługuje uproszczoną konwersję z platform Pytorch, TensorFlow i JAX na format .tflite lub .litertlm.

Usprawnianie procesu tworzenia za pomocą LiteRT

Automatyczny wybór akceleratora a jawne tworzenie delegata. Proste środowisko wykonawcze NPU i dystrybucja modelu. Wydajne zarządzanie buforami wejścia/wyjścia i wykonywanie asynchroniczne zapewniające doskonałą wydajność.

Najlepsza w swojej klasie wydajność GPU

Oparta na ML Drift, która obsługuje teraz modele ML i generatywnej AI w interfejsach API GPU.

Ujednolicone przyspieszanie NPU

Przyspiesz działanie modelu dzięki uproszczonemu dostępowi do NPU od głównych dostawców chipsetów.

Uproszczona obsługa LLM dzięki LiteRT

Możesz używać modelu LiteRT-LM, który jest oparty na LiteRT. LiteRT-LM obsługuje najnowsze modele LLM i przydatne funkcje, takie jak wielomodalność, dekodowanie z ograniczeniami itp.

Przepływ pracy w programowaniu

LiteRT przeprowadza wnioskowanie w całości na urządzeniu z Androidem, iOS, w internecie, na urządzeniach IoT oraz na komputerach stacjonarnych i laptopach. Niezależnie od urządzenia najczęstszy jest ten proces, a poniżej znajdziesz linki do dalszych instrukcji.

Wykres przepływu pracy podczas tworzenia LiteRT

Wybierz najbardziej odpowiednie rozwiązanie problemu związanego z uczeniem maszynowym.

LiteRT zapewnia użytkownikom dużą elastyczność i możliwość dostosowywania podczas rozwiązywania problemów związanych z uczeniem maszynowym, dzięki czemu jest dobrym rozwiązaniem dla użytkowników, którzy potrzebują konkretnego modelu lub specjalistycznego wdrożenia. Użytkownicy szukający rozwiązań typu „plug and play” mogą preferować MediaPipe Tasks, które udostępnia gotowe rozwiązania do typowych zadań uczenia maszynowego, takich jak wykrywanie obiektów, klasyfikacja tekstu i wnioskowanie LLM.

Pobieranie i przygotowywanie modelu

Model LiteRT jest reprezentowany w wydajnym, przenośnym formacie znanym jako FlatBuffers, który używa rozszerzenia pliku .tflite.

Model LiteRT możesz uzyskać w ten sposób:

  • Uzyskiwanie wstępnie wytrenowanego modelu: w przypadku popularnych zadań uczenia maszynowego, takich jak segmentacja obrazów czy wykrywanie obiektów.

    Najprostszym rozwiązaniem jest użycie modelu LiteRT w .tfliteformacie. Te modele nie wymagają żadnych dodatkowych kroków konwersji.

    Typ modelu Źródło wytrenowanego modelu
    Klasyczne uczenie maszynowe
    (format .tflite)
    Odwiedź Kaggle lub HuggingFace.
    Np. modele segmentacji obrazów i przykładowa aplikacja
    Generatywna AI
    (.litertlm format)
    Strona LiteRT w Hugging Face
    np. Gemma Family
  • Przekonwertuj wybrany model PyTorch, TensorFlow lub JAX na model LiteRT, jeśli nie chcesz używać wstępnie wytrenowanego modelu. [PRO USER]

    Platforma modelu Przykładowe modele Narzędzie do konwersji
    Pytorch Hugging Face
    Torchvision
    Link
    TensorFlow Modele Kaggle
    Hugging Face
    Link
    Jax Hugging Face Link
  • Tworzenie modelu LLM w celu dalszej optymalizacji za pomocą interfejsu Generative API [UŻYTKOWNIK PRO]

    Nasza biblioteka Generative API udostępnia wbudowane bloki PyTorch do tworzenia modeli Transformer, takich jak Gemma, TinyLlamainne, za pomocą abstrakcji przyjaznych dla urządzeń mobilnych. Dzięki temu możemy zagwarantować konwersję i wydajne wykonywanie w naszym środowisku wykonawczym na urządzeniach mobilnych, LiteRT. Zapoznaj się z dokumentacją interfejsu Generative API.

Kwantyzacja [UŻYTKOWNIK PRO]

AI Edge Quantizer dla zaawansowanych deweloperów to narzędzie do kwantyzacji przekonwertowanych modeli LiteRT. Ma to ułatwić zaawansowanym użytkownikom dążenie do optymalnej wydajności w przypadku modeli wymagających dużych zasobów (np. modele generatywnej AI).

Więcej informacji o modelach uczenia maszynowego i modelach generatywnej AI znajdziesz w dokumentacji dotyczącej kwantyzacji AI Edge.

Wymagania wstępne

  • Python 3.10–3.12
  • .tflite plik modelu
  • Dodatkowe informacje znajdziesz w sekcji dotyczącej danej platformy

Zintegruj model z aplikacją na platformach brzegowych

Modele LiteRT możesz wdrażać tak, aby wnioskowanie odbywało się w całości na urządzeniach z Androidem, iOS, w internecie, na urządzeniach IoT i komputerach. LiteRT zawiera interfejsy API dla Pythona, Javy i Kotlin na Androida, Swift na iOS-a i C++ na mikro urządzenia.

Aby wdrożyć model LiteRT na wybranej platformie, skorzystaj z tych przewodników:

Platforma modelu Przykładowe modele Narzędzie do konwersji
Uruchamianie na Androidzie Urządzenia mobilne z Androidem Interfejsy API C++/Kotlin
Uruchamianie na iOS Urządzenia mobilne z iOS Interfejsy API C++/Swift*
Uruchamianie w internecie za pomocą LiteRT.js Urządzenie z przeglądarką Chrome, Firefox lub Safari Interfejsy JavaScript API
Uruchom na urządzeniu Micro Urządzenia wbudowane Interfejsy API C++

*Już wkrótce

Przykład kodu w języku Kotlin

// Load model and initialize runtime
val compiledModel = CompiledModel.create("/path/to/mymodel.tflite", CompiledModel.Options(Accelerator.CPU))

// Prepare I/O buffers and fill in the data
val inputBuffers = compiledModel.createInputBuffers()
inputBuffers.get(0).writeFloat(input0)
inputBuffers.get(1).writeFloat(input1)

val outputBuffers = compiledModel.createOutputBuffers()

// Execute model
compiledModel.run(inputBuffers, outputBuffers)

// Access model output
val output = outputBuffers.get(0).readFloat()

inputBuffers.forEach { it.close() }
outputBuffers.forEach { it.close() }
compiledModel.close()

Przykładowy kod w C++

LITERT_ASSIGN_OR_RETURN(auto env, GetEnvironment());
LITERT_ASSIGN_OR_RETURN(auto options, GetOptions());
LITERT_ASSIGN_OR_RETURN(
      auto compiled_model,
      CompiledModel::Create(env, "/path/to/mymodel.tflite", options));
LITERT_ASSIGN_OR_RETURN(auto input_buffers,compiled_model.CreateInputBuffers(signature_index));
LITERT_ASSIGN_OR_RETURN(auto output_buffers,compiled_model.CreateOutputBuffers(signature_index));
LITERT_ABORT_IF_ERROR(input_buffers[0].Write(input0));
LITERT_ABORT_IF_ERROR(input_buffers[1].Write(input1));

LITERT_ABORT_IF_ERROR(compiled_model.Run(signature_index, input_buffers, output_buffers));

LITERT_ABORT_IF_ERROR(output_buffers[0].Read(output0));

Wybierz backend

Najprostszym sposobem włączenia backendów w LiteRT jest korzystanie z wbudowanych funkcji inteligentnych środowiska wykonawczego. Dzięki najnowszym zmianom LiteRT znacznie upraszcza konfigurację, ponieważ umożliwia określenie docelowego backendu jako opcji.

Podstawą LiteRT w wersji 2.x jest obiekt CompiledModel. Gdy wczytujesz model, LiteRT korzysta z dostępnego sprzętu systemowego i wewnętrznej logiki priorytetów, aby wybrać optymalny backend bez ręcznej konfiguracji. Więcej informacji znajdziesz w artykule Backend.

Android Komputer Sieć iOS macOS IoT
CPU XNNPack XNNPack XNNPack XNNPack XNNPack XNNPack
GPU WebGPU
OpenCL
WebGPU
OpenCL
WebGPU WebGPU
Metal
WebGPU
Metal
WebGPU
NPU MediaTek
Qualcomm
- - - - -

Dodatkowa dokumentacja i pomoc

Przykładowa aplikacja LiteRT w wersji 2.x Zobacz przykładową aplikację do segmentacji obrazów LiteRT

Dla obecnych użytkowników TensorFlow Lite Zobacz przewodnik po migracji

Zasięg operacyjny Zgodni operatorzy

Obsługiwane modele LLM LiteRT Hugging Face i Gen API – przykłady

Narzędzia Strona narzędzi LiteRT – wydajność, profilowanie, raportowanie błędów itp.