Docker-Container für das Training und die Bereitstellung von Modellen - Amazon SageMaker AI

Docker-Container für das Training und die Bereitstellung von Modellen

In Amazon SageMaker AI werden Docker-Container in großem Umfang für Entwicklungs- und Laufzeitaufgaben verwendet. SageMaker AI bietet vorgefertigte Docker-Images für seine integrierten Algorithmen und die unterstützten Deep-Learning-Frameworks, die für Training und Inferenz verwendet werden. Durch die Verwendung von Containern können Sie Machine-Learning-Algorithmen trainieren und Modelle in jeder Größenordnung schnell und zuverlässig bereitstellen. Die Themen in diesem Abschnitt zeigen, wie Sie diese Container für Ihre eigenen Anwendungsfälle einsetzen können. Informationen darüber, wie Sie Ihre eigenen Container zur Verwendung mit Amazon SageMaker Studio Classic mitbringen können, finden Sie unter Benutzerdefinierte Images in Amazon SageMaker Studio Classic.

Szenarien für die Ausführung von Skripten, den Training von Algorithmen oder die Bereitstellung von Modellen mit SageMaker AI

Amazon SageMaker AI verwendet bei der Ausführung von Skripten, dem Training von Algorithmen oder der Bereitstellung von Modellen immer Docker-Container. Wie intensiv Sie mit Containern umgehen, hängt von Ihrem Anwendungsfall ab.

Die folgende Entscheidungsstruktur veranschaulicht drei wichtige Szenarien: Anwendungsfälle für die Verwendung vorgefertigter Docker-Container mit SageMaker AI; Anwendungsfälle für die Erweiterung eines vorgefertigten Docker-Containers; Anwendungsfall für die Erstellung Ihres eigenen Containers.

Entscheidungsbaum für Container-Anwendungsfälle.

Anwendungsfälle für die Verwendung vorgefertigter Docker-Container mit SageMaker AI

Berücksichtigen Sie bei der Verwendung von Containern mit SageMaker AI die folgenden Anwendungsfälle:

  • Vordefinierter SageMaker-AI-Algorithmus – Verwenden Sie das Bild, das mit dem integrierten Algorithmus geliefert wird. Weitere Informationen finden Sie unter Verwenden der in Amazon SageMaker AI integrierten Algorithmen oder vortrainierten Modellen.

  • Benutzerdefiniertes Modell mit vorgefertigtem SageMaker-AI-Container – Wenn Sie ein benutzerdefiniertes Modell trainieren oder bereitstellen, aber ein Framework verwenden, das über einen vorgefertigten SageMaker-AI-Container verfügt, einschließlich TensorFlow und PyTorch, wählen Sie eine der folgenden Optionen:

    • Wenn Sie kein benutzerdefiniertes Paket benötigen und der Container bereits alle erforderlichen Pakete enthält: Verwenden Sie das vorgefertigte Docker-Image, das mit Ihrem Framework verknüpft ist. Weitere Informationen finden Sie unter Vorgefertigte Docker-Images von SageMaker AI.

    • Wenn Sie ein benutzerdefiniertes Paket in einem der vorgefertigten Container installieren müssen: Vergewissern Sie sich, dass das vorgefertigte Docker-Image eine Datei requirements.txt zulässt, oder erweitern Sie den vorgefertigten Container auf der Grundlage der folgenden Anwendungsfälle.

Anwendungsfälle für die Erweiterung eines vorgefertigten Docker-Containers

Im Folgenden finden Sie Anwendungsfälle für die Erweiterung eines vorgefertigten Docker-Containers:

  • Sie können die Abhängigkeiten nicht importieren – Erweitern Sie das vorgefertigte Docker-Image, das Ihrem Framework zugeordnet ist. Weitere Informationen finden Sie unter Erweitern eines vorgefertigten Containers.

  • Sie können die Abhängigkeiten im vorgefertigten Container nicht importieren und der vorgefertigte Container unterstützt requirements.txt – Fügen Sie alle erforderlichen Abhängigkeiten in requirements.txt hinzu. Die folgenden Frameworks unterstützen die Verwendung von requirements.txt.

Anwendungsfall für den Bau Ihres eigenen Containers

Wenn Sie ein benutzerdefiniertes Modell erstellen oder trainieren und ein benutzerdefiniertes Framework benötigen, das kein vorgefertigtes Image hat, erstellen Sie einen benutzerdefinierten Container.

Der folgende Leitfaden zeigt anhand eines Beispielanwendungsfalls für das Training und die Bereitstellung eines TensorFlow-Modells, wie Sie ermitteln können, welche Option aus den vorherigen Abschnitten von Anwendungsfällen für den entsprechenden Fall geeignet ist.

Gehen Sie davon aus, dass Sie die folgenden Anforderungen für das Training und die Bereitstellung eines TensorFlow-Modells erfüllen.

