Conteneurs Docker pour la formation et le déploiement de modèles - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Conteneurs Docker pour la formation et le déploiement de modèles

Amazon SageMaker utilise largement les conteneurs Docker pour les tâches de création et d'exécution. SageMaker fournit des images Docker prédéfinies pour ses algorithmes intégrés et les frameworks d'apprentissage profond pris en charge utilisés pour la formation et l'inférence. L'utilisation de conteneurs vous permet d'entraîner des algorithmes de machine learning et de déployer des modèles de manière rapide et fiable à n'importe quelle échelle. Les rubriques de cette section montrent comment déployer ces conteneurs pour vos propres cas d'utilisation. Pour plus d'informations sur la façon d'apporter vos propres conteneurs pour les utiliser avec Amazon SageMaker Studio Classic, consultezApportez votre propre SageMaker image.

Scénarios d'exécution de scripts, d'apprentissage d'algorithmes ou de déploiement de modèles avec SageMaker

Amazon utilise SageMaker toujours des conteneurs Docker pour exécuter des scripts, entraîner des algorithmes et déployer des modèles. Votre niveau d'engagement avec les conteneurs dépend de votre cas d'utilisation.

L'arbre de décision suivant illustre trois scénarios principaux : Cas d'utilisation pour l'utilisation de conteneurs Docker prédéfinis avec SageMaker ; Cas d'utilisation pour étendre un conteneur Docker prédéfini ; Cas d'utilisation pour créer votre propre conteneur.

Arbre de décision pour les cas d'utilisation des conteneurs.

Cas d'utilisation de conteneurs Docker prédéfinis avec SageMaker

Tenez compte des cas d'utilisation suivants lorsque vous utilisez des conteneurs avec SageMaker :

  • SageMaker Algorithme prédéfini : utilisez l'image fournie avec l'algorithme intégré. Consultez Utiliser les algorithmes SageMaker intégrés ou les modèles préentraînés d'Amazon pour plus d'informations.

  • Modèle personnalisé avec SageMaker conteneur prédéfini : si vous entraînez ou déployez un modèle personnalisé, mais que vous utilisez un framework doté d'un SageMaker conteneur prédéfini incluant TensorFlow et PyTorch, choisissez l'une des options suivantes :

    • Si vous n'avez pas besoin d'un package personnalisé et que le conteneur inclut déjà tous les packages requis : utilisez l'image Docker prédéfinie associée à votre framework. Pour de plus amples informations, veuillez consulter Images SageMaker Docker prédéfinies.

    • Si vous avez besoin d'installer un package personnalisé dans l'un des conteneurs préconçus : confirmez que l'image Docker prédéfinie autorise un fichier requirements.txt ou étendez le conteneur préconçu en fonction des cas d'utilisation suivants.

Cas d'utilisation pour étendre un conteneur Docker préconçu

Voici des cas d'utilisation pour étendre un conteneur Docker préconçu :

  • Vous ne pouvez pas importer les dépendances : étendez l'image Docker prédéfinie associée à votre framework. Pour plus d’informations, consultez Extension d'un conteneur préconçu.

  • Vous ne pouvez pas importer les dépendances dans le conteneur préconçu et celui-ci prend en charge le fichier requirements.txt : ajoutez toutes les dépendances requises dans le fichier requirements.txt. Les frameworks suivants prennent en charge l'utilisation de requirements.txt.

Cas d'utilisation pour créer votre propre conteneur

Si vous créez ou entraînez un modèle personnalisé et que vous avez besoin d'un framework personnalisé ne comportant pas d'image prédéfinie, créez un conteneur personnalisé.

À titre d'exemple de cas d'utilisation de formation et de déploiement d'un TensorFlow modèle, le guide suivant montre comment déterminer quelle option des sections précédentes des cas d'utilisation correspond au cas.

Supposons que vous ayez les exigences suivantes pour la formation et le déploiement d'un TensorFlow modèle.

