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 ENTRYPOINT
dans un Dockerfile. Remarques :
-
Pour l'entraînement du modèle, Amazon SageMaker exécute le conteneur de la façon suivante :
docker run
image
trainSageMaker remplace toute instruction
CMD
par défaut dans un conteneur en spécifiant l'argumenttrain
après le nom de l'image. L'argumenttrain
remplace également les arguments fournis avecCMD
dans le Dockerfile. -
Dans votre Dockerfile, utilisez la forme
exec
de l'instructionENTRYPOINT
:ENTRYPOINT ["executable", "param1", "param2", ...]
Par exemple :
ENTRYPOINT ["python", "k-means-algorithm.py"]
Le formulaire
exec
de l'instructionENTRYPOINT
lance l'exécutable directement, et non en tant qu'enfant de/bin/sh
. Cela lui permet de recevoir des signaux tels queSIGTERM
etSIGKILL
à 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 commandedocker 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 envoieSIGKILL
et arrête de force les conteneurs. Si le conteneur gèreSIGTERM
normalement et s'arrête dans les 120 secondes suivant sa réception, aucunSIGKILL
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 surnvidia-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 argumentstrain
etserve
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.