Добро пожаловать в обзор 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 . См. документацию по преобразованию моделей .

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

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

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

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

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

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

Модель 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
Запущено на Micro Встроенные устройства 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 WebGPU
OpenCL
WebGPU
Металл
WebGPU WebGPU
OpenCL
WebGPU
НПУ MediaTek
Квалкомм
- - - -

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