Ultralytics YOLO27 :

Bonnes pratiques pour le déploiement de modèles#

Introduction#

Le déploiement de modèles est l'étape d'un projet de vision par ordinateur qui fait passer un modèle de la phase de développement à une application concrète. Il existe différentes options de déploiement de modèles : le déploiement dans le cloud offre évolutivité et facilité d'accès, le déploiement en périphérie réduit la latence en rapprochant le modèle de la source des données, et le déploiement local garantit confidentialité et contrôle. Le choix de la bonne stratégie dépend des besoins de ton application, en équilibrant rapidité, sécurité et évolutivité.



Watch: How to Optimize and Deploy AI Models: Best Practices, Troubleshooting, and Security Considerations

Il est également important de suivre les bonnes pratiques lors du déploiement d'un modèle, car celui-ci peut avoir un impact significatif sur l'efficacité et la fiabilité de ses performances. Dans ce guide, nous nous concentrerons sur les moyens de garantir un déploiement fluide, efficace et sécurisé de ton modèle.

Options de déploiement de modèles#

Souvent, une fois qu'un modèle est entraîné, évalué et testé, il doit être converti dans des formats spécifiques pour être déployé efficacement dans différents environnements, tels que le cloud, la périphérie ou des appareils locaux.

Avec YOLO26, tu peux exporter ton modèle dans différents formats selon tes besoins de déploiement. Par exemple, l'exportation de YOLO26 vers ONNX est simple et idéale pour transférer des modèles entre frameworks. Pour découvrir davantage d'options d'intégration et garantir un déploiement fluide dans différents environnements, consulte notre catalogue d'intégrations de modèles.

Choisir un environnement de déploiement#

Le choix de l'endroit où déployer ton modèle de vision par ordinateur dépend de plusieurs facteurs. Chaque environnement présente des avantages et des difficultés spécifiques : il est donc essentiel de choisir celui qui répond le mieux à tes besoins.

Déploiement dans le cloud#

Le déploiement dans le cloud convient parfaitement aux applications qui doivent évoluer rapidement et traiter de grandes quantités de données. Des plateformes comme AWS, Google Cloud et Azure facilitent la gestion de tes modèles, de l'entraînement au déploiement. Elles proposent des services comme AWS SageMaker, Google AI Platform et Azure Machine Learning pour t'accompagner tout au long du processus.

Cependant, l'utilisation du cloud peut être coûteuse, notamment lorsque le volume de données est élevé, et tu peux rencontrer des problèmes de latence si tes utilisateurs sont éloignés des centres de données. Pour gérer les coûts et les performances, il est important d'optimiser l'utilisation des ressources et de garantir le respect des règles de confidentialité des données.

Déploiement en périphérie#

Le déploiement en périphérie convient bien aux applications qui nécessitent des réponses en temps réel et une faible latence, notamment dans les lieux où l'accès à Internet est limité ou inexistant. Le déploiement de modèles sur des appareils périphériques comme les smartphones ou les appareils IoT garantit un traitement rapide et conserve les données localement, ce qui renforce la confidentialité. Le déploiement en périphérie permet également d'économiser de la bande passante en réduisant la quantité de données envoyées vers le cloud.

Cependant, les appareils périphériques disposent souvent d'une puissance de calcul limitée : tu devras donc optimiser tes modèles. Des outils comme LiteRT et NVIDIA Jetson peuvent t'aider. Malgré ses avantages, la maintenance et la mise à jour d'un grand nombre d'appareils peuvent être difficiles.

Déploiement local#

Le déploiement local est préférable lorsque la confidentialité des données est essentielle ou lorsque l'accès à Internet est peu fiable ou inexistant. L'exécution de modèles sur des serveurs ou des ordinateurs locaux te donne un contrôle total et protège tes données. Elle peut également réduire la latence si le serveur se trouve à proximité de l'utilisateur.

