La aceleración por hardware es el uso de hardware de computadora especializado para mejorar la velocidad de ejecución y la eficiencia de un modelo de IA. En el caso de LiteRT, esto implica principalmente el uso de unidades de procesamiento gráfico (GPU) o unidades de procesamiento neuronal (NPU) para la inferencia de IA, así como instrucciones vectoriales de unidades centrales de procesamiento (CPU) de uso general.
La API de Compiled Model de LiteRT controla la aceleración en dos pasos:
- Compilación: Prepara un modelo para que se ejecute con un hardware específico.
- Dispatch: Ejecuta las operaciones seleccionadas en el hardware pertinente.
La fase de compilación modifica un modelo de LiteRT con una nueva interfaz que ofrece más flexibilidad a través de complementos del compilador. La compilación del modelo se produce con anticipación (AOT), antes de que se ejecute el grafo, y adapta un grafo específico para que se ejecute en el dispositivo.
Tipos de aceleradores
LiteRT proporciona tres tipos de aceleradores: NPU, GPU y CPU.
- NPU: Interfaz unificada para Qualcomm AI Engine Direct y MediaTek NeuroPilot hoy en día.
- GPU: Backend de OpenCL más backends de WebGPU y Metal con la API de Compiled Model.
- CPU: La ejecución optimizada para XNNPACK es la predeterminada y siempre está disponible.
Estos aceleradores se pueden combinar para obtener el mejor rendimiento posible cuando algunas operaciones complejas no están disponibles en un hardware determinado. Cuando los aceleradores compiten por una operación, LiteRT usa el siguiente orden de prioridad: NPU, GPU y CPU.
Aceleración por GPU
Con la aceleración de GPU de LiteRT, puedes crear búferes de entrada y salida compatibles con la GPU, lograr una copia cero con tus datos en la memoria de la GPU y ejecutar tareas de forma asíncrona para maximizar el paralelismo. No se requiere ninguna canalización de delegados, solo especifica el acelerador en el tiempo de compilación:
// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));
Para obtener más información sobre la aceleración por GPU, consulta Aceleración por GPU con LiteRT.
Aceleración de la NPU
LiteRT proporciona una interfaz unificada para aprovechar las NPU sin obligarte a navegar de forma individual por compiladores, tiempos de ejecución o dependencias de bibliotecas específicos del proveedor. Es compatible con las NPU de Qualcomm y MediaTek para las rutas de compilación AOT y en el dispositivo.
Por lo general, usar NPUs con LiteRT implica convertir y compilar un modelo con Play for On-device AI (PODAI) y, luego, implementar el modelo con Play AI Pack y Feature Module.