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.