Cependant, la mise à l'échelle locale peut être difficile et la maintenance chronophage. L'utilisation d'outils comme Docker pour la conteneurisation et Kubernetes pour la gestion peut rendre les déploiements locaux plus efficaces. Des mises à jour et une maintenance régulières sont nécessaires pour assurer le bon fonctionnement de l'ensemble.

Conteneurisation pour un déploiement simplifié#

La conteneurisation est une approche puissante qui regroupe ton modèle et toutes ses dépendances dans une unité standardisée appelée conteneur. Cette technique garantit des performances cohérentes dans différents environnements et simplifie le processus de déploiement.

Avantages de l'utilisation de Docker pour le déploiement de modèles#

Docker est devenu le standard du secteur pour la conteneurisation des déploiements de machine learning pour plusieurs raisons :

  • Cohérence de l'environnement : les conteneurs Docker encapsulent ton modèle et toutes ses dépendances, éliminant le problème du « ça fonctionne sur ma machine » en garantissant un comportement cohérent dans les environnements de développement, de test et de production.
  • Isolation : les conteneurs isolent les applications les unes des autres, évitant les conflits entre différentes versions de logiciels ou de bibliothèques.
  • Portabilité : les conteneurs Docker peuvent s'exécuter sur tout système prenant en charge Docker, ce qui facilite le déploiement de tes modèles sur différentes plateformes sans modification.
  • Évolutivité : les conteneurs peuvent facilement être mis à l'échelle en fonction de la demande, et des outils d'orchestration comme Kubernetes peuvent automatiser ce processus.
  • Contrôle des versions : les images Docker peuvent être versionnées, ce qui te permet de suivre les modifications et de revenir aux versions précédentes si nécessaire.

Mettre en œuvre Docker pour le déploiement de YOLO26#

Pour conteneuriser ton modèle YOLO26, tu peux créer un Dockerfile qui spécifie toutes les dépendances et configurations nécessaires. Voici un exemple de base :

FROM ultralytics/ultralytics:latest

WORKDIR /app

# Copy your model and any additional files
COPY ./models/yolo26n.pt /app/models/
COPY ./scripts /app/scripts/

# Set up any environment variables
ENV MODEL_PATH=/app/models/yolo26n.pt

# Command to run when the container starts
CMD ["python", "/app/scripts/predict.py"]

Cette approche garantit que le déploiement de ton modèle est reproductible et cohérent dans les environnements de développement, de test et de production.

Techniques d'optimisation des modèles#

L'optimisation de ton modèle de vision par ordinateur l'aide à s'exécuter efficacement, notamment lors d'un déploiement dans des environnements aux ressources limitées comme les appareils périphériques. Voici quelques techniques essentielles pour optimiser ton modèle.

Élagage des modèles#

L'élagage réduit la taille du modèle en supprimant les poids qui contribuent peu au résultat final. Il rend le modèle plus petit et plus rapide sans affecter significativement la précision. L'élagage consiste à identifier et éliminer les paramètres inutiles, ce qui produit un modèle plus léger nécessitant moins de puissance de calcul. Il est particulièrement utile pour déployer des modèles sur des appareils aux ressources limitées.

Neural network pruning workflow

Quantification des modèles#

La quantification convertit les poids et les activations du modèle d'une précision élevée (comme les flottants 32 bits) vers une précision inférieure (comme les entiers 8 bits). En réduisant la taille du modèle, elle accélère l'inférence. L'entraînement prenant en compte la quantification (QAT) est une méthode dans laquelle le modèle est entraîné en tenant compte de la quantification, ce qui préserve mieux la précision que la quantification après entraînement. En gérant la quantification pendant la phase d'entraînement, le modèle apprend à s'adapter à une précision inférieure, maintenant ses performances tout en réduisant les besoins en calcul.

Optimized model efficiency for deployment

Distillation des connaissances#

La distillation des connaissances consiste à entraîner un modèle plus petit et plus simple (l'élève) pour qu'il imite les sorties d'un modèle plus grand et plus complexe (l'enseignant). Le modèle élève apprend à approximer les prédictions de l'enseignant, ce qui produit un modèle compact qui conserve une grande partie de la précision de l'enseignant. Cette technique est utile pour créer des modèles efficaces adaptés au déploiement sur des appareils périphériques aux ressources limitées.

