So erstellen Sie Ihren eigenen Verarbeitungscontainer (Erweitertes Szenario) - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

So erstellen Sie Ihren eigenen Verarbeitungscontainer (Erweitertes Szenario)

Sie können Amazon SageMaker Processing ein Docker-Image zur Verfügung stellen, das über Ihren eigenen Code und Abhängigkeiten verfügt, um Ihre Workloads für Datenverarbeitung, Feature-Engineering und Modellevaluierung auszuführen. Im Folgenden finden Sie Informationen dazu, wie Sie Ihren eigenen Verarbeitungscontainer erstellen können.

Im folgenden Beispiel wird mithilfe einer Docker-Datei ein Container mit den Python-Bibliotheken „scikit-learn“ und „pandas“ erstellt, den Sie als Verarbeitungsauftrag ausführen können.

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

Ein Beispiel für ein Verarbeitungsskript finden Sie unter Erste Schritte mit der SageMaker Verarbeitung.

Erstellen Sie dieses Docker-Image, übertragen Sie es in ein Amazon Elastic Container Registry (AmazonECR) -Repository und stellen Sie sicher, dass Ihre SageMaker IAM Rolle das Image von Amazon ECR abrufen kann. Dann können Sie dieses Image auf Amazon SageMaker Processing ausführen.

So konfiguriert Amazon SageMaker Processing Ihren Verarbeitungscontainer

Amazon SageMaker Processing stellt Konfigurationsinformationen für Ihren Verarbeitungscontainer über Umgebungsvariablen und zwei JSON Dateien — /opt/ml/config/processingjobconfig.json und /opt/ml/config/resourceconfig.json — an vordefinierten Stellen im Container bereit.

Beim Start eines Verarbeitungsauftrags werden die Umgebungsvariablen verwendet, die Sie mit der Environment-Zuordnung in der CreateProcessingJob-Anforderung angegeben haben. Die /opt/ml/config/processingjobconfig.json-Datei enthält Informationen über die Hostnamen Ihrer Verarbeitungscontainer und sie wird auch in der CreateProcessingJob-Anforderung angegeben.

Das folgende Beispiel zeigt das Format der /opt/ml/config/processingjobconfig.json-Datei.

{ "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 } }

Die /opt/ml/config/resourceconfig.json-Datei enthält Informationen zu den Hostnamen Ihrer Verarbeitungscontainer. Verwenden Sie diese Hostnamen, wenn Sie verteilten Verarbeitungscode erstellen oder ausführen.

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

Verwenden Sie nicht die in /etc/hostname oder /etc/hosts enthaltenen Informationen zu den Hostnamen, da diese ungenau sind.

Hostnamen-Informationen sind möglicherweise nicht sofort für den Verarbeitungscontainer verfügbar. Wir empfehlen, eine Wiederholungsrichtlinie für Operationen zur Auflösung des Hostnamens hinzuzufügen, sobald Knoten im Cluster verfügbar werden.