Ejecutar scripts con su propio contenedor de procesamiento - Amazon SageMaker AI

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejecutar scripts con su propio contenedor de procesamiento

Puede usar scripts de scikit-learn para preprocesar datos y evaluar sus modelos. Para saber cómo ejecutar scripts de scikit-learn para realizar estas tareas, consulte el cuaderno de muestras de Procesamiento de scikit-learn. Este cuaderno usa la clase ScriptProcessor deAmazon SageMaker Python SDK para el procesamiento.

El siguiente ejemplo muestra un flujo de trabajo general para usar una clase ScriptProcessor con su propio contenedor de procesamiento. El flujo de trabajo muestra cómo crear su propia imagen, construir su contenedor y usar una clase ScriptProcessor para ejecutar un guión de preprocesamiento de Python con el contenedor. El trabajo de procesamiento procesa los datos de entrada y guarda los datos procesados en Amazon Simple Storage Service (Amazon S3).

Antes de usar los siguientes ejemplos, debe tener sus propios datos de entrada y un guión de Python preparado para procesar los datos. Para ver un ejemplo guiado de principio a fin de este proceso, consulte el cuaderno de muestras de Procesamiento de scikit-learn.

  1. Cree un directorio de Docker y agregue el archivo Dockerfile utilizado para crear el contenedor de procesamiento. Instale pandas y scikit-learn en él. (También puede instalar sus propias dependencias con un comando RUN similar.)

    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. Cree el contenedor mediante el comando docker, cree un repositorio de Amazon Elastic Container Registry (Amazon ECR) y envíe la imagen a 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. Configure el ScriptProcessor desde el SDK de SageMaker Python para ejecutar el guión. Sustituya image_uri por el URI de la imagen que haya creado y sustituya role_arn por el ARN de un rol AWS Identity and Access Management que tenga acceso a su bucket de Amazon S3 de destino.

    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. Ejecute el guión. Sustituya preprocessing.py por el nombre de su propio guión de procesamiento de Python y sustituya s3://path/to/my/input-data.csv por la ruta de Amazon S3 a los datos de entrada.

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

Puede usar el mismo procedimiento con otra dependencia de biblioteca o de sistema. También puede utilizar las imágenes de Docker existentes. Esto incluye las imágenes que ejecute en otras plataformas, como Kubernetes.