Knowledge distillation training process

Résolution des problèmes de déploiement#

Tu peux rencontrer des difficultés lors du déploiement de tes modèles de vision par ordinateur, mais comprendre les problèmes courants et leurs solutions peut fluidifier le processus. Voici quelques conseils généraux et bonnes pratiques de dépannage pour t'aider à résoudre les problèmes de déploiement.

Ton modèle est moins précis après le déploiement#

Constater une baisse de la précision de ton modèle après son déploiement peut être frustrant. Ce problème peut avoir différentes causes. Voici quelques étapes pour t'aider à identifier et résoudre le problème :

  • Vérifie la cohérence des données : vérifie que les données traitées par ton modèle après le déploiement sont cohérentes avec celles sur lesquelles il a été entraîné. Les différences de distribution, de qualité ou de format des données peuvent avoir un impact significatif sur les performances.
  • Valide les étapes de prétraitement : vérifie que toutes les étapes de prétraitement appliquées pendant l'entraînement le sont également de manière cohérente lors du déploiement. Cela inclut le redimensionnement des images, la normalisation des valeurs des pixels et les autres transformations de données.
  • Évalue l'environnement du modèle : vérifie que les configurations matérielles et logicielles utilisées lors du déploiement correspondent à celles utilisées pendant l'entraînement. Les différences entre les bibliothèques, les versions et les capacités matérielles peuvent introduire des écarts.
  • Surveille l'inférence du modèle : consigne les entrées et les sorties à différentes étapes du pipeline d'inférence afin de détecter les anomalies. Cela peut aider à identifier des problèmes comme la corruption des données ou une mauvaise gestion des sorties du modèle.
  • Examine l'exportation et la conversion du modèle : exporte à nouveau le modèle et vérifie que le processus de conversion préserve l'intégrité des poids et de l'architecture du modèle.
  • Teste avec un jeu de données contrôlé : déploie le modèle dans un environnement de test avec un jeu de données que tu contrôles et compare les résultats avec ceux de la phase d'entraînement. Tu pourras déterminer si le problème vient de l'environnement de déploiement ou des données.

Lors du déploiement de YOLO26, plusieurs facteurs peuvent affecter la précision du modèle. La conversion des modèles vers des formats comme TensorRT implique des optimisations telles que la quantification des poids et la fusion des couches, qui peuvent entraîner de légères pertes de précision. L'utilisation de FP16 (demi-précision) au lieu de FP32 (pleine précision) peut accélérer l'inférence, mais introduire des erreurs de précision numérique. Les contraintes matérielles, comme celles de la Jetson Nano, avec un nombre inférieur de cœurs CUDA et une bande passante mémoire réduite, peuvent également affecter les performances.

Les inférences prennent plus de temps que prévu#

Lors du déploiement de modèles de machine learning, il est important qu'ils s'exécutent efficacement. Si les inférences prennent plus de temps que prévu, cela peut affecter l'expérience utilisateur et l'efficacité de ton application. Voici quelques étapes pour t'aider à identifier et résoudre le problème :

  • Effectue des exécutions de préchauffage : les premières exécutions incluent souvent une surcharge d'initialisation qui peut fausser les mesures de latence. Effectue quelques inférences de préchauffage avant de mesurer la latence. Exclure ces premières exécutions fournit une mesure plus précise des performances du modèle.
  • Optimise le moteur d'inférence : vérifie que le moteur d'inférence est entièrement optimisé pour l'architecture spécifique de ton GPU. Utilise les derniers pilotes et versions logicielles adaptés à ton matériel pour garantir des performances et une compatibilité maximales.
  • Utilise le traitement asynchrone : le traitement asynchrone peut aider à gérer les charges de travail plus efficacement. Utilise des techniques de traitement asynchrone pour gérer plusieurs inférences simultanément, ce qui peut répartir la charge et réduire les temps d'attente.
  • Profile le pipeline d'inférence : l'identification des goulots d'étranglement dans le pipeline d'inférence peut aider à localiser la source des retards. Utilise des outils de profilage pour analyser chaque étape du processus d'inférence et identifier puis corriger les étapes qui provoquent des retards importants, comme les couches inefficaces ou les problèmes de transfert de données.
  • Utilise une précision appropriée : l'utilisation d'une précision supérieure à ce qui est nécessaire peut ralentir les temps d'inférence. Essaie une précision inférieure, comme FP16 (demi-précision), au lieu de FP32 (pleine précision). Bien que FP16 puisse réduire le temps d'inférence, garde à l'esprit qu'il peut aussi affecter la précision du modèle.

