Cómo crear su propio contenedor de procesamiento (escenario avanzado) - 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.

Cómo crear su propio contenedor de procesamiento (escenario avanzado)

Puede proporcionar a Amazon SageMaker Processing una imagen de Docker que tenga su propio código y dependencias para ejecutar sus cargas de trabajo de procesamiento de datos, ingeniería de características y evaluación de modelos. A continuación se proporciona información sobre cómo crear su propio contenedor de procesamiento.

El siguiente ejemplo de un archiDockerfile crea un contenedor con las bibliotecas de Python scikit-learn y pandas que puede ejecutar como un trabajo de procesamiento.

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

Para ver un ejemplo de un script de procesamiento, consulte Comenzar con el procesamiento. SageMaker

Cree e inserte esta imagen de Docker en un repositorio de Amazon Elastic Container Registry (Amazon ECR) y asegúrese de que su función de IAM de SageMaker IA pueda extraer la imagen de Amazon ECR. Luego puedes ejecutar esta imagen en Amazon SageMaker Processing.

Cómo Amazon SageMaker Processing configura tu contenedor de procesamiento

Amazon SageMaker Processing proporciona información de configuración a su contenedor de procesamiento a través de variables de entorno y dos archivos JSON /opt/ml/config/resourceconfig.json (/opt/ml/config/processingjobconfig.jsony) en ubicaciones predefinidas del contenedor.

Cuando se inicia un trabajo de procesamiento, utiliza las variables de entorno que ha especificado con el mapeo de Environment en la solicitud CreateProcessingJob. El archivo /opt/ml/config/processingjobconfig.json contiene información sobre los nombres de host de los contenedores de procesamiento, y también se especifica en la solicitud CreateProcessingJob.

En el ejemplo siguiente se muestra el formato del archivo /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 } }

El archivo /opt/ml/config/resourceconfig.json contiene información sobre los nombres de host de los contenedores de procesamiento. Utilice los siguientes nombres de host al crear o ejecutar código de procesamiento distribuido.

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

No utilice la información sobre los nombres de host que se incluye en /etc/hostname o /etc/hosts porque podría ser inexacta.

Es posible que la información del nombre de host no esté disponible inmediatamente para el contenedor de procesamiento. Recomendamos agregar una política de reintentos en las operaciones de resolución de nombres de host a medida que los nodos estén disponibles en el clúster.