Prise en main du mode local - Amazon SageMaker AI

Prise en main du mode local

Les sections suivantes décrivent les étapes nécessaires pour prendre en main le mode local dans Amazon SageMaker Studio, notamment :

  • Application des conditions préalables requises

  • Paramétrage de EnableDockerAccess

  • Installation Docker

Prérequis

Pour utiliser le mode local dans les applications Studio, remplissez les conditions préalables suivantes :

  • Pour extraire des images d’un référentiel Amazon Elastic Container Registry, le compte hébergeant l’image Amazon ECR doit fournir une autorisation d’accès pour le rôle d’exécution de l’utilisateur. Le rôle d’exécution du domaine doit également autoriser l’accès à Amazon ECR.

  • Vérifiez que vous utilisez la dernière version du kit SDK Python de Studio à l’aide de la commande suivante : 

    pip install -U sagemaker
  • Pour utiliser le mode local et les fonctionnalités Docker, définissez le paramètre suivant des paramètres DockerSettings du domaine à l’aide de l’AWS Command Line Interface (AWS CLI) : 

    EnableDockerAccess : ENABLED
  • EnableDockerAccess vous permet de contrôler également si les utilisateurs du domaine peuvent utiliser le mode local. Par défaut, le mode local et les fonctionnalités Docker ne sont pas autorisés dans les applications Studio. Pour plus d’informations, consultez Paramétrage de EnableDockerAccess.

  • Installez la CLI Docker dans l’application Studio en suivant les étapes décrites dans Installation Docker.

  • Pour la Configuration Docker sans racine, assurez-vous que votre VPC dispose de points de terminaison et d’un routage appropriés configurés pour les registres Docker souhaités.

Paramétrage de EnableDockerAccess

Les sections suivantes indiquent comment définir EnableDockerAccess quand le domaine dispose d’un accès public à Internet ou s’il est en mode VPC-only.

Note

Les modifications apportées à EnableDockerAccess ne s’appliquent qu’aux applications créées après la mise à jour du domaine. Vous devez créer une nouvelle application après avoir mis à jour le domaine.

Accès public à Internet

Les exemples de commandes suivants montrent comment définir EnableDockerAccess lors de la création d’un nouveau domaine ou de la mise à jour d’un domaine existant avec un accès public à Internet :

# create new domain aws --region region \ sagemaker create-domain --domain-name domain-name \ --vpc-id vpc-id \ --subnet-ids subnet-ids \ --auth-mode IAM \ --default-user-settings "ExecutionRole=execution-role" \ --domain-settings '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}' \ --query DomainArn \ --output text # update domain aws --region region \ sagemaker update-domain --domain-id domain-id \ --domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}'

Mode VPC-only

Lors de l’utilisation d’un domaine en mode VPC-only, les demandes d’envoi (push) et d’extraction (pull) d’images Docker sont routées via le VPC du service au lieu du VPC configuré par le client. Grâce à cette fonctionnalité, les administrateurs peuvent configurer une liste de Comptes AWS approuvés auxquels les utilisateurs peuvent envoyer des demandes d’opérations d’envoi et d’extraction Amazon ECR Docker.

Si une demande d’envoi ou d’extraction d’image Docker est envoyée à un Compte AWS qui ne figure pas dans la liste des Comptes AWS approuvés, la demande échoue. Les opérations d’envoi et d’extraction Docker en dehors d’Amazon Elastic Container Registry (Amazon ECR) ne sont pas prises en charge en mode VPC-only.

Les Comptes AWS suivants sont approuvés par défaut :

  • Le compte hébergeant le domaine SageMaker AI.

  • Les comptes SageMaker AI qui hébergent les images SageMaker suivantes :

    • Les images du framework DLC

    • Les images de traitement Sklearn, Spark, XGBoost

Pour configurer une liste de Comptes AWS approuvés supplémentaires, spécifiez la valeur VpcOnlyTrustedAccounts comme suit :

aws --region region \ sagemaker update-domain --domain-id domain-id \ --domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED", "VpcOnlyTrustedAccounts": ["account-list"]}}'
Note

Lorsque la Configuration Docker sans racine est activée, VpcOnlyTrustedAccounts est ignoré et le trafic Docker est routé via la configuration de votre VPC, permettant ainsi l’accès à n’importe quel registre que votre VPC peut atteindre.

Configuration Docker sans racine

Quand RootlessDocker est activé, Studio utilise un démon Docker sans racine pour router le trafic via votre VPC. Cela améliore la sécurité et permet d’accéder à des registres Docker supplémentaires. Les principales différences avec RootlessDocker sont les suivantes :

  • Les ports de conteneur sont accessibles via l’adresse IP de la passerelle Docker (172.17.0.1) au lieu de localhost.

  • La configuration de votre VPC détermine les registres accessibles pour les opérations Docker. VpcOnlyTrustedAccounts est ignoré et le trafic Docker est routé via la configuration de votre VPC.

