4.7 Exportation de modèles et déploiement sur l'edge
Pourquoi c'est important
Dans le chapitre précédent, nous avons expliqué comment entraîner un modèle YOLO personnalisé et exécuter avec succès l'inférence sur Jetson. À ce stade, le modèle était encore stocké au format .pt, qui est le format natif couramment utilisé dans l'écosystème PyTorch. C'est un bon point de départ car il prouve que les résultats de l'entraînement sont corrects et que le modèle peut déjà effectuer la détection d'objets sur l'appareil cible.
Dans le chapitre précédent, nous avons expliqué comment entraîner un modèle YOLO personnalisé et exécuter avec succès l'inférence sur Jetson. À ce stade, le modèle était encore stocké au format .pt, qui est le format natif couramment utilisé dans l'écosystème PyTorch. C'est un bon point de départ car il prouve que les résultats de l'entraînement sont corrects et que le modèle peut déjà effectuer la détection d'objets sur l'appareil cible.
Cependant, pouvoir exécuter un modèle sur Jetson ne signifie pas que le modèle est déjà sous sa meilleure forme de déploiement. Le fichier .pt est principalement conçu pour l'entraînement, la validation et le développement, où la flexibilité est plus importante que l'efficacité d'exécution. Pour le déploiement réel sur l'edge, en particulier sur des plateformes embarquées comme Jetson, nous nous soucions de bien plus que de la simple capacité du modèle à s'exécuter. Nous nous soucions également de sa vitesse d'exécution, de sa consommation mémoire, de la stabilité de son débit et de la manière dont il s'inscrit dans les limites de puissance et thermiques de l'appareil.
Autrement dit, un checkpoint entraîné n'est qu'une partie du pipeline de déploiement. Pour qu'un modèle YOLO soit vraiment adapté aux applications Jetson en conditions réelles, nous devons généralement le convertir dans un format plus propice au déploiement et l'optimiser davantage pour l'inférence embarquée. C'est l'étape clé qui comble le fossé entre le développement en vision par ordinateur et l'ingénierie sur l'edge.
Par conséquent, après avoir entraîné un modèle, la prochaine question importante n'est pas simplement « Peut-il s'exécuter ? », mais plutôt « Peut-il s'exécuter efficacement sur Jetson ? » Pour répondre à cette question, nous devons comprendre pourquoi l'optimisation du modèle est nécessaire.
Pourquoi avons-nous besoin d'optimiser les modèles ?
L'optimisation du modèle est nécessaire car le modèle d'origine entraîné n'est généralement pas conçu pour les contraintes du matériel embarqué. Pendant l'entraînement, l'objectif principal est d'atteindre une bonne précision et une bonne convergence. Pendant le déploiement, en revanche, l'objectif change. Nous avons besoin que le modèle fournisse une inférence rapide, une faible latence, un débit élevé, une faible utilisation mémoire et une bonne efficacité énergétique.

