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 einen eigenen Verarbeitungscontainer (erweitertes Szenario)
Sie können Amazon SageMaker Processing mit einem Docker-Image bereitstellen, das Ihren eigenen Code und Ihre Abhängigkeiten enthält, um Ihre Datenverarbeitungs-, Feature-Engineering- und Modellevaluierungs-Workloads auszuführen. Im Folgenden finden Sie Informationen dazu, wie Sie Ihren eigenen Verarbeitungscontainer erstellen.
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 SageMaker
Erstellen Sie dieses Docker-Image und übertragen es in ein Amazon Elastic Container Registry (Amazon ECR)-Repository und stellen sicher, dass Ihre IAM-Rolle von SageMaker AI das Image aus Amazon ECR abrufen kann. Anschließend können Sie dieses Image auf Amazon SageMaker Processing ausführen.
So konfiguriert Amazon SageMaker Processing Ihren Verarbeitungscontainer
Amazon SageMaker Processing stellt Ihrem Verarbeitungscontainer über Umgebungsvariablen und zwei JSON-Dateien–/opt/ml/config/processingjobconfig.json und – /opt/ml/config/resourceconfig.jsonan vordefinierten Stellen im Container Konfigurationsinformationen zur Verfügung.
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.