Glossaire

Docker

Simplifie les flux de travail en IA/ML avec Docker ! Apprends à déployer des modèles, à en assurer la reproductibilité et à les mettre à l'échelle efficacement dans tous les environnements.

Entraîne les modèles YOLO simplement
avec Ultralytics HUB

En savoir plus

Docker est une puissante plateforme de Docker, Inc. qui simplifie le développement, l'expédition et l'exécution d'applications à l'aide de conteneurs. Les conteneurs emballent une application avec tous ses composants nécessaires, tels que les bibliothèques, les outils système, le code et les environnements d'exécution. Cet emballage garantit que l'application s'exécute de manière cohérente dans différents environnements informatiques, ce qui minimise les écarts entre les configurations de développement, de test et de production. Pour les professionnels de l'apprentissage automatique (ML) et de l'intelligence artificielle (IA), Docker offre une approche rationalisée pour gérer les dépendances logicielles complexes et déployer des modèles de manière fiable et efficace. Il parvient à cette isolation et à cette portabilité grâce à la technologie de conteneurisation, qui est plus légère que les machines virtuelles traditionnelles.

Concepts de base de Docker

Comprendre Docker implique de saisir quelques composants fondamentaux :

  • Dockerfile: Un fichier texte contenant des instructions pour construire une image Docker. Il spécifie l'OS de base, les dépendances, le code et les commandes nécessaires à la mise en place de l'environnement de l'application.
  • Image Docker: Un modèle en lecture seule créé à partir d'un fichier Dockerfile. Il comprend le code de l'application, les bibliothèques, les dépendances, les outils et d'autres fichiers nécessaires à l'exécution d'une application. Les images sont utilisées pour créer des conteneurs.
  • Conteneur Docker: Une instance exécutable d'une image Docker. Les conteneurs sont des environnements isolés où les applications s'exécutent. Ils partagent le noyau du système hôte mais s'exécutent dans des espaces utilisateurs distincts, ce qui garantit la cohérence et l'isolation.
  • Hub Docker: Un service de registre basé sur le cloud fourni par Docker pour trouver et partager des images de conteneurs. Il héberge des milliers d'images publiques, y compris des images officielles pour des logiciels populaires comme Python, PyTorchet TensorFlow.

Tu peux explorer davantage ces objets et concepts Docker dans la documentation officielle.

Pertinence en matière d'IA et d'apprentissage automatique

Les projets d'IA et de ML impliquent souvent des environnements complexes avec de nombreuses dépendances(comme PyTorch ou OpenCV) et des versions de bibliothèques spécifiques. La gestion de ces dépendances et la garantie d'environnements cohérents à travers les différentes étapes (développement, test, déploiement) peuvent constituer un défi majeur. Docker permet de résoudre efficacement ces problèmes :

  • Reproductibilité: Docker garantit que l'environnement défini dans le fichier Dockerfile est identique quel que soit l'endroit où le conteneur s'exécute, ce qui facilite une recherche reproductible et un comportement fiable du modèle.
  • Gestion des dépendances: Elle isole les dépendances du projet dans le conteneur, ce qui évite les conflits entre différents projets ou avec les bibliothèques du système hôte.
  • Collaboration simplifiée: Les équipes peuvent partager des images Docker, ce qui garantit que tout le monde travaille dans le même environnement, quelle que soit la configuration de leur machine locale. Cela s'aligne bien sur les principes MLOps.
  • Déploiement efficace: Les conteneurs Docker simplifient le déploiement du modèle en emballant le modèle, les dépendances et le code de service en une seule unité portable. Cela facilite le déploiement vers diverses cibles, y compris les plateformes cloud et les appareils de périphérie.
  • Évolutivité: Les conteneurs sont légers et démarrent rapidement, ce qui les rend idéaux pour la mise à l'échelle des applications d'IA en fonction de la demande, souvent gérée par des outils d'orchestration. Cela prend en charge les besoins d'évolutivité en matière de calcul.

Applications concrètes de l'IA/ML

L'utilité de Docker est évidente dans divers scénarios d'IA/ML :

  1. Déploiement des modèles de détection d'objets: Une équipe développe un modèle de détection d'objets en utilisant Ultralytics YOLO pour surveiller la faune dans une zone de conservation. Ils utilisent Docker pour conditionner le modèleYOLO11 entraîné, les scripts d'inférence et les bibliothèques nécessaires(comme OpenCV). Cette application conteneurisée peut ensuite être déployée de manière cohérente sur divers appareils de périphérie placés sur le terrain, ce qui garantit des performances fiables malgré les différences matérielles. Ultralytics fournit un guide de démarrage rapide de Docker pour faciliter ce processus.
  2. Analyse d'images médicales évolutive: Une startup du secteur de la santé construit un outil d'IA pour l'analyse d'images médicales, peut-être pour la détection de tumeurs. Le modèle d'apprentissage profond et son API sont conditionnés dans un conteneur Docker. Cela permet de déployer l'application dans le cadre d'une architecture microservices, où plusieurs instances de conteneurs peuvent être automatiquement mises à l'échelle en fonction du nombre de demandes d'analyse, ce qui garantit une utilisation efficace des ressources et une grande réactivité.

Comparaison avec des termes similaires

Bien que Docker soit au cœur de la conteneurisation, il est souvent utilisé parallèlement à d'autres technologies :

  • Conteneurisation: Il s'agit du concept général de conditionnement des logiciels en conteneurs. Docker est la plateforme la plus populaire pour la conteneurisation, fournissant les outils pour construire, expédier et exécuter les conteneurs.
  • Kubernetes: Alors que Docker gère des conteneurs individuels sur un seul hôte, Kubernetes est une plateforme d'orchestration de conteneurs. Elle automatise le déploiement, la mise à l'échelle et la gestion des applications conteneurisées sur des grappes de machines. Considère Docker comme la création des conteneurs d'expédition et Kubernetes comme le système qui gère les navires et les ports. Tu peux en savoir plus sur le site officiel de Kubernetes.
  • Machines virtuelles (VM): Les VM assurent l'isolation en émulant des systèmes matériels entiers, y compris un système d'exploitation invité. Les conteneurs, gérés par Docker, virtualisent le système d'exploitation, en partageant le noyau hôte. Les conteneurs sont ainsi beaucoup plus légers, plus rapides et plus économes en ressources que les VM, bien que ces dernières offrent une isolation plus forte.

En tirant parti de Docker, les praticiens de l'IA et de la vision par ordinateur (VA) peuvent améliorer considérablement l'efficacité du flux de travail, la collaboration et la fiabilité des modèles déployés. Pour un aperçu général de l'objectif de Docker, des ressources telles que l'explication de Docker d'OpenSource.com offrent des introductions accessibles. Des outils comme Ultralytics HUB s'intègrent souvent aux technologies de conteneurs pour rationaliser le cycle de vie ML de bout en bout, de la formation au déploiement.

Tout lire