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 упрощает это с помощью трехступенчатого рабочего процесса:
- Конвертировать или загрузить модель
.tflite. - При желании выполнить AOT компиляцию с помощью инструментов LiteRT Python для создания AI Pack для целевых SoCs.
- Доставить 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);Основные выводы
- LiteRT NeuroPilot является важным шагом в интеграции NPU, заменяя старый делегат TFLite.
- Он сосредоточен на открытых весовых моделях и предоставляет унифицированный API для NPUs MediaTek.
- AOT компиляция критически важна для производственных развертываний LLM, так как компиляция на устройстве может занять много времени.
- На NPUs Dimensity целевые модели показывают значительное повышение производительности по сравнению с CPU и GPU.
- Упрощенные API LiteRT на C++ и Kotlin обеспечивают согласованный путь разработки для различных аппаратных ускорителей.
Switch Language
Read this article in English