TensorFlow Lite est un ensemble d'outils conçus pour aider les développeurs à exécuter leurs modèles sur des appareils mobiles, intégrés et IoT afin d'apporter le machine learning sur l'appareil.
Principales fonctionnalités
- Optimisé pour le machine learning sur l'appareil, il répond à cinq contraintes principales : latence (pas d'aller-retour avec un serveur), confidentialité (aucune donnée personnelle ne quitte l'appareil), connectivité (aucune connexion Internet requise), taille (modèle réduit et taille binaire) et consommation d'énergie (inférence efficace et absence de connexions réseau).
- Compatibilité avec plusieurs plates-formes, dont les appareils Android et iOS, les appareils avec système d'exploitation Linux intégré, et les microcontrôleurs.
- Compatibilité avec de nombreux langages, dont Java, Swift, Objective-C, C++ et Python.
- Hautes performances, avec accélération matérielle et optimisation du modèle.
- Exemples de bout en bout, pour les tâches de machine learning courantes comme la classification d'images, la détection d'objets, l'analyse des postures, la réponse à des questions, la classification de texte, etc., sur plusieurs plates-formes.
Workflow de développement
La procédure ci-dessous vous présente successivement chaque étape du workflow. Elle contient également des liens pour plus d'instructions :
1. Générer un modèle TensorFlow Lite
Un modèle TensorFlow Lite est représenté dans un format portable efficace spécial, appelé FlatBuffers (identifié par l'extension de fichier .tflite). Ce format procure divers avantages par rapport au format de modèle de tampon de protocole de TensorFlow, comme une taille moindre (empreinte du code faible) et une inférence plus rapide (accès direct aux données, sans étape d'analyse/décompression supplémentaire). Il permet également à TensorFlow Lite de s'exécuter efficacement sur des appareils dont les ressources mémoire et de calcul sont limitées.
Un modèle TensorFlow Lite peut éventuellement inclure des métadonnées contenant, d'une part, une description lisible par un humain du modèle et, d'autre part, des données lisibles par une machine pour créer automatiquement des pipelines de prétraitement et de post-traitement durant l'inférence sur l'appareil. Pour en savoir plus, consultez la section Ajouter des métadonnées.
Vous pouvez générer un modèle TensorFlow Lite de plusieurs manières :
Utilisez un modèle TensorFlow Lite existant : reportez-vous à la section Exemples de projets TensorFlow Lite pour choisir un modèle existant. Les modèles peuvent éventuellement contenir des métadonnées.
Créez un modèle TensorFlow Lite : utilisez TensorFlow Lite Model Maker pour créer un modèle avec votre ensemble de données personnalisé. Par défaut, tous les modèles contiennent des métadonnées.
Convertissez un modèle TensorFlow en modèle TensorFlow Lite : utilisez l'outil de conversion TensorFlow Lite pour convertir un modèle TensorFlow en modèle TensorFlow Lite. Durant la conversion, vous pouvez appliquer des optimisations telles que la quantification pour réduire la taille et la latence du modèle sans perte de justesse (ou minime). Par défaut, aucun modèle ne contient de métadonnées.
2. Exécuter une inférence
L'inférence désigne le processus d'exécution d'un modèle TensorFlow Lite sur l'appareil pour réaliser des prédictions à partir des données d'entrée. Vous pouvez exécuter une inférence de différentes manières, en fonction du type de modèle :
Modèles sans métadonnées : utilisez l'API TensorFlow Lite Interpreter. Compatible avec diverses plates-formes et de nombreux langages, comme Java, Swift, C++, Objective-C et Python.
Modèles avec métadonnées : vous pouvez soit utiliser les API prêtes à l'emploi disponibles dans la bibliothèque de tâches TensorFlow Lite, soit créer des pipelines d'inférence personnalisés à l'aide de la bibliothèque Support TensorFlow Lite. Sur les appareils Android, les utilisateurs peuvent générer automatiquement des wrappers de code avec la liaison de modèle de ML Android Studio ou le générateur de code TensorFlow Lite. Compatible uniquement avec Java (Android) ; compatibilité avec Swift (iOS) et C++ à venir.
Sur les appareils Android et iOS, vous pouvez améliorer les performances grâce à l'accélération matérielle. Sur ces deux plates-formes, vous pouvez utiliser un délégué GPU. Sur Android uniquement, vous pouvez utiliser soit le délégué NNAPI (pour les appareils plus récents), soit le délégué Hexagon (pour les appareils plus anciens). Sur iOS, vous pouvez utiliser le délégué Core ML. Pour accepter de nouveaux accélérateurs matériels, vous pouvez définir votre propre délégué.
Premiers pas
Consultez les guides suivants en fonction de l'appareil que vous ciblez :
Android et iOS : lisez le guide de démarrage rapide pour Android et le guide de démarrage rapide pour iOS.
Appareil Linux intégré : lisez le guide de démarrage rapide pour Python pour les appareils intégrés comme Raspberry Pi et les appareils Coral avec Edge TPU, ou reportez-vous aux instructions de compilation C++ pour ARM.
Microcontrôleurs : explorez la bibliothèque TensorFlow Lite for Microcontrollers pour les microcontrôleurs et les DSP de seulement quelques kilo-octets de mémoire.
Contraintes techniques
Tous les modèles TensorFlow ne peuvent pas être convertis en modèles TensorFlow Lite. Reportez-vous à la page Compatibilité des opérateurs.
L'entraînement sur l'appareil n'est pas possible à l'heure actuelle, mais sa prise en charge figure sur notre feuille de route.