Aceleración de hardware con LiteRT Next

La aceleración de hardware es el uso de hardware informático especializado para mejorar la velocidad de ejecución y la eficiencia de un modelo de IA. En el caso de LiteRT, esto implica principalmente usar unidades de procesamiento de gráficos (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.

LiteRT admitía la aceleración de hardware a través del uso de TFLite Delegates, que se apodera de partes del grafo LiteRT sustituyendo sus propias operaciones en el grafo. LiteRT Next mejora este proceso controlando la aceleración de hardware en dos pasos:

  1. Compilación: Prepara un modelo para que se ejecute con un hardware específico.
  2. Envío: Ejecuta operaciones seleccionadas en el hardware relevante.

La fase de compilación modifica un modelo LiteRT con una nueva interfaz que ofrece más flexibilidad a través de complementos del compilador. La compilación del modelo se realiza 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.

  • La aceleración de la NPU admite hardware especializado unificado detrás de una sola interfaz. La compatibilidad con la NPU está disponible a través de un Programa de acceso anticipado.
  • La aceleración de la GPU admite dispositivos compatibles con WebGL y OpenCL.
  • La aceleración de la CPU admite una variedad de procesadores a través del uso de la biblioteca XNNPack. Este es el nivel de aceleración predeterminado 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 de GPU

Con la aceleración de GPU de LiteRT Next, puedes crear búferes de entrada y salida compatibles con la GPU, lograr cero copias con tus datos en la memoria de la GPU y ejecutar tareas de forma asíncrona para maximizar el paralelismo. LiteRT Next usa un delegado de GPU nuevo y mejorado que LiteRT no ofrece.

Ejecutar modelos en GPU con LiteRT requiere la creación explícita de delegados, llamadas a función y modificaciones de grafos. Con LiteRT Next, solo debes especificar el acelerador:

// 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 de GPU, consulta Aceleración de GPU con aceleración de LiteRT.

Aceleración de NPU

LiteRT Next proporciona una interfaz unificada para aprovechar las NPU sin obligarte a navegar de forma individual por los compiladores, los tiempos de ejecución o las dependencias de bibliotecas específicos del proveedor. El uso de LiteRT Next para la aceleración de la NPU evita muchas complicaciones específicas del proveedor y del dispositivo, mejora el rendimiento de la inferencia de modelos grandes y en tiempo real, y minimiza las copias de memoria con el uso de búfer de hardware sin copia.

El uso de NPU con LiteRT implica convertir y compilar un modelo con Play para IA integrada en el dispositivo (PODAI) y, luego, implementarlo con el paquete de IA de Play y el módulo de funciones.