SageMaker-Training- und -Inferenz-Toolkits
Die Toolkits SageMaker Training
-
Die Speicherorte für das Speichern von Code und anderen Ressourcen.
-
Der Eintrittspunkt, der den Code enthält, der beim Starten des Containers ausgeführt werden soll. Ihre Dockerfile muss den Code kopieren, der an dem Speicherort ausgeführt werden muss, der von einem Container erwartet wird, der mit SageMaker AI kompatibel ist.
-
Andere Informationen, die ein Container für die Verwaltung von Bereitstellungen für Training und Inferenz benötigt.
Struktur der Container in den SageMaker-AI-Toolkits
Wenn ein Modell von SageMaker AI trainiert wird, wird die folgende Ordnerstruktur im Verzeichnis /opt/ml des Containers erstellt.
/opt/ml ├── input │ ├── config │ │ ├── hyperparameters.json │ │ └── resourceConfig.json │ └── data │ └── <channel_name> │ └── <input data> ├── model │ ├── code │ ├── output │ └── failure
Wenn Sie einen Modelltrainingsjob ausführen, verwendet der SageMaker-AI-Container das Verzeichnis /opt/ml/input/ mit den JSON-Dateien, welche die Hyperparameter für den Algorithmus und das Netzwerklayout für das verteilte Training konfigurieren. Das Verzeichnis /opt/ml/input/ enthält auch Dateien, die die Kanäle angeben, über die SageMaker AI auf die Daten zugreift, die in Amazon Simple Storage Service (Amazon S3) gespeichert sind. Die Container-Bibliothek von SageMaker AI platziert die Skripte, die der Container im Verzeichnis /opt/ml/code/ ausführt. Ihr Skript sollte das von Ihrem Algorithmus generierte Modell in das Verzeichnis /opt/ml/model/ schreiben. Weitere Informationen finden Sie unter Container mit benutzerdefinierten Trainingsalgorhythmen.
Wenn Sie ein trainiertes Modell auf SageMaker AI hosten, um Rückschlüsse zu ziehen, stellen Sie das Modell auf einem HTTP-Endpunkt bereit. Das Modell erstellt Echtzeitprognosen als Antwort auf Inferenzanforderungen. Der Container muss einen Serving-Stack enthalten, um diese Anforderungen zu verarbeiten.
In einem Hosting- oder Batch-Transformationscontainer befinden sich die Modelldateien im selben Ordner, in den sie während des Trainings geschrieben wurden.
/opt/ml/model │ └── <model files>
Weitere Informationen finden Sie unter Container mit benutzerdefiniertem Inferenzcode.
Einzelne versus mehrere Container
Sie können entweder separate Docker-Images für den Trainingsalgorithmus und Inferenzcode bereitstellen oder beides in einem einzigen Docker-Image kombinieren. Beachten Sie beim Erstellen von Docker-Images für die Verwendung mit SageMaker AI Folgendes:
-
Durch die Bereitstellung von zwei Docker-Images können die Speicheranforderungen sowie die Kosten steigen, da allgemeine Bibliotheken möglicherweise dupliziert werden.
-
Im Allgemeinen starten kleinere Container für Training und Hosting schneller. Modelle lernen schneller und der Hosting-Service kann durch die automatische Skalierung schneller auf erhöhten Datenverkehr reagieren.
-
Sie können unter Umständen einen Inferenzcontainer schreiben, der erheblich kleiner ist als der Trainingscontainer. Das ist gängige Praxis, wenn Sie GPUs zu Trainings einsetzen, Ihr Inferenzcode aber für CPUs optimiert ist.
-
In SageMaker AI müssen Docker-Container ohne privilegierten Zugriff ausgeführt werden.
-
Sowohl die von Ihnen erstellten als auch die von SageMaker AI bereitgestellten Docker-Container können Nachrichten an die Dateien
StdoutundStderrsenden. SageMaker AI sendet diese Nachrichten an Amazon CloudWatch Logs in Ihrem AWS-Konto.
Mehr Informationen über das Erstellen von SageMaker-AI-Containern und zur Ausführung von Skripten in ihnen finden Sie in den Repositorys SageMaker AI Training Toolkit