Si tu rencontres ce problème lors du déploiement de YOLO26, sache que YOLO26 propose différentes tailles de modèles, comme YOLO26n (nano) pour les appareils disposant de moins de mémoire et YOLO26x (extra-large) pour les GPU plus puissants. Choisir la bonne variante de modèle pour ton matériel peut aider à équilibrer l'utilisation de la mémoire et le temps de traitement.

Garde également à l'esprit que la taille des images d'entrée a un impact direct sur l'utilisation de la mémoire et le temps de traitement. Les résolutions plus faibles réduisent l'utilisation de la mémoire et accélèrent l'inférence, tandis que les résolutions plus élevées améliorent la précision, mais nécessitent davantage de mémoire et de puissance de calcul.

Considérations de sécurité lors du déploiement de modèles#

La sécurité est un autre aspect important du déploiement. La sécurité de tes modèles déployés est essentielle pour protéger les données sensibles et la propriété intellectuelle. Voici quelques bonnes pratiques à suivre pour sécuriser le déploiement de modèles.

Transmission sécurisée des données#

Il est très important de garantir la sécurité des données envoyées entre les clients et les serveurs afin d'empêcher leur interception ou leur accès par des parties non autorisées. Tu peux utiliser des protocoles de chiffrement comme TLS (sécurité de la couche de transport) pour chiffrer les données pendant leur transmission. Même si quelqu'un intercepte les données, il ne pourra pas les lire. Tu peux également utiliser un chiffrement de bout en bout qui protège les données de la source jusqu'à la destination, afin que personne entre les deux ne puisse y accéder.

Contrôles d'accès#

Il est essentiel de contrôler qui peut accéder à ton modèle et à ses données afin d'empêcher toute utilisation non autorisée. Utilise des méthodes d'authentification robustes pour vérifier l'identité des utilisateurs ou des systèmes qui tentent d'accéder au modèle, et envisage d'ajouter une sécurité supplémentaire avec l'authentification multifacteur (MFA). Configure un contrôle d'accès basé sur les rôles (RBAC) pour attribuer les autorisations selon les rôles des utilisateurs, afin que chacun n'accède qu'à ce dont il a besoin. Conserve des journaux d'audit détaillés pour suivre tous les accès et toutes les modifications apportées au modèle et à ses données, puis examine-les régulièrement pour repérer toute activité suspecte.

Obfuscation des modèles#

La protection de ton modèle contre la rétro-ingénierie ou les utilisations abusives peut passer par l'obfuscation du modèle. Celle-ci consiste à chiffrer les paramètres du modèle, comme les poids et les biais des réseaux neuronaux, afin de rendre le modèle difficile à comprendre ou à modifier pour les personnes non autorisées. Tu peux également obfusquer l'architecture du modèle en renommant les couches et les paramètres ou en ajoutant des couches factices, ce qui complique sa rétro-ingénierie par les attaquants. Servir le modèle dans un environnement sécurisé, comme une enclave sécurisée ou un environnement d'exécution de confiance (TEE), peut également fournir une couche de protection supplémentaire pendant l'inférence.

Conclusion et prochaines étapes#

