Comment utiliser le mode local du SDK Python Amazon SageMaker avec SageMaker Studio ?
Je souhaite utiliser le mode local du SDK Python Amazon SageMaker avec SageMaker Studio.
Brève description
Installez l'interface de la ligne de commande Docker de SageMaker Studio et (en option) les extensions de l'interface utilisateur Docker de SageMaker Studio pour ajouter le mode local et les fonctionnalités Docker à SageMaker Studio.
Solution
Prérequis
Avant de commencer, assurez-vous d'effectuer les étapes suivantes :
- La configuration de votre domaine SageMaker Studio est en mode VpcOnly (notez que le mode PublicInternetOnly n'est pas pris en charge).
- Votre domaine est connecté à Amazon VPC avec le nom d'hôte DNS et les options de résolution DNS activées.
- Votre rôle d'exécution du profil utilisateur de SageMaker Studio dispose des autorisations suivantes :
sagemaker:DescribeDomain sagemaker:DescribeUserProfile sagemaker:ListTags elasticfilesystem:DescribeMountTargets elasticfilesystem:DescribeMountTargetSecurityGroups elasticfilesystem:ModifyMountTargetSecurityGroups ec2:RunInstances ec2:TerminateInstances ec2:DescribeInstances ec2:DescribeInstanceTypes ec2:DescribeImages ec2:DescribeSecurityGroups ec2:DescribeNetworkInterfaces ec2:DescribeNetworkInterfaceAttribute ec2:CreateSecurityGroup ec2:AuthorizeSecurityGroupIngress ec2:ModifyNetworkInterfaceAttribute ec2:CreateTags
- Vous avez installé l'extension de l'interface de ligne de commande (CLI) Docker. (Notez que Docker CLI est requise pour utiliser l'extension de l'interface utilisateur.)
- Vous avez installé Docker Compose.
- Vous avez installé PpYAML, 5.4.1.
Créer des scripts de configuration du cycle de vie de SageMaker Studio
1. Créez un script de configuration de cycle de vie Studio pour l'application JupyterServer afin d'installer les extensions de l'une des deux manières suivantes :
Installez à la fois les extensions CLI et UI
#!/bin/bash set -ex cd ~ if cd sagemaker-studio-docker-cli-extension then git reset --hard git pull else git clone https://github.com/aws-samples/sagemaker-studio-docker-cli-extension.git cd sagemaker-studio-docker-cli-extension fi nohup ./setup.sh > docker_setup.out 2>&1 & if cd ~/sagemaker-studio-docker-ui-extension then git reset --hard git pull cd else cd git clone https://github.com/aws-samples/sagemaker-studio-docker-ui-extension.git fi nohup ~/sagemaker-studio-docker-ui-extension/setup.sh > docker_setup.out 2>&1 &
Installez uniquement l'extension CLI
#!/bin/bash set -ex cd ~ if cd sagemaker-studio-docker-cli-extension then git reset --hard git pull else git clone https://github.com/aws-samples/sagemaker-studio-docker-cli-extension.git cd sagemaker-studio-docker-cli-extension fi nohup ./setup.sh > docker_setup.out 2>&1 &
2. Créez un script de configuration de cycle de vie de SageMaker Studio pour l'application KernelGateway :
#!/bin/bash set -eux STATUS=$(python3 -c "import sagemaker_dataprep";echo $?) if [ "$STATUS" -eq 0 ] then echo 'Instance is of Type Data Wrangler' else echo 'Instance is not of Type Data Wrangler' cd ~ if cd sagemaker-studio-docker-cli-extension then git reset --hard git pull else git clone https://github.com/aws-samples/sagemaker-studio-docker-cli-extension.git cd sagemaker-studio-docker-cli-extension fi nohup ./setup.sh > docker_setup.out 2>&1 & fi
3. Depuis un terminal, encodez le contenu des deux scripts à l'aide du codage base64 :
$ LCC_JS_CONTENT=`openssl base64 -A -in <LifeCycle script file for JupyterServer>` $ LCC_KG_CONTENT=`openssl base64 -A -in <LifeCycle script file for KernelGateway>`
4. Créez des configurations de cycle de vie Studio à partir des variables d'environnement LCC_JS_CONTENT et LCC_KG_CONTENT à l'aide des commandes de l'interface de la ligne de commande (CLI) AWS suivantes :
$ aws sagemaker create-studio-lifecycle-config --studio-lifecycle-config-name sdocker-js --studio-lifecycle-config-content $LCC_JS_CONTENT --studio-lifecycle-config-app-type JupyterServer $ aws sagemaker create-studio-lifecycle-config --studio-lifecycle-config-name sdocker-kg --studio-lifecycle-config-content $LCC_KG_CONTENT --studio-lifecycle-config-app-type KernelGateway
Remarque : si vous rencontrez des erreurs lors de l'exécution des commandes de l'interface de ligne de commande, vérifiez que vous utilisez la version la plus récente de l'interface de la ligne de commande AWS. Consultez la section Résolution des erreurs d'AWS CLI – Interface de la ligne de commande AWS.
Mettre à jour le domaine Studio (facultatif)
Mettez à jour le domaine Studio pour ajouter LCC aux paramètres utilisateur par défaut :
$ aws sagemaker update-domain --domain-id <domain-id> --default-user-settings '{"JupyterServerAppSettings": {"DefaultResourceSpec": {"InstanceType": "system", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-js"}}, "KernelGatewayAppSettings": {"DefaultResourceSpec": {"InstanceType": "<default instance type>", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-kg"}}}'
Mettre à jour le profil utilisateur de Studio
Mettez à jour les paramètres de votre profil utilisateur Studio comme suit :
$ aws sagemaker update-user-profile --domain-id <domain-id> --user-profile-name <user profile> --user-settings '{"JupyterServerAppSettings ": {"DefaultResourceSpec": {"InstanceType": "system", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-js"}, "LifecycleConfigArns": ["arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-js"]}, "KernelGatewayAppSettings": {"DefaultResourceSpec": {"InstanceType": "<default instance type>", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-kg"}, "LifecycleConfigArns": ["arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-kg"]}}'
Lancez la nouvelle application JuypterServer
Supprimez toute instance en cours d'exécution de l'application JupyterServer pour terminer la configuration. Lancez ensuite la nouvelle application JupyterServer. Une fois terminé, la nouvelle application affiche un statut InService.
Si vous utilisez l'extension d'interface utilisateur, attendez qu'elle soit installée. Cela prend environ 10 minutes après le lancement de la nouvelle application JupyterServer. Une fois terminé, actualisez votre navigateur pour voir l'extension.
(Facultatif) Certains noyaux Studio sont fournis avec PyYAML>=6.0 et ne contiennent pas de packages Python pgrep ou procps. Le mode local nécessite PyYAML==5.4.1 car les versions supérieures ne disposent pas de cette fonctionnalité. Vous avez également besoin de pgrep pour supprimer un point de terminaison local. Si nécessaire, utilisez les commandes suivantes pour installer ces éléments requis à partir de votre bloc-notes Studio. Redémarrez votre noyau à la fin de l'installation.
!conda update --force -y conda !conda install -y pyyaml==5.4.1 !apt-get install -y procps
Créer un hôte Docker
Maintenant, créez un hôte Docker à l'aide de l'extension CLI que vous avez installée précédemment. Utilisez n'importe quel type d'instance Amazon Elastic Compute Cloud (EC2) (par exemple c5.xlarge) comme suit :
!sdocker create-host --instance-type c5.xlarge
Le résultat doit ressembler à ce qui suit :
Successfully launched DockerHost on instance i-xxxxxxxxxxxxxxxxx with private DNS ip-xxx-xxx-xxx-xxx.ec2.internal Waiting on docker host to be ready Docker host is ready! ip-xxx-xxx-xxx-xxx.ec2.internal Successfully created context "ip-xxx-xxx-xxx-xxx.ec2.internal " ip-xxx-xxx-xxx-xxx.ec2.internal Current context is now "ip-xxx-xxx-xxx-xxx.ec2.internal "
Si vous avez installé l'extension d'interface utilisateur, sélectionnez le type d'instance dans l'interface utilisateur, puis cliquez sur le bouton Start Host (Démarrer l'hôte). Le nouvel hôte apparaît dans la liste des Docker Hosts (Hôtes Docker), à côté d'un cercle vert.
Exécuter en mode local
Utilisez le SDK Python SageMaker en mode local.
Important : pour éviter des frais supplémentaires, fermez tous les hôtes Docker que vous avez lancés après avoir terminé avec le mode local et qui n'ont plus besoin d'utiliser Docker. Pour fermer un hôte Docker à l'aide de l'extension CLI, saisissez :
!sdocker terminate-current-host
Ou, dans l'extension de l'interface utilisateur, sous Docker Hosts (Hôtes Docker), cliquez sur l'icône Alimentation à côté de chaque hôte Docker. Cette action arrête l'hôte Docker et le supprime de la liste des Docker Hosts (Hôtes Docker).
Remarque : pour en savoir plus sur l'utilisation de l'extension CLI, consultez la section Extension CLI de Docker de SageMaker – Intégration Docker pour SageMaker Studio sur le site web GitHub.

Contenus pertinents
- demandé il y a un moislg...
- demandé il y a 3 moislg...
- demandé il y a 2 moislg...
- demandé il y a un moislg...
- demandé il y a un moislg...
- AWS OFFICIELA mis à jour il y a 4 mois
- AWS OFFICIELA mis à jour il y a 8 mois
- AWS OFFICIELA mis à jour il y a 7 mois
- AWS OFFICIELA mis à jour il y a 4 mois