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

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

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

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

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

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

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

  • Ускорение NPU поддерживает специализированное оборудование, объединенное единым интерфейсом. Поддержка NPU доступна через программу раннего доступа .
  • Ускорение графического процессора поддерживает устройства с поддержкой WebGL и OpenCL.
  • Ускорение ЦП поддерживает множество процессоров с помощью библиотеки XNNPack . Это уровень ускорения по умолчанию, который всегда доступен.

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

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

С ускорением GPU LiteRT Next вы можете создавать дружественные GPU буферы ввода и вывода, достигать нулевого копирования данных в памяти GPU и выполнять задачи асинхронно для максимального параллелизма. LiteRT Next использует новый и улучшенный делегат GPU, не предлагаемый LiteRT.

Запуск моделей на GPU с LiteRT требует явного создания делегата, вызовов функций и модификаций графа. С LiteRT Next просто укажите ускоритель:

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

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

ускорение НПУ

LiteRT Next предоставляет унифицированный интерфейс для использования NPU, не заставляя вас индивидуально ориентироваться в компиляторах, средах выполнения или зависимостях библиотек, специфичных для конкретного поставщика. Использование LiteRT Next для ускорения NPU позволяет избежать многих осложнений, специфичных для конкретного поставщика и устройства, повышает производительность для вывода в реальном времени и больших моделей, а также минимизирует копии памяти с использованием аппаратного буфера с нулевым копированием.

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