Eseguire script con il proprio container di elaborazione - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Eseguire script con il proprio container di elaborazione

Puoi utilizzare gli script scikit-learn per preelaborare i dati e valutare i modelli. Per vedere come eseguire gli script scikit-learn per eseguire queste attività, consulta il notebook di esempio Elaborazione con scikit-learn. Questo notebook utilizza la ScriptProcessor classe di Amazon SageMaker Python SDK for Processing.

L'esempio seguente mostra un flusso di lavoro generale per l'utilizzo di una classe ScriptProcessor con il proprio container di elaborazione. Il flusso di lavoro mostra come creare la tua immagine, creare il container e utilizzare una classe ScriptProcessor per eseguire uno script di preelaborazione Python con il container. Il processo di elaborazione elabora i dati di input e salva i dati elaborati in Amazon Simple Storage Service (Amazon S3).

Prima di utilizzare i seguenti esempi, devi disporre dei tuoi dati di input e di uno script Python preparato per elaborare i dati. Per un esempio guidato di questo processo end-to-end, fai riferimento al taccuino di esempio scikit-learn Processing.

  1. Creare una directory Docker e aggiungere il file Docker utilizzato per creare il container di elaborazione. Installare panda e scikit-learn. È anche possibile installare le dipendenze con un comando RUN simile.

    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. Creare il container utilizzando il comando docker che crea un repository Amazon Elastic Container Registry (Amazon ECR) e invia l'immagine ad 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. Configura l'SDK ScriptProcessor di SageMaker Python per eseguire lo script. Sostituire image_uri con l'URI dell'immagine creata e sostituire role_arn con l'ARN per un ruolo AWS Identity and Access Management che ha accesso al bucket Amazon S3 di destinazione.

    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. Eseguire lo script. Sostituire preprocessing.py con il nome dello script di elaborazione Python e sostituire s3://path/to/my/input-data.csv con il percorso Amazon S3 per i dati di input.

    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')])

La stessa procedura può essere utilizzata con qualsiasi altra libreria o dipendenza di sistema. È anche possibile utilizzare immagini Docker esistenti. Ciò include le immagini eseguite su altre piattaforme come Kubernetes.