LiteRT pour Android

LiteRT vous permet d'exécuter des modèles TensorFlow, PyTorch et JAX dans vos applications Android. Le système LiteRT fournit des environnements d'exécution prédéfinis et personnalisables pour exécuter des modèles sur Android rapidement et efficacement, y compris des options d'accélération matérielle.

Pour voir des exemples d'applications Android qui utilisent LiteRT, consultez le dépôt d'exemples LiteRT.

Modèles de machine learning

LiteRT utilise des modèles TensorFlow, PyTorch et JAX qui sont convertis en un format de modèle de machine learning plus petit, portable et efficace. Vous pouvez utiliser des modèles prédéfinis avec LiteRT sur Android, ou créer vos propres modèles et les convertir au format LiteRT.

Cette page explique comment utiliser des modèles de machine learning déjà créés. Elle ne traite pas de la création, de l'entraînement, des tests ni de la conversion de modèles. Pour en savoir plus sur la sélection, la modification, la création et la conversion de modèles de machine learning pour LiteRT, consultez la page Modèles.

Exécuter des modèles sur Android

Un modèle LiteRT exécuté dans une application Android reçoit des données, les traite et génère une prédiction en fonction de la logique du modèle. Un modèle LiteRT nécessite un environnement d'exécution spécial pour s'exécuter, et les données transmises au modèle doivent être au format de données spécifique appelé tenser. Lorsqu'un modèle traite les données (opération appelée inférence), il génère des résultats de prédiction sous forme de nouveaux tenseurs et les transmet à l'application Android afin qu'elle puisse prendre des mesures, comme afficher le résultat à un utilisateur ou exécuter une logique métier supplémentaire.

Flux d'exécution fonctionnel pour les modèles LiteRT dans les applications Android

Figure 1. Flux d'exécution fonctionnel pour les modèles LiteRT dans les applications Android.

Au niveau de la conception fonctionnelle, votre application Android a besoin des éléments suivants pour exécuter un modèle LiteRT:

  • Environnement d'exécution LiteRT pour exécuter le modèle
  • Gestionnaire d'entrée du modèle pour transformer les données en tenseurs
  • Gestionnaire de sortie du modèle pour recevoir les tensors de résultat de sortie et les interpréter comme des résultats de prédiction

Les sections suivantes décrivent comment les bibliothèques et outils LiteRT fournissent ces éléments fonctionnels.

Créer des applications avec LiteRT

Cette section décrit le chemin recommandé et le plus courant pour implémenter LiteRT dans votre application Android. Vous devez accorder la plus grande attention aux sections environnement d'exécution et bibliothèques de développement. Si vous avez développé un modèle personnalisé, consultez la section Parcours de développement avancés.

Options de l'environnement d'exécution

Vous pouvez activer un environnement d'exécution pour exécuter des modèles dans votre application Android de plusieurs façons. Voici les options recommandées:

En général, vous devez utiliser l'environnement d'exécution fourni par les services Google Play, car il est plus économe en espace que l'environnement standard, car il se charge de manière dynamique, ce qui réduit la taille de votre application. Les services Google Play utilisent également automatiquement la dernière version stable de l'environnement d'exécution LiteRT, ce qui vous offre des fonctionnalités supplémentaires et de meilleures performances au fil du temps. Si vous proposez votre application sur des appareils qui n'incluent pas les services Google Play ou si vous devez gérer de près votre environnement d'exécution ML, vous devez utiliser l'environnement d'exécution LiteRT standard. Cette option regroupe du code supplémentaire dans votre application, ce qui vous permet de mieux contrôler l'environnement d'exécution du ML dans votre application, mais au prix d'augmenter la taille de téléchargement de votre application.

Pour accéder à ces environnements d'exécution dans votre application Android, ajoutez des bibliothèques de développement LiteRT à votre environnement de développement d'application. Pour savoir comment utiliser les environnements d'exécution standards dans votre application, consultez la section suivante.

Bibliothèques

Vous pouvez accéder à l'API Interpreter à l'aide des services Google Play. Vous pouvez utiliser le noyau et les bibliothèques de support LiteRT dans votre application Android. Pour en savoir plus sur la programmation à l'aide des bibliothèques et des environnements d'exécution LiteRT, consultez la section Outils de développement pour Android.

Obtenir des modèles

L'exécution d'un modèle dans une application Android nécessite un modèle au format LiteRT. Vous pouvez utiliser des modèles prédéfinis ou en créer un et le convertir au format Lite. Pour en savoir plus sur l'obtention de modèles pour votre application Android, consultez la page Modèles de LiteRT.

Gérer les données d'entrée

