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

Najnowsza wersja LiteRT 2.x wprowadza CompiledModel API, nowoczesny interfejs środowiska wykonawczego zaprojektowany z myślą o maksymalnym wykorzystaniu akceleracji sprzętowej. Interfejs Interpreter API (wcześniej TensorFlow Lite) jest nadal dostępny ze względu na zgodność wsteczną, ale interfejs CompiledModel API jest zalecany dla deweloperów, którzy chcą uzyskać najwyższą wydajność w aplikacjach AI na urządzeniach.

Najważniejsze funkcje LiteRT

Usprawnianie procesu tworzenia za pomocą LiteRT

Automatyczny wybór akceleratora a jawne tworzenie delegata. Wydajne zarządzanie buforami wejścia/wyjścia i wykonywanie asynchroniczne zapewniające doskonałą wydajność. Zapoznaj się z dokumentacją dotyczącą wnioskowania na urządzeniu.

Najlepsza w swojej klasie wydajność GPU

Oparta na ML Drift, która obsługuje teraz modele ML i generatywnej AI w interfejsach API GPU. Zapoznaj się z dokumentacją akceleracji GPU.

Ujednolicone przyspieszanie NPU

Przyspiesz działanie modelu dzięki uproszczonemu dostępowi do NPU od głównych dostawców chipsetów. Zapoznaj się z dokumentacją dotyczącą akceleracji NPU.

Doskonała obsługa LLM

LiteRT zapewnia wydajne wdrażanie modeli generatywnej AI na platformach mobilnych, komputerach i w internecie. Zapoznaj się z dokumentacją wdrażania generatywnej AI.

Szeroka obsługa platform ML

LiteRT obsługuje uproszczoną konwersję z platform PyTorch, TensorFlow i JAX do formatu .tflite lub .litertlm. Zapoznaj się z dokumentacją dotyczącą konwersji modelu.

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 znajdziesz w dokumentacji kwantyzatora AI Edge.

Zintegruj model z aplikacją na platformach brzegowych

LiteRT umożliwia uruchamianie modeli ML w całości na urządzeniu z wysoką wydajnością na platformach Android, iOS, Web, Desktop i IoT.

Skorzystaj z tych przewodników, aby zintegrować model LiteRT na wybranej platformie:

Obsługiwana platforma Obsługiwane urządzenia Obsługiwane interfejsy API
Uruchamianie na Androidzie Urządzenia mobilne z Androidem C++/Kotlin
Uruchamianie na urządzeniach z iOS lub macOS urządzenia mobilne z iOS, MacBooki; C++/Swift
Uruchamianie w internecie za pomocą LiteRT.js Urządzenie z przeglądarką Chrome, Firefox lub Safari JavaScript
Uruchamianie w systemie Linux stacje robocze z systemem Linux lub urządzenia IoT oparte na Linuksie; C++/Python
Uruchamianie w systemie Windows Stacje robocze lub laptopy z systemem Windows C++/Python
Uruchom na urządzeniu Micro Urządzenia wbudowane C++

Poniższe fragmenty kodu pokazują podstawową implementację w językach Kotlin i C++.

Kotlin

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

// Preallocate input/output buffers
val inputBuffers = compiledModel.createInputBuffers()
val outputBuffers = compiledModel.createOutputBuffers()

// Fill the input buffer
inputBuffers.get(0).writeFloat(input0)
inputBuffers.get(1).writeFloat(input1)

// Invoke
compiledModel.run(inputBuffers, outputBuffers)

// Read the output
val output = outputBuffers.get(0).readFloat()

C++

// Load model and initialize runtime
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));

// Preallocate input/output buffers
LITERT_ASSIGN_OR_RETURN(auto input_buffers,compiled_model.CreateInputBuffers(signature_index));
LITERT_ASSIGN_OR_RETURN(auto output_buffers,compiled_model.CreateOutputBuffers(signature_index));

// Fill the input buffer
LITERT_ABORT_IF_ERROR(input_buffers[0].Write(input0));
LITERT_ABORT_IF_ERROR(input_buffers[1].Write(input1));

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

// Read the output
LITERT_ABORT_IF_ERROR(output_buffers[0].Read(output0));

Wybierz akcelerator sprzętowy

Najprostszym sposobem włączenia backendów w LiteRT jest korzystanie z wbudowanych funkcji inteligentnych środowiska wykonawczego. Dzięki interfejsowi CompiledModel API LiteRT znacznie upraszcza konfigurację, umożliwiając określenie backendu docelowego jako opcji. Więcej informacji znajdziesz w przewodniku po wnioskowaniu na urządzeniu.

Android iOS / macOS Sieć Linux / Windows IoT
CPU XNNPACK XNNPACK XNNPACK XNNPACK XNNPACK
GPU WebGPU
OpenCL
WebGPU
Metal
WebGPU WebGPU
OpenCL
WebGPU
NPU MediaTek
Qualcomm
- - - -

Dodatkowa dokumentacja i pomoc