Nachdem Sie den benötigten Containertyp bestimmt haben, finden Sie in der folgenden Liste Einzelheiten zu den zuvor aufgeführten Optionen.

  • Verwenden eines in SageMaker AI integrierten Algorithmus oder Frameworks. In den meisten Anwendungsfällen können Sie die integrierten Algorithmen und Frameworks verwenden, ohne sich Gedanken über Container machen zu müssen. Sie können diese Algorithmen von der SageMaker-AI-Konsole, der AWS Command Line Interface (AWS CLI), einem Python-Notebook oder dem Amazon SageMaker Python SDK aus trainieren und bereitstellen. Sie können dies tun, indem Sie bei der Erstellung Ihres Schätzers den Algorithmus oder die Framework-Version angeben. Die verfügbaren integrierten Algorithmen werden unter dem Thema Integrierte Algorithmen und vortrainierte Modelle in Amazon SageMaker einzeln aufgeführt und beschrieben. Weitere Informationen über die verfügbaren Frameworks finden Sie unter ML-Frameworks und Sprachen. Ein Beispiel zum Training und Bereitstellen eines integrierten Algorithmus mit einem Jupyter Notebook, das in einer SageMaker-Notebook-Instance ausgeführt wird, finden Sie im Thema Leitfaden zur Einrichtung von Amazon SageMaker AI.

  • Verwenden vorgefertigter Container-Images von SageMaker AI. Alternativ können Sie die integrierten Algorithmen und Frameworks mit Docker-Containern verwenden. SageMaker AI bietet Container für seine integrierten Algorithmen und vorgefertigte Docker-Images für einige der gängigsten Frameworks für Machine Learning, wie Apache MXNet, TensorFlow, PyTorch und Chainer. Eine vollständige Liste der verfügbaren SageMaker-Images finden Sie unter Verfügbare Deep Learning Containers Images. Auch Machine-Learning-Bibliotheken wie scikit-learn und SparML werden unterstützt. Wenn Sie das Amazon SageMaker Python SDK verwenden, können Sie die Container bereitstellen, indem Sie den vollständigen Container-URI an die jeweilige SageMaker SDK-Klasse Estimator übergeben. Die vollständige Liste der Deep-Learning-Frameworks, die derzeit von SageMaker AI unterstützt werden, finden Sie unter Vorgefertigte Docker-Images von SageMaker AI für Deep Learning. Weitere Informationen über die vordefinierten Container-Images von scikit-learn und SparkML finden Sie unter Zugriff auf Docker-Images für Scikit-learn und Spark ML. Weitere Informationen zur Verwendung von Frameworks mit dem Amazon SageMaker Python SDK finden Sie in den entsprechenden Themen unter Frameworks und Sprachen für Machine Learning.

  • Erweitern eines vordefinierten Container-Images von SageMaker AI. Wenn Sie einen vorgefertigten SageMaker-AI-Algorithmus erweitern oder ein Docker-Image modellieren möchten, können Sie das SageMaker-Image an Ihre Bedürfnisse anpassen. Ein Beispiel finden Sie unter Extending our PyTorch containers.

  • Anpassen eines vorhandenen Container-Images: Wenn Sie ein bereits vorhandenes Container-Image so anpassen möchten, dass es mit SageMaker AI funktioniert, müssen Sie den Docker-Container ändern, um entweder das SageMaker-Training- oder -Inferenz-Toolkit zu aktivieren. Ein Beispiel, wie Sie eigene Container zum Trainieren und Hosten eines Algorithmus erstellen können, finden Sie unter Bring Your Own R Algorithm.

Fehlerbehebung für Ihre Docker-Container und -Bereitstellungen

Im Folgenden werden Fehlermeldungen beschrieben, die häufig bei der Verwendung von Docker-Containern mit SageMaker AI zu finden sind. Auf jeden Fehler folgt eine Lösung für den Fehler.

  • Fehler: SageMaker AI hat den Docker-Daemon verloren.

    Starten Sie Docker mit dem folgenden Befehl neu, um diesen Fehler zu beheben.

    sudo service docker restart
  • Fehler: Im /tmp-Verzeichnis Ihres Docker-Containers ist der Speicherplatz knapp geworden.

    Docker-Container verwenden /- und /tmp-Partitionen, um Code zu speichern. Diese Partitionen können leicht gefüllt werden, wenn große Codemodule im lokalen Modus verwendet werden. Das SageMaker AI Python SDK unterstützt die Angabe eines benutzerdefinierten temporären Verzeichnisses für Ihr Stammverzeichnis im lokalen Modus, um dieses Problem zu vermeiden.

    Um das benutzerdefinierte temporäre Verzeichnis im Volume-Speicher Amazon Elastic Block Store anzugeben, erstellen Sie eine Datei im Pfad ~/.sagemaker/config.yaml und fügen Sie die folgende Konfiguration hinzu. Das Verzeichnis, als das Sie angeben, container_root muss bereits vorhanden sein. Das SageMaker AI Python SDK wird nicht versuchen, es zu erstellen.

    local: container_root: /home/ec2-user/SageMaker/temp

    Bei dieser Konfiguration verwendet der lokale Modus das /temp Verzeichnis und nicht das /tmp Standardverzeichnis.

  • Fehler bei geringem Speicherplatz auf SageMaker-Notebook-Instances

    Ein Docker-Container, der auf SageMaker-Notebook-Instances ausgeführt wird, verwendet standardmäßig das Amazon-EBS-Volume der Notebook-Instance als Root-Gerät. Um Fehler bei geringem Speicherplatz zu beheben, geben Sie den Pfad des Amazon-EBS-Volumes, das an die Notebook-Instance angehängt ist, als Teil des Volume-Parameters von Docker-Befehlen an.

    docker run -v EBS-volume-path:container-path