<НА ГЛАВНУЮ

Google LiteRT NeuroPilot преобразует NPUs MediaTek в центр LLM

LiteRT NeuroPilot от Google улучшает NPUs MediaTek для моделей ИИ на устройстве.

Что такое LiteRT NeuroPilot Accelerator?

LiteRT — это наследник TensorFlow Lite. Он представляет собой высокопроизводительный рантайм, который работает на устройстве и выполняет модели в формате .tflite FlatBuffer, нацеливаясь на CPU, GPU и теперь NPU через унифицированный слой аппаратного ускорения.

LiteRT NeuroPilot Accelerator является новым путем для NPUs MediaTek. Он заменяет более старый делегат TFLite NeuroPilot прямой интеграцией с компилятором и рантаймом NeuroPilot. Это означает, что разработчики теперь могут создавать и развертывать LLM с использованием API Compiled Model, который поддерживает компиляцию Ahead of Time (AOT) и компиляцию на устройстве, доступные через C++ и Kotlin API.

Упрощённый рабочий процесс для фрагментированных NPUs

Исторически стеки ML на устройстве сосредотачивались на CPU и GPU. SDK NPU были специфичными для поставщиков и требовали отдельных потоков компиляции для каждой SoC, что привело к комбинаторному взрыву бинарников. LiteRT NeuroPilot Accelerator упрощает это с помощью трехступенчатого рабочего процесса:

  1. Конвертировать или загрузить модель .tflite.
  2. При желании выполнить AOT компиляцию с помощью инструментов LiteRT Python для создания AI Pack для целевых SoCs.
  3. Доставить AI Pack через Play для On-device AI (PODAI), выбрав Accelerator.NPU во время выполнения, с запасными вариантами на GPU или CPU при необходимости.

Поддержка моделей и производительность

Стек нацелен на конкретные открытые весовые модели, включая:

  • Qwen3 0.6B для генерации текста в специфических рынках.
  • Gemma-3-270M для анализа тональности и извлечения сущностей.
  • Gemma-3-1B для обобщения и рассуждений.
  • Gemma-3n E2B для многомодальных приложений, таких как перевод.

На Dimensity 9500 вариант Gemma 3n E2B предлагает более 1600 токенов в секунду в предварительном заполнении и 28 токенов в секунду в декодировании, демонстрируя эффективность NPU.

Опыт разработки с нулевыми копиями буферов

Новый C++ API упрощает разработку, вплотную интегрируясь с AHardwareBuffer Android. Это позволяет напрямую создавать входной TensorBuffer из буферов OpenGL или OpenCL, что имеет решающее значение для обработки в реальном времени без ненужных промежуточных копий.

Пример кода:

// Загрузить модель, скомпилированную для NPU
auto model = Model::CreateFromFile("model.tflite");
auto options = Options::Create();
options->SetHardwareAccelerators(kLiteRtHwAcceleratorNpu);
 
// Создать скомпилированную модель
auto compiled = CompiledModel::Create(*env, *model, *options);
 
// Выделить буферы и запустить
auto input_buffers = compiled->CreateInputBuffers();
auto output_buffers = compiled->CreateOutputBuffers();
input_buffers[0].Write<float>(input_span);
compiled->Run(input_buffers, output_buffers);
output_buffers[0].Read(output_span);

Основные выводы

  1. LiteRT NeuroPilot является важным шагом в интеграции NPU, заменяя старый делегат TFLite.
  2. Он сосредоточен на открытых весовых моделях и предоставляет унифицированный API для NPUs MediaTek.
  3. AOT компиляция критически важна для производственных развертываний LLM, так как компиляция на устройстве может занять много времени.
  4. На NPUs Dimensity целевые модели показывают значительное повышение производительности по сравнению с CPU и GPU.
  5. Упрощенные API LiteRT на C++ и Kotlin обеспечивают согласованный путь разработки для различных аппаратных ускорителей.
🇬🇧

Switch Language

Read this article in English

Switch to English