Accélération matérielle avec LiteRT

L'accélération matérielle consiste à utiliser du matériel informatique spécialisé pour améliorer la vitesse d'exécution et l'efficacité d'un modèle d'IA. Pour LiteRT, cela implique principalement d'utiliser des processeurs graphiques (GPU) ou des unités de traitement neuronal (NPU) pour l'inférence d'IA, ainsi que des instructions vectorielles de processeurs (CPU) à usage général.

L'API Compiled Model de LiteRT gère l'accélération en deux étapes :

  1. Compilation : préparez un modèle à exécuter avec un matériel spécifique.
  2. Envoyer : exécutez les opérations sélectionnées sur le matériel concerné.

La phase de compilation modifie un modèle LiteRT avec une nouvelle interface qui offre plus de flexibilité grâce aux plug-ins du compilateur. La compilation du modèle a lieu à l'avance (AOT, ahead-of-time), avant l'exécution du graphique, et adapte un graphique spécifique à l'exécution sur l'appareil.

Types d'accélérateurs

LiteRT fournit trois types d'accélérateurs : NPU, GPU et CPU.

  • NPU : interface unifiée pour Qualcomm AI Engine Direct et MediaTek NeuroPilot aujourd'hui.
  • GPU : backends OpenCL, WebGPU et Metal utilisant l'API Compiled Model.
  • Processeur : l'exécution optimisée par XNNPACK est la valeur par défaut et est toujours disponible.

Ces accélérateurs peuvent être combinés pour obtenir les meilleures performances possibles lorsque certaines opérations complexes ne sont pas disponibles sur un matériel donné. Lorsque des accélérateurs sont en concurrence pour une opération, LiteRT utilise l'ordre de priorité suivant : NPU, GPU, CPU.

Accélération GPU

Avec l'accélération GPU LiteRT, vous pouvez créer des tampons d'entrée et de sortie compatibles avec les GPU, obtenir une copie nulle avec vos données dans la mémoire GPU et exécuter des tâches de manière asynchrone pour maximiser le parallélisme. Aucune plomberie de délégué n'est requise. Il vous suffit de spécifier l'accélérateur au moment de la compilation :

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

Pour en savoir plus sur l'accélération GPU, consultez Accélération GPU avec LiteRT.

Accélération NPU

LiteRT fournit une interface unifiée pour exploiter les NPU sans vous obliger à parcourir individuellement les compilateurs, les environnements d'exécution ou les dépendances de bibliothèque spécifiques aux fournisseurs. Il est compatible avec les NPU Qualcomm et MediaTek pour les chemins de compilation AOT et sur l'appareil.

L'utilisation de NPU avec LiteRT implique généralement la conversion et la compilation d'un modèle avec Play for On-device AI (PODAI), ainsi que le déploiement du modèle avec le module de fonctionnalité et le pack Play AI.