Comment Amazon SageMaker exécute votre image d'entraînement - Amazon SageMaker

Comment Amazon SageMaker exécute votre image d'entraînement

Pour configurer un conteneur Docker et utiliser celui-ci en tant qu'exécutable, utilisez une instruction dans un Dockerfile.ENTRYPOINT Remarques :

  • Pour l'entraînement du modèle, Amazon SageMaker exécute le conteneur de la façon suivante :

    docker run image train

    SageMaker remplace toute instruction CMD par défaut dans un conteneur en spécifiant l'argument train après le nom de l'image. L'argument train remplace également les arguments fournis avec CMD dans le Dockerfile.

     

  • Dans votre Dockerfile, utilisez la forme exec de l'instruction ENTRYPOINT :

    ENTRYPOINT ["executable", "param1", "param2", ...]

    Par exemple :

    ENTRYPOINT ["python", "k-means-algorithm.py"]

    Le formulaire exec de l'instruction ENTRYPOINT lance l'exécutable directement, et non en tant qu'enfant de /bin/sh. Cela lui permet de recevoir des signaux tels que SIGTERM et SIGKILL à partir des API SageMaker. Remarques :

     

    • L'API CreateTrainingJob a une condition d'arrêt qui ordonne à SageMaker d'arrêter l'entraînement du modèle après un temps donné.

       

    • L'API StopTrainingJob émet l'équivalent de la commande docker stop, avec 2 minutes de délai d'attente, pour arrêter correctement le conteneur spécifié :

      docker stop -t120

      La commande tente d'arrêter le conteneur en cours d'exécution en envoyant un signal SIGTERM. Après le délai d'expiration de 2 minutes, l'API envoie SIGKILL et arrête de force les conteneurs. Si le conteneur gère SIGTERM normalement et s'arrête dans les 120 secondes suivant sa réception, aucun SIGKILL n'est envoyé.

    Note

    Si vous souhaitez accéder aux artefacts du modèle intermédiaire après que SageMaker a arrêté l'entraînement, ajoutez du code pour gérer l'enregistrement des artefacts dans votre gestionnaire SIGTERM.

  • Si vous prévoyez d'utiliser des périphériques GPU pour l'entraînement de modèle, assurez-vous que vos conteneurs sont compatibles avec nvidia-docker. N'incluez que la boîte à outils CUDA dans les conteneurs ; ne regroupez pas de pilote NVIDIA avec l'image. Pour plus d'informations sur nvidia-docker, consultez NVIDIA/nvidia-docker.

  • Vous ne pouvez pas utiliser l'initialiseur tini en tant que point d'entrée dans des conteneurs SageMaker, car les arguments train et serve le perturbent.

  • /opt/ml et tous les sous-répertoires sont réservés par l'entraînement SageMaker. Lors de la création de l'image Docker de votre algorithme, veillez à ne pas placer de données requises par votre algorithme en dessous, car elles risqueraient alors de ne plus être visibles au cours de l'entraînement.