Cela est particulièrement important pour les appareils Jetson. Comparées aux GPU de bureau ou aux serveurs cloud, les plateformes Jetson disposent de ressources de calcul, de bande passante mémoire et de budget énergétique plus limités. Dans de nombreux scénarios d'IA en edge, tels que la robotique, les caméras intelligentes, l'inspection industrielle ou les systèmes autonomes, le modèle doit traiter les données en temps réel. Si l'inférence est trop lente, le système peut manquer des images, répondre trop tard ou ne pas répondre aux exigences de l'application.
Exécuter un modèle YOLO directement au format .pt introduit souvent une surcharge inutile du runtime PyTorch. Bien que cette approche soit pratique pour les tests et le prototypage, elle n'est pas idéale pour tirer le meilleur parti du matériel Jetson. Le modèle peut fonctionner correctement, mais peut ne pas utiliser le GPU aussi efficacement que possible. Par conséquent, la latence peut rester élevée, le débit peut être limité et l'utilisation des ressources peut être supérieure à ce qui est nécessaire.
L'optimisation du modèle aide à résoudre ces problèmes. En exportant le modèle et en l'optimisant pour l'inférence, nous pouvons améliorer la façon dont le réseau est exécuté sur le matériel cible. Cela peut inclure la réduction des opérations redondantes, la fusion de couches, la sélection de noyaux plus efficaces, la diminution de la précision de FP32 à FP16 ou INT8 et l'amélioration de l'utilisation mémoire. Ces optimisations peuvent améliorer significativement les performances de déploiement sans modifier la tâche globale du modèle.
Pour le déploiement sur Jetson, l'optimisation apporte plusieurs avantages pratiques :
1. Latence plus faible
Un modèle plus rapide signifie que chaque image d'entrée peut être traitée plus rapidement. Cela est essentiel pour les tâches en temps réel telles que la détection et le suivi d'objets.
2. Débit plus élevé
L'optimisation permet au système de traiter plus d'images par seconde, ce qui est important pour l'analyse vidéo et les applications multistream.
3. Utilisation mémoire plus faible
Les appareils embarqués disposent de ressources mémoire limitées. Un modèle optimisé peut réduire l'empreinte mémoire et améliorer la stabilité du système.
4. Meilleure efficacité énergétique
Les appareils Jetson sont souvent utilisés dans des environnements edge où la consommation d'énergie compte. Un modèle plus efficace peut aider le système à fonctionner plus longtemps et de manière plus fiable.
5. Meilleure utilisation du matériel
L'optimisation permet au modèle de mieux exploiter l'accélération GPU NVIDIA au lieu de s'appuyer fortement sur l'exécution du framework générique.
Pour ces raisons, l'optimisation du modèle n'est pas seulement une amélioration optionnelle. C'est une étape nécessaire pour transformer un modèle YOLO entraîné en une solution d'IA edge pratique capable de s'exécuter efficacement dans des conditions réelles de déploiement.
Qu'est-ce que TensorRT ?

TensorRT est le framework et runtime d'inférence de deep learning haute performance de NVIDIA. Il est spécifiquement conçu pour optimiser les réseaux neuronaux entraînés et les exécuter efficacement sur le matériel NVIDIA, y compris les appareils Jetson.
En termes simples, TensorRT est l'outil qui aide à convertir un modèle entraîné en une forme mieux adaptée au déploiement. Au lieu d'exécuter le modèle à travers un framework de deep learning généraliste, TensorRT construit un moteur d'inférence optimisé adapté au GPU NVIDIA cible. Cela permet au modèle de s'exécuter plus rapidement et plus efficacement.

Pour Jetson, TensorRT joue un rôle central dans le déploiement car il est conçu pour exploiter pleinement les capacités des GPU embarqués NVIDIA. Il effectue une variété d'optimisations, telles que :
- la fusion de couches, qui combine plusieurs opérations en un chemin d'exécution plus efficace
- la sélection automatique de noyaux, qui choisit la meilleure implémentation pour le matériel
- l'optimisation de la précision, comme l'accélération FP16 ou INT8
- l'optimisation mémoire, qui réduit les déplacements mémoire inutiles et améliore l'efficacité en runtime
En conséquence, TensorRT peut améliorer significativement les performances d'inférence d'un modèle YOLO par rapport à l'exécution directe du modèle .pt original.