Nous avons présenté quelques bonnes pratiques à suivre lors du déploiement de modèles de vision par ordinateur. En sécurisant les données, en contrôlant les accès et en obfusquant les détails du modèle, tu peux protéger les informations sensibles tout en maintenant le bon fonctionnement de tes modèles. Nous avons également abordé la résolution de problèmes courants comme la baisse de précision et la lenteur des inférences, en utilisant des stratégies telles que les exécutions de préchauffage, l'optimisation des moteurs, le traitement asynchrone, le profilage des pipelines et le choix d'une précision adaptée.

Après avoir déployé ton modèle, l'étape suivante consiste à surveiller, maintenir et documenter ton application. Une surveillance régulière permet de détecter et de corriger rapidement les problèmes, la maintenance maintient tes modèles à jour et opérationnels, et une bonne documentation assure le suivi de toutes les modifications et mises à jour. Ces étapes t'aideront à atteindre les objectifs de ton projet de vision par ordinateur.

FAQ#

  • Le déploiement d'un modèle de machine learning, notamment avec Ultralytics YOLO26, implique plusieurs bonnes pratiques pour garantir son efficacité et sa fiabilité. Commence par choisir l'environnement de déploiement adapté à tes besoins : cloud, périphérie ou local. Optimise ton modèle grâce à des techniques comme l'élagage, la quantification et la distillation des connaissances pour un déploiement efficace dans des environnements aux ressources limitées. Envisage la conteneurisation avec Docker pour garantir la cohérence entre les différents environnements. Enfin, vérifie que la cohérence des données et les étapes de prétraitement correspondent à la phase d'entraînement afin de préserver les performances. Tu peux également consulter les options de déploiement de modèles pour obtenir des recommandations plus détaillées.

  • La résolution des problèmes de déploiement peut être décomposée en quelques étapes clés. Si la précision de ton modèle diminue après le déploiement, vérifie la cohérence des données, valide les étapes de prétraitement et assure-toi que l'environnement matériel et logiciel correspond à celui utilisé pendant l'entraînement. Pour les temps d'inférence trop longs, effectue des exécutions de préchauffage, optimise ton moteur d'inférence, utilise le traitement asynchrone et profile ton pipeline d'inférence. Consulte le guide sur la résolution des problèmes de déploiement pour obtenir des informations détaillées sur ces bonnes pratiques.

  • L'optimisation des modèles Ultralytics YOLO26 pour les appareils périphériques consiste à utiliser des techniques comme l'élagage pour réduire la taille du modèle, la quantification pour convertir les poids vers une précision inférieure et la distillation des connaissances pour entraîner des modèles plus petits qui imitent des modèles plus grands. Ces techniques garantissent une exécution efficace du modèle sur les appareils disposant d'une puissance de calcul limitée. Des outils comme LiteRT et NVIDIA Jetson sont particulièrement utiles pour ces optimisations. Pour en savoir plus sur ces techniques, consulte notre section consacrée à l'optimisation des modèles.

  • La sécurité est primordiale lors du déploiement de modèles de machine learning. Garantissez une transmission sécurisée des données en utilisant des protocoles de chiffrement comme TLS. Mettez en place des contrôles d'accès robustes, notamment une authentification forte et un contrôle d'accès basé sur les rôles (RBAC). Les techniques d'obfuscation des modèles, comme le chiffrement des paramètres du modèle et l'exécution des modèles dans un environnement sécurisé tel qu'un environnement d'exécution de confiance (TEE), offrent une protection supplémentaire. Pour connaître les pratiques détaillées, consulte les considérations de sécurité.

  • Le choix de l'environnement de déploiement optimal pour ton modèle Ultralytics YOLO26 dépend des besoins spécifiques de ton application. Le déploiement dans le cloud offre évolutivité et facilité d'accès, ce qui le rend idéal pour les applications traitant d'importants volumes de données. Le déploiement en périphérie est préférable pour les applications à faible latence nécessitant des réponses en temps réel, avec des outils comme LiteRT. Le déploiement local convient aux scénarios exigeant une confidentialité et un contrôle stricts des données. Pour une vue d'ensemble complète de chaque environnement, consulte notre section sur le choix d'un environnement de déploiement.

Commentaires