Après avoir déterminé le type de conteneur dont vous avez besoin, la liste suivante fournit des détails sur les options répertoriées précédemment.

  • Utilisez un SageMaker algorithme ou un framework intégré. Dans la plupart des cas d'utilisation, vous pouvez utiliser les algorithmes et les cadres intégrés sans vous soucier des conteneurs. Vous pouvez entraîner et déployer ces algorithmes depuis la SageMaker console, le AWS Command Line Interface (AWS CLI), un bloc-notes Python ou Amazon SageMaker Python SDK. Vous pouvez le faire en spécifiant l'algorithme ou la version du framework lors de la création de votre estimateur. Les algorithmes intégrés disponibles sont détaillés et décrits dans la rubrique Algorithmes intégrés et modèles préentraînés dans Amazon SageMaker. Pour plus d'informations sur les frameworks disponibles, consultez Frameworks et langages de ML. Pour un exemple de formation et de déploiement d'un algorithme intégré à l'aide d'un bloc-notes Jupyter exécuté dans une instance de SageMaker bloc-notes, consultez la Guide de configuration avec Amazon SageMaker rubrique.

  • Utilisez des images de SageMaker conteneur prédéfinies. Vous pouvez également utiliser les algorithmes et les frameworks intégrés à l'aide de conteneurs Docker. SageMaker fournit des conteneurs pour ses algorithmes intégrés et des images Docker prédéfinies pour certains des frameworks d'apprentissage automatique les plus courants, tels qu'ApacheMXNet, TensorFlow PyTorch, et Chainer. Pour une liste complète des SageMaker images disponibles, consultez Available Deep Learning Containers Images. Il prend également en charge les bibliothèques de machine learning telles que scikit-learn et Spark ML. Si vous utilisez Amazon SageMaker Python SDK, vous pouvez déployer les conteneurs en transmettant le conteneur complet URI à leur SageMaker SDK Estimator classe respective. Pour la liste complète des frameworks d'apprentissage profond actuellement pris en charge par SageMaker, voirImages SageMaker Docker prédéfinies pour le deep learning. Pour obtenir des informations sur les images de conteneur préconçues scikit-learn et SparkML, consultez Accès aux images Docker pour Scikit-learn et Spark ML. Pour plus d'informations sur l'utilisation des frameworks avec Amazon SageMaker Python SDK, consultez leurs rubriques respectives dansFrameworks et langages de machine learning.

  • Étendez une image de SageMaker conteneur prédéfinie. Si vous souhaitez étendre un SageMaker algorithme prédéfini ou modéliser une image Docker, vous pouvez modifier l' SageMaker image pour répondre à vos besoins. Pour un exemple, voir Extension de nos PyTorch conteneurs.

  • Adapter une image de conteneur existante : si vous souhaitez adapter une image de conteneur préexistante pour qu'elle fonctionne SageMaker, vous devez modifier le conteneur Docker pour activer le kit d' SageMaker apprentissage ou d'inférence. Pour obtenir un exemple sur la façon de générer vos propres conteneurs pour entraîner et héberger un algorithme, veuillez consulter Bring Your Own R Algorithm (Importer son propre algorithme R).

Dépannage de votre Docker conteneurs et déploiements

Les erreurs suivantes sont courantes que vous pouvez rencontrer lors de l'utilisation Docker récipients avec SageMaker. Chaque erreur est suivie d'une solution.

  • Erreur : SageMaker a perdu le Docker démon.

    Pour corriger cette erreur, redémarrez Docker à l'aide de la commande suivante.

    sudo service docker restart
  • Erreur : Le /tmp répertoire de votre Docker le conteneur n'a plus d'espace.

    Docker les conteneurs utilisent les /tmp partitions / et pour stocker le code. Ces partitions peuvent se remplir facilement lorsque des modules de code volumineux sont utilisés en mode local. SageMakerPython SDK prend en charge la spécification d'un répertoire temporaire personnalisé pour votre répertoire racine en mode local afin d'éviter ce problème.

    Pour spécifier le répertoire temporaire personnalisé dans le stockage en volume Amazon Elastic Block Store, créez un fichier au chemin suivant ~/.sagemaker/config.yaml et ajoutez la configuration suivante. Le répertoire que vous spécifiez comme container_root doit déjà exister. Le SageMaker Python n'SDKessaiera pas de le créer.

    local: container_root: /home/ec2-user/SageMaker/temp

    Avec cette configuration, le mode local utilise le répertoire /temp et non le répertoire par défaut /tmp.

  • Erreurs liées au manque d'espace sur les instances de SageMaker bloc-notes

    A Docker Un conteneur qui s'exécute sur des instances de SageMaker bloc-notes utilise le EBS volume Amazon racine de l'instance de bloc-notes par défaut. Pour résoudre les erreurs liées au manque d'espace, indiquez le chemin du EBS volume Amazon attaché à l'instance de bloc-notes dans le cadre du paramètre de volume de Docker commandes.

    docker run -v EBS-volume-path:container-path