Wie behebe ich Probleme, wenn ich meinen benutzerdefinierten Container für Schulungen oder Schlussfolgerungen zu Amazon SageMaker bringe?

Lesedauer: 4 Minute
0

Ich möchte Probleme beheben, wenn ich meinen benutzerdefinierten Container für Schulungen oder Schlussfolgerungen zu Amazon SageMaker bringe.

Kurzbeschreibung

Sie können Ihre Container-Images in SageMaker mit einem der folgenden Methoden anpassen:

Erweitern Sie einen vorgefertigten SageMaker-Container: Verwenden Sie diesen Ansatz, wenn Sie Ihre Umgebung oder Ihr Framework anpassen müssen, indem Sie zusätzliche Funktionen hinzufügen. Bei diesem Ansatz müssen Sie das Container-Image nicht von Grund auf neu erstellen, da die Deep-Learning-Bibliotheken bereits vordefiniert sind.

Bringen Sie Ihren eigenen Container mit: Verwenden Sie diesen Ansatz, wenn Sie bereits ein vorhandenes Bild für die Verarbeitung von Daten, Modelltraining oder Echtzeit-Inferenz mit zusätzlichen Funktionen und Sicherheitsanforderungen haben, die derzeit nicht von vorgefertigten SageMaker-Images unterstützt werden.

Erstellen Sie ein Container-Image von Grund auf neu: Wenn Sie einen benutzerdefinierten Algorithmus haben und noch kein benutzerdefiniertes Container-Image haben, empfiehlt es sich, diesen Ansatz zu verwenden.

Bei jedem dieser Ansätze können die Fehler, die Sie erhalten, hauptsächlich mit dem falschen Build des Container-Images zusammenhängen. Stellen Sie daher sicher, dass der Container korrekt konfiguriert ist.

Auflösung

Erweitern Sie einen vorgefertigten SageMaker-Container

  • Stellen Sie sicher, dass die Umgebungsvariablen SAGEMAKER_SUBMIT_DIRECTORY und SAGEMAKER_PROGRAM im Dockerfile gesetzt sind.
  • Stellen Sie sicher, dass Sie die erforderlichen zusätzlichen Bibliotheken in Ihrem Dockerfile installiert haben. Sie können dies tun, indem Sie die folgenden Befehle ausführen:
# SageMaker PyTorch image
FROM 763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.5.1-cpu-py36-ubuntu16.04
ENV PATH="/opt/ml/code:${PATH}"

# this environment variable is used by the SageMaker PyTorch container to determine our user code directory.
ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code

# install the libraries using pip
COPY requirements.txt./requirements.txt
RUN pip install requirements.txt

# /opt/ml and all subdirectories are utilized by SageMaker, use the /code subdirectory to store your user code.
COPY cifar10.py /opt/ml/code/cifar10.py
# Defines cifar10.py as script
entrypoint 
ENV SAGEMAKER_PROGRAM cifar10.py
  • Nachdem die Image-Erstellung erfolgreich war, führen Sie den Container im lokalen Modus aus. Stellen Sie sicher, dass das Bild wie erwartet funktioniert.

Weitere Informationen finden Sie unter Erweitern eines vorgefertigten Containers.

Verwenden Ihres eigenen Containers

Stellen Sie sicher, dass Sie die entsprechenden SageMaker-Toolkit-Bibliotheken für das Schulung oder die Inferenz installiert haben. Diese Toolkits definieren den Speicherort für Code und andere Ressourcen zusammen mit dem Einstiegspunkt, der den Code enthält, der beim Starten des Containers ausgeführt werden muss. Wenn Sie einen SageMaker-Schulungsauftrag oder einen Inferenzendpunkt erstellen, werden die folgenden Verzeichnisse von SageMaker erstellt:

/opt/ml
    ├── input
    │
    ├── model
    │
    ├── code
    │
    ├── output
    │
    └── failure

Wenn Sie einen Schulungsauftrag ausführen, enthält das Verzeichnis /opt/ml/input Informationen über den Datenkanal, der für den Zugriff auf die in Amazon Simple Storage Service (Amazon S3) gespeicherten Daten verwendet wird. Das Schulungsskript (train.py) wird zusammen mit seinen Abhängigkeiten in opt/ml/code gespeichert. Stellen Sie sicher, dass das Skript das endgültige Modell nach Abschluss des Schulungsauftrags in das Verzeichnis /opt/ml/model schreibt.

Wenn Sie ein trainiertes Modell auf SageMaker hosten, um Rückschlüsse zu ziehen, wird das Modell in /opt/ml/model gespeichert und der Inferenzcode (inference.py) wird in /opt/ml/code gespeichert.

Weitere Informationen finden Sie unter Anpassen Ihres eigenen Docker-Containers für die Arbeit mit SageMaker.

Erstellen Sie einen Container von Grund auf neu

  • Um sicherzustellen, dass der Container als ausführbare Datei ausgeführt wird, verwenden Sie die Exec-Form der ENTRYPOINT-Anweisung in Ihrer Dockerfile:
ENTRYPOINT ["python", "cifar10.py"]
  • Für einen Schulungauftrag muss das Schulungsskript mit 0 beendet werden, wenn die Schulung erfolgreich ist, und einem Exit-Code ungleich Null, wenn die Schulung nicht erfolgreich ist.
  • Stellen Sie sicher, dass das endgültige Modell in /opt/ml/model geschrieben ist und alle Abhängigkeiten und Artefakte in /opt/ml/output gespeichert sind. Wenn ein Schulungsauftrag fehlschlägt, muss das Skript die Fehlerinformationen nach /opt/ml/output/failure schreiben.
  • Stellen Sie beim Erstellen eines Inferenzendpunkts sicher, dass das Modell im Format FILENAME.tar.gz gespeichert ist. Der Container muss die HTTP-POST-Anforderung auf /invocations für die Inferenz und die HTTP-GET-Anforderung auf**/ping** für die Endpunktintegritätsprüfung implementieren.

Weitere Informationen finden Sie unter Erstellen eines Containers mit eigenen Algorithmen und Modellen.


Relevante Informationen

Verwenden Sie den lokalen Modus von Amazon SageMaker zur Schulung auf Ihrer Notebook-Instance

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr