Обзор LiteRT

LiteRT — это разработанная Google платформа для высокопроизводительного развертывания машинного обучения и искусственного интеллекта на периферийных платформах, использующая эффективные методы преобразования, выполнения и оптимизации.

В последней версии LiteRT 2.x представлен API CompiledModel — современный интерфейс среды выполнения, разработанный для максимального ускорения работы оборудования. Хотя API Interpreter (ранее TensorFlow Lite) остается доступным для обратной совместимости, API CompiledModel рекомендуется разработчикам, стремящимся к высочайшей производительности в приложениях искусственного интеллекта на устройствах.

Основные характеристики LiteRT

Упростите разработку с помощью LiteRT.

Автоматический выбор ускорителя вместо явного создания делегата. Эффективная обработка буферов ввода-вывода и асинхронное выполнение для повышения производительности. См. документацию по выводу данных на устройстве .

Лучшая в своем классе производительность графического процессора

Благодаря технологии ML Drift, теперь поддерживаются как модели машинного обучения, так и модели генеративного искусственного интеллекта на графических процессорах (GPU). См. документацию по ускорению на GPU .

Унифицированное ускорение NPU

Ускорьте работу вашей модели, используя упрощенный доступ к NPU от ведущих производителей чипсетов. См. документацию по ускорению NPU .

Превосходная поддержка LLM

LiteRT обеспечивает высокопроизводительное развертывание моделей генеративного ИИ на мобильных, настольных и веб-платформах. См. документацию по развертыванию GenAI .

Широкая поддержка фреймворков машинного обучения.

LiteRT поддерживает упрощенное преобразование из фреймворков PyTorch, TensorFlow и JAX в формат .tflite или .litertlm . См. документацию по преобразованию моделей .

Начните работу с API CompiledModel

Рабочий процесс разработки

LiteRT выполняет вычисления полностью на устройстве: Android, iOS, в веб-браузере, на устройствах IoT, а также на настольных компьютерах и ноутбуках. Независимо от устройства, ниже представлен наиболее распространенный рабочий процесс со ссылками на дополнительные инструкции.

Определите наиболее подходящее решение для задачи машинного обучения.

LiteRT предлагает пользователям высокий уровень гибкости и настраиваемости при решении задач машинного обучения, что делает его подходящим вариантом для тех, кому требуется конкретная модель или специализированная реализация. Пользователям, ищущим готовые решения, может больше подойти MediaPipe Tasks , предоставляющий готовые решения для распространенных задач машинного обучения, таких как обнаружение объектов, классификация текста и вывод LLM-моделей.

Схема рабочего процесса разработки LiteRT

Получение и подготовка модели

Модель LiteRT представлена ​​в эффективном переносимом формате, известном как FlatBuffers , который использует расширение файла .tflite .

Модель LiteRT можно приобрести следующими способами:

  • Получите предварительно обученную модель: для популярных задач машинного обучения, таких как сегментация изображений, обнаружение объектов и т. д.

    Простейший подход — использовать модель LiteRT, уже находящуюся в формате .tflite . Эти модели не требуют дополнительных преобразований.

    Тип модели Источник предварительно обученной модели
    Классическое машинное обучение
    (формат .tflite )
    Посетите Kaggle или HuggingFace.
    Например, модели сегментации изображений и пример приложения.
    Генеративный ИИ
    (формат .litertlm )
    Страница LiteRT "Обнимающее лицо"
    Например, семья Джеммы.
  • Преобразуйте выбранную вами модель PyTorch, TensorFlow или JAX в модель LiteRT, если вы решили не использовать предварительно обученную модель. [PRO USER]

    Модель структуры Примеры моделей инструмент конвертации
    Питорч Обнимающее лицо
    Торчвизион
    Связь
    TensorFlow Модели Kaggle
    Обнимающее лицо
    Связь
    Джакс Обнимающее лицо Связь
  • Создайте свою LLM для дальнейшей оптимизации с помощью Generative API [PRO USER]

    Наша библиотека Generative API предоставляет встроенные в PyTorch строительные блоки для создания моделей Transformer, таких как Gemma , TinyLlama и другие , с использованием удобных для мобильных устройств абстракций, благодаря которым мы можем гарантировать преобразование и производительное выполнение в нашей мобильной среде выполнения LiteRT. См. документацию Generative API .

Оптимизировать [PRO USER]

AI Edge Quantizer для опытных разработчиков — это инструмент для квантизации преобразованных моделей LiteRT. Он призван помочь опытным пользователям добиться оптимальной производительности на ресурсоемких моделях (например, моделях GenAI).

Более подробную информацию можно найти в документации AI Edge Quantizer .

Интегрируйте модель в ваше приложение на периферийных платформах.

LiteRT позволяет запускать модели машинного обучения полностью на устройстве с высокой производительностью на платформах Android, iOS, Web, Desktop и IoT.

Воспользуйтесь приведенными ниже инструкциями для интеграции модели LiteRT на предпочитаемой вами платформе:

Поддерживаемая платформа Поддерживаемые устройства Поддерживаемые API
Запущено на Android мобильные устройства Android C++/Kotlin
Работает на iOS/macOS Мобильные устройства iOS, MacBook C++/Swift
Запуск в веб-среде с использованием LiteRT.js Устройство с установленными браузерами Chrome, Firefox или Safari. JavaScript
Запущено на Linux Рабочие станции на базе Linux или устройства IoT на базе Linux C++/Python
Запускается в Windows Рабочие станции или ноутбуки под управлением Windows C++/Python
Работа на IoT Встроенные устройства C++

Приведенные ниже фрагменты кода демонстрируют базовую реализацию на Kotlin и C++.

Котлин

// 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));

Выберите бэкэнд

Самый простой способ интегрировать бэкенды в LiteRT — использовать встроенные в среду выполнения интеллектуальные возможности. API CompiledModel значительно упрощает настройку, позволяя указать целевой бэкенд в качестве опции. Более подробную информацию см. в руководстве по инференции на устройстве .

Android iOS / macOS Веб Linux / Windows Интернет вещей
Процессор XNNPACK XNNPACK XNNPACK XNNPACK XNNPACK
GPU OpenGL
OpenCL
WebGPU
Металл
WebGPU WebGPU
OpenCL
WebGPU
НПУ MediaTek
Квалкомм
- - - -

Дополнительная документация и поддержка