Toutes les données que vous transmettez à un modèle de ML doivent être un tenseur avec une structure de données spécifique, souvent appelée forme du tenseur. Pour traiter des données avec un modèle, le code de votre application doit transformer les données de leur format natif (image, texte ou données audio, par exemple) en tenseur de la forme requise pour votre modèle.

Exécuter des inférences

Le traitement des données via un modèle pour générer un résultat de prédiction s'appelle l'inférence. L'exécution d'une inférence dans une application Android nécessite un environnement d'exécution LiteRT, un modèle et des données d'entrée.

La vitesse à laquelle un modèle peut générer une inférence sur un appareil particulier dépend de la taille des données traitées, de la complexité du modèle et des ressources de calcul disponibles, telles que la mémoire et le processeur, ou les processeurs spécialisés appelés accélérateurs. Les modèles de machine learning peuvent s'exécuter plus rapidement sur ces processeurs spécialisés tels que les processeurs graphiques (GPU) et les Tensor Processing Units (TPU), à l'aide de pilotes matériels LiteRT appelés délégués. Pour en savoir plus sur les délégués et l'accélération matérielle du traitement du modèle, consultez la présentation de l'accélération matérielle.

Gérer les résultats de sortie

Les modèles génèrent des résultats de prédiction sous forme de tenseurs, qui doivent être gérés par votre application Android en prenant une action ou en affichant un résultat à l'utilisateur. Les résultats de sortie du modèle peuvent être aussi simples qu'un nombre correspondant à un seul résultat (0 = chien, 1 = chat, 2 = oiseau) pour une classification d'image, ou beaucoup plus complexes, comme plusieurs cadres de délimitation pour plusieurs objets classés dans une image, avec des niveaux de confiance de prédiction compris entre 0 et 1.

Parcours de développement avancés

Lorsque vous utilisez des modèles LiteRT plus sophistiqués et personnalisés, vous devrez peut-être utiliser des approches de développement plus avancées que celles décrites ci-dessus. Les sections suivantes décrivent des techniques avancées pour exécuter des modèles et les développer pour LiteRT dans les applications Android.

Environnements d'exécution avancés

En plus des environnements d'exécution standard et des environnements d'exécution des services Google Play pour LiteRT, vous pouvez utiliser d'autres environnements d'exécution avec votre application Android. L'utilisation la plus probable de ces environnements est si vous disposez d'un modèle de machine learning qui utilise des opérations de ML qui ne sont pas compatibles avec l'environnement d'exécution standard pour LiteRT.

Le runtime Flex LiteRT vous permet d'inclure des opérateurs spécifiques requis pour votre modèle. En tant qu'option avancée pour exécuter votre modèle, vous pouvez créer LiteRT pour Android afin d'inclure les opérateurs et les autres fonctionnalités requises pour exécuter votre modèle de machine learning TensorFlow. Pour en savoir plus, consultez Créer LiteRT pour Android.

API C et C++

LiteRT fournit également une API pour exécuter des modèles à l'aide de C et C++. Si votre application utilise le NDK Android, nous vous recommandons d'utiliser cette API. Vous pouvez également envisager d'utiliser cette API si vous souhaitez pouvoir partager du code entre plusieurs plates-formes. Pour en savoir plus sur cette option de développement, consultez la page Outils de développement.

Exécution de modèles basée sur un serveur

En règle générale, vous devez exécuter des modèles dans votre application sur un appareil Android pour profiter d'une latence réduite et d'une meilleure confidentialité des données pour vos utilisateurs. Toutefois, il existe des cas où exécuter un modèle sur un serveur cloud, en dehors de l'appareil, est une meilleure solution. Par exemple, si vous disposez d'un grand modèle qui ne se compresse pas facilement à une taille adaptée aux appareils Android de vos utilisateurs, ou qui ne peut pas être exécuté avec des performances raisonnables sur ces appareils. Cette approche peut également être votre solution préférée si les performances cohérentes du modèle sur une large gamme d'appareils sont une priorité absolue.

Google Cloud propose une suite complète de services pour exécuter des modèles d'IA. Pour en savoir plus, consultez la page Produits d'IA et de machine learning de Google Cloud.

Développement et optimisation de modèles personnalisés

Les chemins de développement plus avancés incluront probablement le développement de modèles de machine learning personnalisés et l'optimisation de ces modèles pour les utiliser sur des appareils Android. Si vous prévoyez de créer des modèles personnalisés, pensez à appliquer des techniques de quantification aux modèles pour réduire les coûts de mémoire et de traitement. Pour en savoir plus sur la création de modèles hautes performances à utiliser avec LiteRT, consultez les bonnes pratiques en matière de performances dans la section "Modèles".