Comment créer votre propre conteneur de traitement (scénario avancé) - Amazon SageMaker AI

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.

Comment créer votre propre conteneur de traitement (scénario avancé)

Vous pouvez fournir à Amazon SageMaker Processing une image Docker dotée de votre propre code et de vos propres dépendances pour exécuter vos charges de travail de traitement des données, d'ingénierie des fonctionnalités et d'évaluation de modèles. Vous trouverez ci-dessous des informations sur la façon de créer votre propre conteneur de traitement.

L'exemple suivant d'un Dockerfile génère un conteneur avec les bibliothèques Python scikit-learn et pandas que vous pouvez exécuter en tant que tâche de traitement.

FROM python:3.7-slim-buster # Install scikit-learn and pandas RUN pip3 install pandas==0.25.3 scikit-learn==0.21.3 # Add a Python script and configure Docker to run it ADD processing_script.py / ENTRYPOINT ["python3", "/processing_script.py"]

Pour un exemple de script de traitement, voir Commencer SageMaker le traitement.

Créez et transférez cette image Docker vers un référentiel Amazon Elastic Container Registry (Amazon ECR) et assurez-vous que votre rôle SageMaker AI IAM peut extraire l'image depuis Amazon ECR. Vous pouvez ensuite exécuter cette image sur Amazon SageMaker Processing.

Comment Amazon SageMaker Processing configure votre conteneur de traitement

Amazon SageMaker Processing fournit des informations de configuration à votre conteneur de traitement par le biais de variables d'environnement et de deux fichiers JSON /opt/ml/config/resourceconfig.json (/opt/ml/config/processingjobconfig.jsonet) à des emplacements prédéfinis dans le conteneur.

Lorsqu'une tâche de traitement démarre, elle utilise les variables d'environnement que vous avez spécifiées avec la carte Environment dans la demande CreateProcessingJob. Le fichier /opt/ml/config/processingjobconfig.json contient des informations sur les noms d'hôte de vos conteneurs de traitement et est également spécifié dans la demande CreateProcessingJob.

L'exemple suivant illustre le format du fichier /opt/ml/config/processingjobconfig.json.

{ "ProcessingJobArn": "<processing_job_arn>", "ProcessingJobName": "<processing_job_name>", "AppSpecification": { "ImageUri": "<image_uri>", "ContainerEntrypoint": null, "ContainerArguments": null }, "Environment": { "KEY": "VALUE" }, "ProcessingInputs": [ { "InputName": "input-1", "S3Input": { "LocalPath": "/opt/ml/processing/input/dataset", "S3Uri": "<s3_uri>", "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3InputMode": "File", "S3CompressionType": "None", "S3DownloadMode": "StartOfJob" } } ], "ProcessingOutputConfig": { "Outputs": [ { "OutputName": "output-1", "S3Output": { "LocalPath": "/opt/ml/processing/output/dataset", "S3Uri": "<s3_uri>", "S3UploadMode": "EndOfJob" } } ], "KmsKeyId": null }, "ProcessingResources": { "ClusterConfig": { "InstanceCount": 1, "InstanceType": "ml.m5.xlarge", "VolumeSizeInGB": 30, "VolumeKmsKeyId": null } }, "RoleArn": "<IAM role>", "StoppingCondition": { "MaxRuntimeInSeconds": 86400 } }

Le fichier /opt/ml/config/resourceconfig.json contient des informations sur les noms d'hôte de vos conteneurs de traitement. Utilisez les noms d'hôte suivants lors de la création ou de l'exécution du code de traitement distribué.

{ "current_host": "algo-1", "hosts": ["algo-1","algo-2","algo-3"] }

N'utilisez pas les informations relatives aux noms d'hôte contenues dans /etc/hostname ou /etc/hosts, car elles peuvent être inexactes.

Les informations sur le nom d'hôte peuvent ne pas être immédiatement disponibles pour le conteneur de traitement. Nous vous recommandons d'ajouter une politique de nouvelle tentative aux opérations de résolution de nom d'hôte quand les nœuds deviennent disponibles dans le cluster.