Аппаратное ускорение — это использование специализированного компьютерного оборудования для повышения скорости выполнения и эффективности модели ИИ. В LiteRT это, прежде всего, подразумевает использование графических процессоров (GPU) или нейронных процессоров (NPU) для вывода ИИ, а также векторных инструкций центральных процессоров общего назначения (CPU).
API скомпилированной модели LiteRT обрабатывает ускорение в два этапа:
- Компиляция: подготовка модели для работы с определенным оборудованием.
- Диспетчеризация: выполнение выбранных операций на соответствующем оборудовании.
На этапе компиляции модель 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.