
Si votre charge de travail d'apprentissage automatique s'exécute correctement à partir d'une image de conteneur et que vous n'avez pas besoin de gérer le système d'exploitation, utilisez une instance de conteneur. Si vous avez besoin d'un contrôle total du système d'exploitation, si vous souhaitez que Docker se comporte normalement ou si vous continuez à atteindre les limites au niveau du système, utilisez une machine virtuelle (VM).
Les machines virtuelles émulent des serveurs entiers, y compris leur propre système d'exploitation et leur propre noyau, ce qui leur permet d'exécuter différents systèmes d'exploitation en tant que systèmes d'exploitation invités sur le même matériel physique. Les machines virtuelles sont des environnements informatiques isolés qui émulent des ordinateurs physiques et contiennent leur propre système d'exploitation, ce qui permet d'émuler des serveurs ou des postes de travail entiers au sein d'un seul hôte. Cela signifie que vous pouvez exécuter différents systèmes d'exploitation (tels que Windows, Linux ou macOS) à des fins de développement, de test ou de compatibilité, le tout sur le même matériel physique. En revanche, les conteneurs virtualisent le système d'exploitation, partagent le noyau du système d'exploitation hôte et n'émulent pas des serveurs entiers. Cela limite les conteneurs au noyau du système d'exploitation hôte, de sorte qu'ils ne peuvent pas exécuter des systèmes d'exploitation différents comme le peuvent les machines virtuelles.
Hivenet's Compute prend en charge les deux, et vous choisissez le runtime lorsque vous créez une instance. Si vous voulez un sélecteur rapide et non spécifique au ML, commencez ici : VM ou conteneur : comment choisir en 60 secondes.
La virtualisation vous permet d'exécuter plusieurs machines virtuelles (VM) sur une seule machine physique, ce qui vous permet d'héberger différents systèmes d'exploitation et applications sur un seul serveur. Cette approche vous permet de mieux utiliser les ressources de votre système : vous pouvez exécuter différentes charges de travail sans acheter de matériel distinct pour chacune d'entre elles. La virtualisation simplifie la gestion des ressources, prend en charge les processus automatisés et réduit les coûts d'infrastructure en répartissant davantage de charges de travail sur un plus petit nombre de serveurs physiques. C'est devenu essentiel dans le développement de logiciels et évaluation des fournisseurs de calcul distribué car cela facilite grandement le test, le déploiement et la mise à l'échelle des applications. Que vous utilisiez plusieurs machines virtuelles pour différents projets ou que vous preniez en charge un environnement de développement complexe, la virtualisation vous apporte la flexibilité et l'efficacité dont vous avez besoin pour suivre le rythme des exigences actuelles en matière de développement de logiciels et de cloud computing.] (https://compute.hivenet.com/post/why-should-developers-compute-with-hivenet)..
Les conteneurs empaquettent et déploient vos applications de manière légère, portable et cohérente dans différents environnements. Contrairement aux machines virtuelles qui nécessitent un système d'exploitation complet pour chaque instance, les conteneurs partagent le noyau de votre système d'exploitation hôte pour exécuter la couche application. Vous pouvez exécuter plusieurs applications avec moins de ressources : elles démarrent rapidement et utilisent moins d'espace de stockage. Les conteneurs fonctionnent bien pour les applications cloud natives (applications conçues spécifiquement pour les environnements cloud) où vous avez besoin de portabilité et d'évolutivité, en particulier lorsque les petites et moyennes entreprises souhaitent Tirez parti des tendances de l'IA grâce au cloud GPU. Lorsque vous regroupez une application et toutes ses dépendances dans un seul conteneur, votre logiciel s'exécute de manière fiable, qu'il soit sur votre ordinateur portable, sur un serveur de test ou en production. Cette approche simplifie le déploiement et la gestion. C'est pourquoi les équipes choisissent les conteneurs lorsqu'elles souhaitent se déplacer rapidement et assurer la cohérence des choses dans différents environnements.
Une instance de conteneur est un environnement d'exécution efficace pour exécuter une application ou un service. Il démarre rapidement, reste léger et constitue généralement le moyen le plus simple d'exécuter des outils de machine learning courants. Les conteneurs sont des images exécutables légères, portables et autonomes qui contiennent des applications logicielles et leurs dépendances, ce qui les rend idéaux pour le déploiement rapide d'applications. Les conteneurs peuvent être déployés rapidement et facilement, ce qui est avantageux pour les applications nécessitant une mise à l'échelle rapide. Les applications conteneurisées sont couramment utilisées pour déployer et gérer des charges de travail de machine learning modernes, et vous pouvez déployer des conteneurs pour déployer efficacement des applications dans différents environnements.
Une machine virtuelle est un environnement Linux complet. Vous choisissez un système d'exploitation, vous vous connectez via SSH, vous installez des packages système, vous exécutez des services et vous le traitez généralement comme « votre propre serveur ». Les machines virtuelles sont souvent utilisées pour des scénarios de déploiement d'applications plus complexes ou lorsque vous devez déployer des applications nécessitant un contrôle total du système d'exploitation. Cela convient mieux lorsque votre configuration de machine learning ressemble à une machine et non à un processus unique.
Vous pouvez déployer des conteneurs pour des charges de travail légères et évolutives, ou utiliser des machines virtuelles pour des besoins de déploiement d'applications plus complexes ou plus anciennes.
Si vous voulez avoir une vue d'ensemble de ce qui a changé, lisez : Compute prend désormais en charge les machines virtuelles (VM).
Contrôle de l'environnement
Le travail de machine learning consiste rarement à « exécuter un seul binaire ». Vous finissez par avoir besoin d'outils Python, de bibliothèques système, de versions spécifiques de packages, de processus d'arrière-plan et parfois de dépendances étranges. Si vous êtes constamment bloqué par les limites de l'environnement, une machine virtuelle met fin à la friction. Les conteneurs, dont la taille est généralement inférieure à celle des machines virtuelles, sont plus rapides à déployer et à faire évoluer, et ils optimisent l'utilisation des ressources, ce qui permet une mise à l'échelle et un déploiement plus rentables.
Reproductibilité
Les conteneurs sont puissants en termes de répétabilité, car vous intégrez l'environnement dans une image et vous l'exécutez de la même manière à chaque fois. Les conteneurs utilisent des définitions statiques pour leurs environnements, ce qui contribue à garantir la cohérence et à réduire la dérive de configuration, car les conteneurs sont généralement détruits et redéployés fréquemment. Les machines virtuelles peuvent également être reproductibles, mais vous devez être plus discipliné dans la façon dont vous les configurez.
Forme du flux de travail
Certains flux de travail ML ressemblent à un seul service (un serveur d'inférence). D'autres ressemblent à un petit système (API + file d'attente + worker + UI + stockage). Les systèmes multiservices semblent généralement plus naturels sur une machine virtuelle, surtout si vous utilisez Docker Compose.
Sécurité et confort d'isolation
Une machine virtuelle vous donne une limite de « machine séparée » plus forte. Si vous opérez dans un environnement plus strict, ou si vous souhaitez simplement plus d'isolement pour avoir l'esprit tranquille, cela peut être un facteur décisif.
Contrôle des coûts
Le coût a généralement moins à voir avec le type d'exécution qu'avec le matériel et la durée pendant laquelle vous le laissez fonctionner. Cela dit, les conteneurs vous permettent souvent de « terminer » plus rapidement, ce qui peut réduire le temps perdu. Les conteneurs sont généralement nettement moins chers que les machines virtuelles en raison de leur légèreté et de leur utilisation plus efficace des ressources, ce qui en fait un choix rentable pour de nombreuses charges de travail de machine learning. Cet article se concentre sur cet aspect de la question : Tarification des machines virtuelles GPU dans le cloud : ce pour quoi vous payez réellement.
Vous êtes en train de prototyper ou d'expérimenter Commencez par une instance de conteneur. Vous arriverez à un fonctionnement plus rapide, et si l'expérience échoue (comme beaucoup le font), il ne vous restera plus à gérer un environnement en forme de serveur. Si vous découvrez par la suite que vous avez besoin de contrôler le système, la commutation est normale : Quand cela vaut la peine de passer d'une instance de conteneur à une machine virtuelle.
Vous vous entraînez ou peaufinez avec une pile connue Si votre travail de formation s'exécute déjà à partir d'une image de conteneur, tenez-vous-en à des conteneurs. Les conteneurs sont souvent utilisés pour les microservices, les applications Web et les pipelines CI/CD, et sont idéaux pour la mise à l'échelle rapide des tâches de formation en machine learning ou des API d'inférence à l'aide d'outils d'orchestration tels que Kubernetes ou Docker Swarm. Cela est particulièrement vrai lorsque vous effectuez des itérations sur du code et que vous souhaitez des exécutions répétables. Une machine virtuelle devient attrayante lorsque vous avez besoin d'outils au niveau du système d'exploitation, de dépendances spécifiques au système ou lorsque vous créez un environnement de formation durable auquel vous revenez sans cesse.
Vous faites de l'inférence Une instance de conteneur est souvent le chemin le plus simple pour l'inférence, car elle correspond bien à « exécuter un service, l'exposer, le remplacer lors de la mise à jour ». Si votre configuration d'inférence nécessite plusieurs services coopérants, des éléments de système personnalisés ou une disposition « semblable à un hôte », passez à une machine virtuelle. Les machines virtuelles sont généralement utilisées pour des applications existantes et diverses exigences en matière de système d'exploitation, et peuvent exécuter n'importe quel système d'exploitation invité, quel que soit le système d'exploitation de l'hôte.
Vous créez une pile de machine learning multiservice Lean VM. Dès que vous disposez d'une interface utilisateur Web, d'une API, d'un worker et d'une file d'attente, vous êtes dans un « petit système ». Les conteneurs prennent en charge la décomposition d'applications monolithiques en plusieurs conteneurs (microservices), améliorant ainsi l'évolutivité et la gérabilité. La gestion des applications conteneurisées est souvent effectuée à l'aide d'outils d'orchestration tels que Kubernetes, et un environnement d'exécution de conteneurs tel que Docker est essentiel pour exécuter et gérer les conteneurs. Si Docker fait partie de votre flux de travail, une machine virtuelle vous le familiarise. Commencez ici : Exécutez Docker de la manière habituelle sur une machine virtuelle de calcul. Pour configurer Docker étape par étape, utilisez : Installer Docker sur Compute. Les charges de travail conteneurisées peuvent être gérées parallèlement aux machines virtuelles pour plus de flexibilité dans des piles complexes.
Vous effectuez des benchmarks ou des comparaisons de performances Lean VM. L'analyse comparative consiste principalement à contrôler les variables. Une machine virtuelle vous fournit un système d'exploitation de base cohérent et un emplacement stable pour les outils. Si vous voulez une explication en anglais clair « qui a besoin d'une machine virtuelle GPU », utilisez : Machine virtuelle GPU : qu'est-ce que c'est et qui en a réellement besoin.
Vous êtes bloqué par des besoins au niveau du système Il s'agit du signal VM le plus clair. Si vous continuez à avoir besoin de sudo, de services système ou d'installations au niveau du système d'exploitation, vous avez terminé le débat. Passez à une machine virtuelle et continuez. Les machines virtuelles sont parfaitement adaptées aux applications existantes qui nécessitent une isolation renforcée, des systèmes d'exploitation diversifiés ou une allocation de ressources au niveau matériel. Le guide des commutateurs se trouve ici : Quand cela vaut la peine de passer d'une instance de conteneur à une machine virtuelle.
Les organisations peuvent utiliser des conteneurs pour le développement d'applications modernes tout en s'appuyant sur des machines virtuelles pour les applications existantes. Les conteneurs peuvent également être exécutés dans des machines virtuelles afin de combiner les avantages des deux technologies, tels que la portabilité et la sécurité.
Si vous ne le savez pas encore, commencez par une instance de conteneur. Les conteneurs peuvent exécuter plusieurs applications sur le même matériel de manière plus efficace que les machines virtuelles, en partageant les ressources avec d'autres conteneurs de la machine hôte. Les conteneurs sont donc idéaux pour optimiser l'utilisation des ressources et la rentabilité.
Les conteneurs sont plus légers et portables que les machines virtuelles, ce qui les rend adaptés au prototypage et à la mise à l'échelle rapides. Ils peuvent démarrer et s'arrêter en quelques secondes, tandis que les machines virtuelles mettent généralement quelques minutes à démarrer.
Passez à une machine virtuelle dès que vos notes commencent à être remplies de solutions de contournement environnementales. Si vous avez passé une heure à essayer de faire en sorte qu'un conteneur se comporte comme un serveur normal, c'est votre réponse.
Vous souhaiterez utiliser des outils et des méthodes spécifiques pour exécuter efficacement des conteneurs et des machines virtuelles. Utilisez un moteur de conteneur tel que Docker pour gérer vos charges de travail et créez des fichiers de construction statiques (tels que Dockerfiles) afin que chaque déploiement reste cohérent et reproductible. Pour les machines virtuelles, utilisez un hyperviseur pour allouer les ressources système et exécutez plusieurs machines virtuelles sur un hôte physique pour tirer le meilleur parti de votre matériel. Dans les environnements cloud, vous pouvez combiner des conteneurs et des machines virtuelles dans une configuration hybride, ce qui vous offre flexibilité, isolation et capacité d'évolutivité. En suivant ces méthodes, vous améliorerez votre infrastructure, réduirez les coûts et vous vous assurerez que les conteneurs et les machines virtuelles prennent en charge efficacement vos charges de travail.
C'est là que les gens perdent du temps. Cela vaut donc la peine de le dire clairement : « l'application fonctionne » et « je peux y accéder » sont des problèmes distincts.
Si vous testez une interface utilisateur en privé, la redirection de port SSH est souvent la solution la moins pénible. Si vous avez besoin d'un lien Web public, utilisez HTTPS. Si vous avez besoin de connexions clients directes, utilisez TCP ou UDP.
L'infrastructure d'apprentissage automatique a besoin de conteneurs et de machines virtuelles pour fonctionner correctement. Les conteneurs regroupent les modèles ML avec leurs dépendances, afin que vous puissiez les déployer rapidement et obtenir les mêmes résultats dans différents environnements. Les machines virtuelles vous offrent l'isolation et la sécurité dont ont besoin les charges de travail de machine learning sensibles ou gourmandes en ressources, en particulier lorsqu'il s'agit d'exigences de conformité ou de configurations système personnalisées. Lorsque vous utilisez des conteneurs et des machines virtuelles ensemble, votre organisation peut faire évoluer les ressources cloud en cas de besoin et exécuter des applications complexes. Les charges de travail de machine learning devenant de plus en plus importantes et complexes, vous aurez besoin à la fois de conteneurs et de machines virtuelles pour déployer, gérer et innover efficacement. Les organisations qui utilisent ces technologies répondront mieux aux demandes modernes d'apprentissage automatique et créeront de nouvelles opportunités dans le domaine du cloud computing.
Si vous souhaitez prendre une décision avec un minimum de risques, lancez la plus petite configuration capable d'exécuter votre flux de travail, effectuez un véritable test, puis décidez si vous souhaitez bénéficier de la vitesse des conteneurs ou du contrôle d'une machine virtuelle.