Добро пожаловать в обзор LiteRT.

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

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

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

Поддерживаемые модели

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

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

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

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

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

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

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

Упрощенная поддержка LLM с помощью LiteRT

Вы можете использовать LiteRT-LM, который работает на базе LiteRT. LiteRT-LM поддерживает новейшие LLM-модули и полезные функции, такие как многомодальность, декодирование с ограничениями и т. д.

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

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

Предварительные условия для начала работы

  • Python 3.10-3.12
  • файл модели .tflite
  • Дополнительные сведения доступны в соответствующем разделе платформы.

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

Вы можете использовать модели LiteRT для выполнения выводов полностью на устройствах Android, iOS, веб-приложениях, устройствах IoT и настольных компьютерах. LiteRT содержит API для Python , Java и Kotlin для Android, Swift для iOS и C++ для микроустройств.

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

Модель структуры Примеры моделей Инструмент конвертации
Запущено на Android мобильные устройства Android API на C++/Kotlin
Запущено на iOS мобильные устройства iOS API на C++/Swift*
Запуск в веб-среде с использованием LiteRT.js Устройство с установленными браузерами Chrome, Firefox или Safari. API JavaScript
Запущено на Micro Встроенные устройства API на C++

*Вскоре

Пример кода на 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()

Пример кода на 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));

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

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

В основе LiteRT v2.x лежит объект CompiledModel . При загрузке модели LiteRT использует доступное оборудование системы и внутреннюю логику приоритетов для выбора оптимального бэкенда без ручной настройки. Подробнее см. в разделе «Бэкенд» .

Android Рабочий стол Веб iOS macOS Интернет вещей
Процессор XNNPack XNNPack XNNPack XNNPack XNNPack XNNPack
GPU WebGPU
OpenCL
WebGPU
OpenCL
WebGPU WebGPU
Металл
WebGPU
Металл
WebGPU
НПУ MediaTek
Квалкомм
- - - - -

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

Пример приложения LiteRT v2.x. См. пример приложения LiteRT для сегментации изображений.

Для существующих пользователей TensorFlow Lite см. руководство по миграции.

Совместимые операторы, обеспечивающие покрытие операций.

Поддерживаемые модели LLM: LiteRT Hugging face и Gen API - примеры.

Инструменты LiteRT: страница инструментов — производительность, профилирование, отчеты об ошибках и т.д.