Exécuter des scripts avec votre propre conteneur de traitement - Amazon SageMaker

Exécuter des scripts avec votre propre conteneur de traitement

Vous pouvez utiliser des scripts scikit-learn pour prétraiter les données et évaluer vos modèles. Pour savoir comment exécuter des scripts scikit-learn pour effectuer ces tâches, veuillez consulter l'exemple de bloc-notes scikit-learn Processing. Ce bloc-notes utilise la classe ScriptProcessor à partir du SDK Amazon SageMaker Python for Processing.

L'exemple suivant montre un flux de travail général pour utiliser une classe ScriptProcessor avec votre propre conteneur de traitement. Le flux de travail montre comment créer votre propre image, créer votre conteneur et utiliser une classe ScriptProcessor pour exécuter un script de prétraitement Python avec le conteneur. La tâche de traitement traite vos données d'entrée et enregistre les données traitées dans Amazon Simple Storage Service (Amazon S3).

Avant d'utiliser les exemples suivants, vous devez disposer de vos propres données d'entrée et d'un script Python préparé pour traiter vos données. Pour obtenir un exemple guidé de bout en bout de ce processus, reportez-vous à l'exemple de bloc-notes scikit-learn Processing.

  1. Créez un répertoire Docker et ajoutez le fichier Dockerfile utilisé pour créer le conteneur de traitement. Installez-y des pandas et scikit-learn. (Vous pouvez également installer vos propres dépendances avec une commande RUN similaire.)

    mkdir docker %%writefile docker/Dockerfile FROM python:3.7-slim-buster RUN pip3 install pandas==0.25.3 scikit-learn==0.21.3 ENV PYTHONUNBUFFERED=TRUE ENTRYPOINT ["python3"]
  2. Créez le conteneur à l'aide de la commande docker, créez un référentiel Amazon Elastic Container Registry (Amazon ECR) et envoyez l'image à Amazon ECR.

    import boto3 account_id = boto3.client('sts').get_caller_identity().get('Account') region = boto3.Session().region_name ecr_repository = 'sagemaker-processing-container' tag = ':latest' processing_repository_uri = '{}.dkr.ecr.{}.amazonaws.com/{}'.format(account_id, region, ecr_repository + tag) # Create ECR repository and push docker image !docker build -t $ecr_repository docker !aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {account_id}.dkr.ecr.{region}.amazonaws.com !aws ecr create-repository --repository-name $ecr_repository !docker tag {ecr_repository + tag} $processing_repository_uri !docker push $processing_repository_uri
  3. Configurez le ScriptProcessor à partir du SDK SageMaker Python pour exécuter le script. Remplacez image_uri par l'URI de l'image que vous avez créée et role_arn par l'ARN pour un rôle AWS Identity and Access Management ayant accès à votre compartiment Amazon S3 cible.

    from sagemaker.processing import ScriptProcessor, ProcessingInput, ProcessingOutput script_processor = ScriptProcessor(command=['python3'], image_uri='image_uri', role='role_arn', instance_count=1, instance_type='ml.m5.xlarge')
  4. Exécutez le script. Remplacez preprocessing.py par le nom de votre propre script de traitement Python, et remplacez s3: //path/to/my/input-data.csv par le chemin d'accès Amazon S3 vers vos données d'entrée.

    script_processor.run(code='preprocessing.py', inputs=[ProcessingInput( source='s3://path/to/my/input-data.csv', destination='/opt/ml/processing/input')], outputs=[ProcessingOutput(source='/opt/ml/processing/output/train'), ProcessingOutput(source='/opt/ml/processing/output/validation'), ProcessingOutput(source='/opt/ml/processing/output/test')])

Vous pouvez utiliser la même procédure avec n'importe quelle autre bibliothèque ou dépendance système. Vous pouvez également utiliser des images Docker existantes. Cela inclut les images que vous exécutez sur d'autres plateformes telles que Kubernetes.