Pour utiliser Docker sans racine, vous devez définir à la fois EnableDockerAccess et RootlessDocker sur ENABLED pour vos paramètres DockerSettings. Par exemple, dans les exemples Paramétrage de EnableDockerAccess ci-dessus, vous pouvez modifier les paramètres de votre domaine pour qu’ils incluent :

'{"DockerSettings": {"EnableDockerAccess": "ENABLED", "RootlessDocker": "ENABLED"}}'

Installation Docker

Pour utiliser Docker, vous devez installer manuellement Docker depuis le terminal de votre application Studio. Les étapes d’installation de Docker sont différentes si le domaine a accès à Internet ou non.

Accès Internet

Si le domaine est créé avec un accès public à Internet ou en mode VPC-only avec un accès limité à Internet, procédez comme suit pour installer Docker.

  1. (Facultatif) Si votre domaine est créé en mode VPC-only avec un accès limité à Internet, créez une passerelle NAT publique avec accès au site Web Docker. Pour obtenir des instructions, consultez Passerelles NAT.

  2. Accédez au terminal de l’application Studio où vous souhaitez installer Docker.

  3. Pour renvoyer le système d’exploitation de l’application, exécutez la commande suivante à partir du terminal :

    cat /etc/os-release
  4. Installez Docker en suivant les instructions relatives au système d’exploitation de l’application dans le référentiel des exemples de mode local Amazon SageMaker AI.

    Par exemple, installez Docker sur Ubuntu en suivant le script à l’adresse https://github.com/aws-samples/amazon-sagemaker-local-mode/blob/main/sagemaker_studio_docker_cli_install/sagemaker-ubuntu-focal-docker-cli-install.sh en tenant compte des considérations suivantes :

    • Si les commandes chaînées échouent, exécutez-les une par une.

    • Studio prend en charge uniquement Docker version 20.10.X. et l’API Docker Engine version 1.41.

    • Les packages suivants ne sont pas nécessaires pour utiliser la CLI Docker dans Studio et leur installation peut être ignorée :

      • containerd.io

      • docker-ce

      • docker-buildx-plugin

    Note

    Vous n’avez pas besoin de démarrer le service Docker dans vos applications. L’instance qui héberge l’application Studio exécute le service Docker par défaut. Tous les appels d’API Docker sont automatiquement routés via le service Docker.

  5. Utilisez le socket Docker exposé pour les interactions de Docker au sein des applications Studio. Par défaut, le socket suivant est exposé :

    unix:///docker/proxy.sock

    La variable environnementale de l’application Studio suivante pour l’élément USER par défaut utilise ce socket exposé :

    DOCKER_HOST

Aucun accès à Internet

Si le domaine est créé en mode VPC-only sans accès à Internet, procédez comme suit pour installer Docker.

  1. Accédez au terminal de l’application Studio où vous souhaitez installer Docker.

  2. Exécutez la commande suivante à partir du terminal pour renvoyer le système d’exploitation de l’application :

    cat /etc/os-release
  3. Téléchargez les fichier Docker .deb sur votre ordinateur local. Pour obtenir des instructions sur le téléchargement des fichiers requis pour le système d’exploitation de l’application Studio, consultez Install Docker Engine.

    Par exemple, installez Docker à partir d’un package sur Ubuntu en suivant les étapes 1 à 4 dans Install from a package en tenant compte des considérations suivantes :

    • Installez Docker à partir d’un package. L’utilisation d’autres méthodes pour installer Docker échouera.

    • Installez les derniers packages correspondant à Docker version 20.10.X.

    • Les packages suivants ne sont pas nécessaires pour utiliser la CLI Docker dans Studio. Vous n’avez pas besoin d’installer les éléments suivants :

      • containerd.io

      • docker-ce

      • docker-buildx-plugin

    Note

    Vous n’avez pas besoin de démarrer le service Docker dans vos applications. L’instance qui héberge l’application Studio exécute le service Docker par défaut. Tous les appels d’API Docker sont automatiquement routés via le service Docker.

  4. Chargez les fichiers .deb dans le système de fichiers Amazon EFS ou dans le système de fichiers Amazon EBS de l’application.

  5. Installez manuellement les packages docker-ce-cli et docker-compose-plugin .deb depuis le terminal de l’application Studio. Pour plus d’informations et d’instructions, consultez l’étape 5 dans Install from a package sur le site Web de la documentation Docker.

  6. Utilisez le socket Docker exposé pour les interactions de Docker au sein des applications Studio. Par défaut, le socket suivant est exposé :

    unix:///docker/proxy.sock

    La variable environnementale de l’application Studio suivante pour l’élément USER par défaut utilise ce socket exposé :

    DOCKER_HOST