Spécifications de Dockerfile - 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.

Spécifications de Dockerfile

L'image que vous spécifiez dans votre Dockerfile doit correspondre aux spécifications des sections suivantes pour que l'image soit correctement créée.

Exécution de l'image

  • Entrypoint— Nous vous recommandons d'intégrer le point d'entrée dans l'image à l'aide du Docker CMDou Entrypoint des instructions. Vous pouvez également les configurer ContainerEntrypoint et ContainerArguments les transmettre au conteneur lors de l'exécution.

  • EnvVariables— Avec Studio, vous pouvez configurer ContainerEnvironment les variables mises à la disposition d'un conteneur. La variable d'environnement est remplacée par les variables d'environnement de SageMaker. Pour vous offrir une meilleure expérience, les variables d'environnement sont généralement AWS_ et SageMaker_namespaced pour donner la priorité aux environnements de plateforme.

    Les variables d'environnement sont les suivantes :

    • AWS_REGION

    • AWS_DEFAULT_REGION

    • AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

    • SageMaker_SPACE_NAME

Spécifications pour l'utilisateur et le système de fichiers

  • WorkingDirectory— Le EBS volume Amazon correspondant à votre espace est monté sur le chemin/home/sagemaker-user. Vous ne pouvez pas modifier le chemin de montage. Utilisez les WORKDIR instructions pour définir le répertoire de travail de votre image sur un dossier qu'il contient/home/sagemaker-user.

  • UID— Le nom d'utilisateur du Docker contenant. UID=1000 est une valeur prise en charge. Vous pouvez ajouter un accès sudo à vos utilisateurs. Ils IDs sont remappés pour empêcher un processus exécuté dans le conteneur de disposer de plus de privilèges que nécessaire.

  • GID— L'identifiant de groupe du Docker contenant. GID=100 est une valeur prise en charge. Vous pouvez ajouter un accès sudo à vos utilisateurs. Ils IDs sont remappés pour empêcher un processus exécuté dans le conteneur de disposer de plus de privilèges que nécessaire.

  • Répertoires de métadonnées : /opt/ml répertoires /opt/.sagemakerintenral et utilisés par AWS. Le fichier de métadonnées /opt/ml contient des métadonnées sur des ressources telles queDomainId.

    Utilisez la commande suivante pour afficher le contenu du système de fichiers :

    cat /opt/ml/metadata/resource-metadata.json {"AppType":"JupyterLab","DomainId":"example-domain-id","UserProfileName":"example-user-profile-name,"ResourceArn":"arn:aws:sagemaker:Région AWS:111122223333;:app/domain-ID/user-ID/Jupyte rLab/default","ResourceName":"default","AppImageVersion":"current"}
  • Répertoires de journalisation : /var/logs/studio ils sont réservés aux répertoires de journalisation JupyterLab et aux extensions qui leur sont associées. Nous vous recommandons de ne pas utiliser les dossiers pour créer votre image.

Health check et URL pour les applications

  • Base URL— La base URL de la BYOI demande doit êtrejupyterlab/default. Vous ne pouvez avoir qu'une seule application et elle doit toujours être nomméedefault.

  • HealthCheck API— Il HostAgent utilise le HealthCheckAPI port 8888 pour vérifier l'état de santé de l' JupyterLab application. jupyterlab/default/api/statusest le point final du bilan de santé.

  • Home/Default URL— Les /opt/ml répertoires /opt/.sagemakerinternal et utilisés par AWS. Le fichier de métadonnées /opt/ml contient des métadonnées sur des ressources telles queDomainId.

  • Authentification — Pour activer l'authentification de vos utilisateurs, désactivez l'authentification par jeton ou mot de passe Jupyter Notebooks et autorisez toutes les origines.

Ce qui suit est un exemple Amazon Linux 2 Dockerfile répondant aux spécifications précédentes :

FROM public.ecr.aws/amazonlinux/amazonlinux:2 ARG NB_USER="sagemaker-user" ARG NB_UID="1000" ARG NB_GID="100" RUN yum install --assumeyes python3 shadow-utils && \ useradd --create-home --shell /bin/bash --gid "${NB_GID}" --uid ${NB_UID} ${NB_USER} && \ yum clean all && \ python3 -m pip install jupyterlab RUN python3 -m pip install --upgrade pip RUN python3 -m pip install --upgrade urllib3==1.26.6 USER ${NB_UID} CMD jupyter lab --ip 0.0.0.0 --port 8888 \ --ServerApp.base_url="/jupyterlab/default" \ --ServerApp.token='' \ --ServerApp.allow_origin='*'

Ce qui suit est un exemple Amazon SageMaker Distribution Dockerfile répondant aux spécifications précédentes :

FROM public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu ARG NB_USER="sagemaker-user" ARG NB_UID=1000 ARG NB_GID=100 ENV MAMBA_USER=$NB_USER USER root RUN apt-get update RUN micromamba install sagemaker-inference --freeze-installed --yes --channel conda-forge --name base USER $MAMBA_USER ENTRYPOINT ["jupyter-lab"] CMD ["--ServerApp.ip=0.0.0.0", "--ServerApp.port=8888", "--ServerApp.allow_origin=*", "--ServerApp.token=''", "--ServerApp.base_url=/jupyterlab/default"]