Como criar seu próprio contêiner de processamento (cenário avançado) - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como criar seu próprio contêiner de processamento (cenário avançado)

Você pode fornecer ao Amazon SageMaker Processing uma imagem do Docker que tenha seu próprio código e dependências para executar suas cargas de trabalho de processamento de dados, engenharia de recursos e avaliação de modelos. Veja a seguir informações sobre como criar seu próprio contêiner de processamento.

O exemplo a seguir de um Dockerfile cria um contêiner com as bibliotecas Python de scikit-learn e pandas que podem ser executados como um trabalho de processamento.

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 um exemplo de script de processamento, consulte Introdução ao SageMaker processamento.

Crie e envie essa imagem do Docker para um repositório do Amazon Elastic Container Registry (AmazonECR) e garanta que sua SageMaker IAM função possa extrair a imagem da Amazon. ECR Em seguida, você pode executar essa imagem no Amazon SageMaker Processing.

Como o Amazon SageMaker Processing configura seu contêiner de processamento

O Amazon SageMaker Processing fornece informações de configuração para seu contêiner de processamento por meio de variáveis de ambiente e dois JSON arquivos /opt/ml/config/resourceconfig.json/opt/ml/config/processingjobconfig.json e — em locais predefinidos no contêiner.

Quando um trabalho de processamento é iniciado, ele usa as variáveis de ambiente que você especificou com o mapa de Environment na solicitação CreateProcessingJob. O arquivo /opt/ml/config/processingjobconfig.json contém informações sobre os nomes de host dos contêineres de processamento e também é especificado na solicitação CreateProcessingJob.

O exemplo a seguir mostra o formato do arquivo /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 } }

O arquivo /opt/ml/config/resourceconfig.json contém informações sobre os nomes de host dos contêineres de processamento. Use nomes de host a seguir ao criar ou executar código de processamento distribuído.

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

Não use as informações sobre nomes de host contidos no /etc/hostname ou no /etc/hosts porque elas podem estar incorretas.

As informações do nome do host podem não estar imediatamente disponíveis para o contêiner de processamento. Recomendamos adicionar uma política de nova tentativa em operações de resolução de nomes de host à medida que os nós se tornarem disponíveis no cluster.