

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.

# Exécuter des scripts avec votre propre conteneur de traitement
<a name="processing-container-run-scripts"></a>

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, consultez l’exemple de bloc-notes [scikit-learn Processing](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker_processing/scikit_learn_data_processing_and_model_evaluation). Ce bloc-notes utilise la `ScriptProcessor` classe du SDK Amazon SageMaker Python pour le traitement.

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 un end-to-end exemple guidé de ce processus, reportez-vous au carnet d'exemples de [traitement scikit-learn](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker_processing/scikit_learn_data_processing_and_model_evaluation).

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"]
   ```

1. 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
   ```

1. Configurez le `ScriptProcessor` à partir du SDK SageMaker Python pour exécuter le script. Remplacez-le *image\$1uri* par l'URI de l'image que vous avez créée et remplacez-le par l'ARN d'un Gestion des identités et des accès AWS rôle *role\$1arn* 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')
   ```

1. Exécutez le script. Remplacez-le *preprocessing.py* par le nom de votre propre script de traitement Python et remplacez-le *s3://path/to/my/input-data.csv* par le chemin 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](https://kubernetes.io/).