Présentation de la conversion de modèles TensorFlow

Les modèles de machine learning (ML) que vous utilisez avec LiteRT sont initialement créés et entraînés à l'aide des bibliothèques et outils TensorFlow. Une fois que vous avez créé un modèle avec TensorFlow Core, vous pouvez le convertir en un format de modèle ML plus petit et plus efficace appelé modèle LiteRT. Cette section explique comment convertir vos modèles TensorFlow au format de modèle LiteRT.

Workflow de conversion

La conversion des modèles TensorFlow au format LiteRT peut se faire de différentes manières, en fonction du contenu de votre modèle de ML. La première étape de ce processus consiste à évaluer votre modèle pour déterminer s'il peut être converti directement. Cette évaluation détermine si le contenu du modèle est compatible avec les environnements d'exécution LiteRT standards en fonction des opérations TensorFlow qu'il utilise. Si votre modèle utilise des opérations en dehors de l'ensemble compatible, vous pouvez le refactoriser ou utiliser des techniques de conversion avancées.

Le diagramme ci-dessous illustre les étapes générales de la conversion d'un modèle.

Workflow de conversion TFLite

Figure 1. Workflow de conversion LiteRT.

Les sections suivantes décrivent le processus d'évaluation et de conversion des modèles pour une utilisation avec LiteRT.

Formats de modèles d'entrée

Vous pouvez utiliser le convertisseur avec les formats de modèle d'entrée suivants :

Vous pouvez enregistrer les modèles de fonctions Keras et concrètes en tant que SavedModel et les convertir à l'aide du chemin d'accès recommandé.

Si vous disposez d'un modèle Jax, vous pouvez utiliser l'API TFLiteConverter.experimental_from_jax pour le convertir au format LiteRT. Notez que cette API est susceptible d'être modifiée en mode expérimental.

Évaluation des conversions

L'évaluation de votre modèle est une étape importante avant de tenter de le convertir. Lors de l'évaluation, vous devez déterminer si le contenu de votre modèle est compatible avec le format LiteRT. Vous devez également déterminer si votre modèle est adapté à une utilisation sur des appareils mobiles et périphériques en termes de taille des données utilisées par le modèle, de ses exigences de traitement matériel, ainsi que de la taille et de la complexité globales du modèle.

Pour de nombreux modèles, le convertisseur devrait fonctionner immédiatement. Toutefois, la bibliothèque d'opérateurs intégrée LiteRT est compatible avec un sous-ensemble d'opérateurs TensorFlow Core. Cela signifie que certains modèles peuvent nécessiter des étapes supplémentaires avant d'être convertis en LiteRT. De plus, certaines opérations compatibles avec LiteRT sont soumises à des exigences d'utilisation limitées pour des raisons de performances. Consultez le guide de compatibilité des opérateurs pour déterminer si votre modèle doit être refactorisé pour la conversion.

Conversion de modèles

Le convertisseur LiteRT utilise un modèle TensorFlow et génère un modèle LiteRT (un format FlatBuffer optimisé, identifié par l'extension de fichier .tflite). Vous pouvez charger un SavedModel ou convertir directement un modèle que vous créez dans le code.

Le convertisseur accepte trois principaux indicateurs (ou options) qui personnalisent la conversion de votre modèle :

  1. Les flags de compatibilité vous permettent de spécifier si la conversion doit autoriser les opérateurs personnalisés.
  2. Les flags d'optimisation vous permettent de spécifier le type d'optimisation à appliquer lors de la conversion. La technique d'optimisation la plus couramment utilisée est la quantification post-entraînement.
  3. Les indicateurs de métadonnées vous permettent d'ajouter des métadonnées au modèle converti, ce qui facilite la création de code wrapper spécifique à la plate-forme lors du déploiement de modèles sur des appareils.

Vous pouvez convertir votre modèle à l'aide de l'API Python ou de l'outil de ligne de commande. Consultez le guide Convertir un modèle TF pour obtenir des instructions détaillées sur l'exécution du convertisseur sur votre modèle.

En règle générale, vous convertissez votre modèle pour l'environnement d'exécution LiteRT standard ou l'environnement d'exécution des services Google Play pour LiteRT (bêta). Certains cas d'utilisation avancés nécessitent la personnalisation de l'environnement d'exécution du modèle, ce qui implique des étapes supplémentaires dans le processus de conversion. Pour en savoir plus, consultez la section Environnement d'exécution avancé de la présentation d'Android.

Suivi avancé des conversions

Si vous rencontrez des erreurs lors de l'exécution du convertisseur sur votre modèle, il est fort probable que vous ayez un problème de compatibilité des opérateurs. TensorFlow Lite n'est pas compatible avec toutes les opérations TensorFlow. Vous pouvez contourner ces problèmes en refactorisant votre modèle ou en utilisant des options de conversion avancées qui vous permettent de créer un modèle au format LiteRT modifié et un environnement d'exécution personnalisé pour ce modèle.

Étapes suivantes