Un flux de travail courant de déploiement sur Jetson ressemble à ceci :
Modèle PyTorch .pt -> Modèle ONNX -> Moteur TensorRT -> Inférence Jetson
Dans ce flux :
- le modèle
.ptest le résultat de l'entraînement - le modèle ONNX sert de format d'échange intermédiaire
- le moteur TensorRT est l'artefact de déploiement optimisé utilisé pour l'inférence sur Jetson
Ce processus montre que TensorRT n'est pas seulement un convertisseur, mais une couche clé d'optimisation et d'exécution pour le déploiement d'IA embarquée.
D'un point de vue ingénierie, TensorRT est important car il transforme un modèle simplement entraînable et testable en un modèle réellement déployable et efficace. Pour les utilisateurs Jetson, TensorRT est souvent l'étape la plus importante pour atteindre des performances temps réel pratiques.
Autrement dit, un checkpoint entraîné n'est qu'une partie du pipeline de déploiement. Pour qu'un modèle YOLO soit vraiment adapté aux applications Jetson en conditions réelles, nous devons généralement le convertir dans un format plus propice au déploiement et l'optimiser davantage pour l'inférence embarquée. C'est l'étape clé qui comble le fossé entre le développement en vision par ordinateur et l'ingénierie sur l'edge.
Formats de modèle courants
| Format | Rôle principal |
|---|---|
| PyTorch checkpoint | flexible pour l'entraînement et l'expérimentation |
| ONNX | format intermédiaire portable |
| TensorRT engine | format runtime optimisé pour le matériel NVIDIA |
Précision vs Vitesse vs Énergie
Un modèle plus précis est souvent plus grand, plus lent et consomme plus d'énergie, tandis qu'un modèle plus rapide est souvent plus léger mais moins précis. Donc en déploiement réel, nous devons trouver un équilibre adapté à l'appareil et à la tâche. Le déploiement sur l'edge est toujours une question de compromis.
Vous équilibrez souvent :
- la précision du modèle
- la vitesse d'inférence
- l'utilisation mémoire
- les limites thermiques et énergétiques
Modes de précision
La précision du modèle désigne le nombre de bits utilisés pour stocker les nombres à l'intérieur du modèle, tels que les poids et les activations. Une précision plus élevée, comme FP32, conserve plus de détails numériques, tandis qu'une précision plus faible, comme FP16 ou INT8, utilise moins de bits. Une précision plus faible peut rendre l'inférence plus rapide et utiliser moins de mémoire, ce qui est très utile sur les appareils edge comme Jetson. Mais si la précision est trop réduite, le modèle peut perdre en exactitude, il faut donc équilibrer vitesse et fiabilité.
Exemple de code
Exporter vers ONNX
yolo export model=yolo26s.pt format=onnx imgsz=640Exporter vers TensorRT sur Jetson
yolo export model=yolo26s.pt format=engine imgsz=640 half=True device=0Commandes runtime utiles pour Jetson
#turn on max mode
sudo nvpmodel -m 0
#turn on jetson clocks
sudo jetson_clocksEssayez
cd 4.7-Model-Export-and-Edge-Deployment/code
python compare_yolo26_pt_vs_engine.py --video ./cat.mp4🚀 Observez les changements de la latence d'inférence du modèle optimisé

Idées reçues fréquentes
- « Si le modèle est exporté avec succès, le déploiement est résolu. »
- L'exportation n'est qu'une étape. La validation en runtime reste importante.
- « Le modèle le plus rapide est toujours le meilleur modèle. »
- Un modèle plus rapide n'est pas utile s'il rate des cas importants.
- « INT8 est toujours mieux que FP16. »
INT8peut être performant, mais seulement si la précision reste acceptable.
Exercices / Réflexion
- Exportez un modèle entraîné en
ONNXet notez la commande. - Comparez par écrit à quoi chacun est le mieux adapté :
checkpoint,ONNX, moteurTensorRT. - Imaginez qu'un modèle est précis mais trop lent. Listez trois façons de rendre le déploiement plus pratique.
- Expliquez pourquoi le mode d'alimentation est important sur un appareil edge.
Résumé
L'exportation de modèles et le déploiement sur l'edge ne sont pas des considérations secondaires. Ils font partie du flux complet de la vision par ordinateur. Après qu'un apprenant a compris les données, l'entraînement et l'évaluation, le défi suivant est de convertir ce modèle en quelque chose de pratique pour du matériel réel.
Étape suivante suggérée
Poursuivez avec 4.8 Frameworks de pipeline de vision en temps réel.