Аппаратное ускорение с LiteRT

Аппаратное ускорение — это использование специализированного компьютерного оборудования для повышения скорости выполнения и эффективности модели ИИ. В LiteRT это, прежде всего, подразумевает использование графических процессоров (GPU) или нейронных процессоров (NPU) для вывода ИИ, а также векторных инструкций центральных процессоров общего назначения (CPU).

API скомпилированной модели LiteRT обрабатывает ускорение в два этапа:

  1. Компиляция: подготовка модели для работы с определенным оборудованием.
  2. Диспетчеризация: выполнение выбранных операций на соответствующем оборудовании.

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

Типы ускорителей

LiteRT предоставляет три типа ускорителей: NPU, GPU и CPU.

  • NPU: унифицированный интерфейс для Qualcomm AI Engine Direct и MediaTek NeuroPilot сегодня.
  • GPU: бэкэнд OpenCL, а также бэкэнды WebGPU и Metal с использованием API скомпилированной модели.
  • ЦП: оптимизированное для XNNPACK выполнение используется по умолчанию и всегда доступно.

Эти ускорители можно комбинировать для достижения максимальной производительности, когда некоторые сложные операции недоступны на данном оборудовании. Когда ускорители конкурируют за выполнение одной операции, LiteRT использует следующий порядок приоритета: NPU, GPU, CPU.

ускорение графического процессора

С помощью графического ускорения LiteRT вы можете создавать удобные для GPU входные и выходные буферы, добиться нулевого копирования данных в памяти GPU и выполнять задачи асинхронно для максимального параллелизма. Не требуется подключение делегатов — просто укажите ускоритель во время компиляции:

// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
    CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));

Дополнительную информацию об ускорении GPU см. в разделе Ускорение GPU с LiteRT.

ускорение NPU

LiteRT предоставляет унифицированный интерфейс для использования нейропроцессоров (NPU), избавляя вас от необходимости индивидуально разбираться в компиляторах, средах выполнения и зависимостях библиотек разных производителей. LiteRT поддерживает нейропроцессоры Qualcomm и MediaTek как для компиляции AOT, так и для компиляции на устройстве.

Использование NPU с LiteRT обычно включает в себя преобразование и компиляцию модели с помощью Play for On-device AI (PODAI) и развертывание модели с помощью Play AI Pack и Feature Module.