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.
Führen Sie Ihren lokalen Code als SageMaker Trainingsjob aus
Sie können Ihren lokalen Python-Code für maschinelles Lernen (ML) als großen SageMaker Amazon-Schulungsjob mit einem Knoten oder als mehrere parallel Jobs ausführen. Dies können Sie tun, indem Sie Ihren Code mit einem @remote Decorator kommentieren, wie im folgenden Beispielcode gezeigt. Verteiltes Training (über mehrere Instances) wird mit Remote-Funktionen nicht unterstützt.
@remote(**settings) def divide(x, y): return x / y
Das SageMaker Python-SDK übersetzt Ihre bestehende Workspace-Umgebung und alle zugehörigen Datenverarbeitungscodes und Datensätze automatisch in einen SageMaker Trainingsjob, der auf der SageMaker Trainingsplattform ausgeführt wird. Sie können auch ein persistentes Cache-Feature aktivieren, das die Latenz beim Auftragsbeginn weiter reduziert, indem zuvor heruntergeladene Abhängigkeitspakete zwischengespeichert werden. Diese Verringerung der Job-Latenz ist größer als die Verringerung der Latenz, die allein durch die Verwendung von SageMaker verwalteten Warm-Pools entsteht. Weitere Informationen finden Sie unter Persistenter Cache verwenden.
Anmerkung
Verteilte Trainingsaufträge werden nicht durch Remote-Funktionen unterstützt.
In den folgenden Abschnitten wird gezeigt, wie Sie Ihren lokalen ML-Code mit einem @remote Decorator kommentieren und Ihre Benutzererfahrung an Ihren Anwendungsfall anpassen können. Dazu gehören die Anpassung Ihrer Umgebung und die Integration mit SageMaker Experiments.
Themen
- So richten Sie Ihre Umgebung ein
- Aufrufen einer -Funktion
- Konfigurationsdatei
- Passen Sie Ihre Laufzeitumgebung an
- Container-Image-Kompatibilität
- Protokollierung von Parametern und Metriken mit Amazon SageMaker Experiments
- Verwendung von modularem Code mit dem @remote Decorator
- Privates Repository für Laufzeitabhängigkeiten
- Beispiel-Notebooks
So richten Sie Ihre Umgebung ein
Wählen Sie eine der folgenden drei Optionen aus, um Ihre Umgebung einzurichten.
Sie können Ihren lokalen ML-Code in SageMaker Studio Classic kommentieren und ausführen, indem Sie ein SageMaker Notizbuch erstellen und jedes Bild anhängen, das auf dem SageMaker Studio Classic-Image verfügbar ist. Die folgenden Anweisungen helfen Ihnen, ein SageMaker Notebook zu erstellen, das SageMaker Python-SDK zu installieren und Ihren Code mit dem Decorator zu kommentieren.
-
Erstellen Sie ein SageMaker Notizbuch und hängen Sie ein Bild in SageMaker Studio Classic wie folgt an:
-
Folgen Sie den Anweisungen unter Amazon SageMaker Studio Classic starten im Amazon SageMaker Developer Guide.
-
Wählen Sie im linken Navigationsbereich Studio aus. Es wird nun ein neues Fenster geöffnet.
-
Wählen Sie im Dialogfeld Erste Schritte aus und wählen Sie mit dem Abwärtspfeil ein Benutzerprofil aus. Dies öffnet ein neues Fenster.
-
Wählen Sie Open Studio Classic aus.
-
Wählen Sie im Hauptarbeitsbereich die Option Launcher öffnen aus. Es wird nun eine neue Seite geöffnet.
-
Wählen Sie im Hauptarbeitsbereich die Option Notebook erstellen aus.
-
Wählen Sie im Dialogfeld Umgebung ändern mit dem Abwärtspfeil neben Image die Option Base Python 3.0 aus.
Der @remote Decorator erkennt automatisch das an das SageMaker Studio Classic-Notizbuch angehängte Bild und verwendet es, um den SageMaker Trainingsjob auszuführen. Wenn
image_uri
entweder als Argument im Decorator oder in der Konfigurationsdatei angegeben wird, wird der inimage_uri
angegebene Wert anstelle des erkannten Image verwendet.Weitere Informationen zum Erstellen eines Notizbuchs in SageMaker Studio Classic finden Sie im Abschnitt Ein Notizbuch über das Dateimenü erstellen unter Amazon SageMaker Studio Classic-Notizbuch erstellen oder öffnen.
Eine Liste der verfügbaren Images finden Sie unter Unterstützte Docker-Images.
-
-
Installieren Sie das SageMaker Python-SDK.
Um Ihren Code mit der @remote -Funktion in einem SageMaker Studio Classic Notebook zu annotieren, muss das SageMaker Python-SDK installiert sein. Installieren Sie das SageMaker Python-SDK, wie im folgenden Codebeispiel gezeigt.
!pip install sagemaker
-
Verwenden Sie @remote decorator, um Funktionen in einem SageMaker Trainingsjob auszuführen.
Um Ihren lokalen ML-Code auszuführen, erstellen Sie zunächst eine Abhängigkeitsdatei, in der Sie angeben SageMaker , wo sich Ihr lokaler Code befindet. Führen Sie dazu die folgenden Schritte aus:
-
Wählen Sie im Hauptarbeitsbereich von SageMaker Studio Classic Launcher unter Dienstprogramme und Dateien die Option Textdatei aus. Es wird dann ein neuer Tab mit einer Textdatei namens
untitled.txt.
geöffnetWeitere Informationen zur Benutzeroberfläche (UI) von SageMaker Studio Classic finden Sie unter Amazon SageMaker Studio Classic UI Overview.
-
Benennen Sie
untitled.txt
um inrequirements.txt
. -
Fügen Sie alle für den Code erforderlichen Abhängigkeiten zusammen mit der SageMaker Bibliothek zu hinzu
requirements.txt
.Ein Beispiel für den minimalen Code
requirements.txt
für die Beispielfunktiondivide
finden Sie im folgenden Abschnitt.sagemaker
-
Führen Sie Ihren Code mit dem Remote Decorator aus, indem Sie die Datei mit den Abhängigkeiten übergeben, wie folgt.
from sagemaker.remote_function import remote @remote(instance_type="ml.m5.xlarge", dependencies='./requirements.txt') def divide(x, y): return x / y divide(2, 3.0)
Weitere Beispielcodes finden Sie im Beispiel-Notebook quick_start.ipynb
. Wenn Sie bereits ein SageMaker Studio Classic-Notebook ausführen und das Python-SDK wie in 2 beschrieben installieren. Installieren Sie das SageMaker Python-SDK, Sie müssen Ihren Kernel neu starten. Weitere Informationen finden Sie unter Verwenden der SageMaker Studio Classic Notebook Toolbar im Amazon SageMaker Developer Guide.
-
Sie können Ihren lokalen ML-Code von einer SageMaker Notebook-Instance aus kommentieren. Die folgenden Anweisungen zeigen, wie Sie eine Notebook-Instanz mit einem benutzerdefinierten Kernel erstellen, das SageMaker Python-SDK installieren und Ihren Code mit dem Decorator annotieren.
-
Erstellen Sie eine Notebook-Instance mit einem benutzerdefinierten
conda
Kernel.Sie können Ihren lokalen ML-Code mit einem @remote -Decorator annotieren, um ihn innerhalb eines Trainingsjobs zu verwenden. SageMaker Zunächst müssen Sie eine SageMaker Notebook-Instanz erstellen und anpassen, um einen Kernel mit Python-Version 3.7 oder höher, bis zu 3.10.x, zu verwenden. Führen Sie dazu die folgenden Schritte aus:
-
Öffnen Sie die SageMaker Konsole unter https://console.aws.amazon.com/sagemaker/.
-
Wählen Sie im linken Navigationsbereich Notebook aus, um die dazugehörigen Optionen zu erweitern.
-
Wählen Sie aus den erweiterten Optionen Notebook-Instances aus.
-
Wählen Sie die Schaltfläche Notebook-Instance erstellen aus. Es wird nun eine neue Seite geöffnet.
-
Geben Sie unter Name deer Notebook-Instance einen Namen mit maximal 63 Zeichen ohne Leerzeichen ein. Gültige Zeichen: A–Z, a–z, 0–9 und .:+=@ _%- (Bindestrich).
-
Erweitern Sie im Dialogfeld mit den Einstellungen für Notebook-Instances den Pfeil nach rechts neben Zusätzliche Konfiguration.
-
Erweitern Sie unter Lebenszykluskonfiguration – optional den Abwärtspfeil und wählen Sie Neue Lebenszykluskonfiguration erstellen aus. Es öffnet sich ein neues Dialogfeld.
-
Geben Sie unter Name einen Namen für Ihre Konfigurationseinstellung ein.
-
Ersetzen Sie im Dialogfeld Skripte auf der Registerkarte Notebook starten den vorhandenen Inhalt des Textfeldes durch das folgende Skript.
#!/bin/bash set -e sudo -u ec2-user -i <<'EOF' unset SUDO_UID WORKING_DIR=/home/ec2-user/SageMaker/custom-miniconda/ source "$WORKING_DIR/miniconda/bin/activate" for env in $WORKING_DIR/miniconda/envs/*; do BASENAME=$(basename "$env") source activate "$BASENAME" python -m ipykernel install --user --name "$BASENAME" --display-name "Custom ($BASENAME)" done EOF echo "Restarting the Jupyter server.." # restart command is dependent on current running Amazon Linux and JupyterLab CURR_VERSION_AL=$(cat /etc/system-release) CURR_VERSION_JS=$(jupyter --version) if [[ $CURR_VERSION_JS == *$"jupyter_core : 4.9.1"* ]] && [[ $CURR_VERSION_AL == *$" release 2018"* ]]; then sudo initctl restart jupyter-server --no-wait else sudo systemctl --no-block restart jupyter-server.service fi
-
Ersetzen Sie im Dialogfeld Skripte auf der Registerkarte Notebook erstellen den vorhandenen Inhalt des Textfeldes durch das folgende Skript.
#!/bin/bash set -e sudo -u ec2-user -i <<'EOF' unset SUDO_UID # Install a separate conda installation via Miniconda WORKING_DIR=/home/ec2-user/SageMaker/custom-miniconda mkdir -p "$WORKING_DIR" wget https://repo.anaconda.com/miniconda/Miniconda3-4.6.14-Linux-x86_64.sh -O "$WORKING_DIR/miniconda.sh" bash "$WORKING_DIR/miniconda.sh" -b -u -p "$WORKING_DIR/miniconda" rm -rf "$WORKING_DIR/miniconda.sh" # Create a custom conda environment source "$WORKING_DIR/miniconda/bin/activate" KERNEL_NAME="custom_python310" PYTHON="3.10" conda create --yes --name "$KERNEL_NAME" python="$PYTHON" pip conda activate "$KERNEL_NAME" pip install --quiet ipykernel # Customize these lines as necessary to install the required packages EOF
-
Wählen Sie unten rechts im Fenster die Schaltfläche Konfiguration erstellen aus.
-
Wählen Sie unten rechts im Fenster die Schaltfläche Notebook-Instance erstellen aus.
-
Warten Sie, bis sich der Status der Notebook-Instanz von Ausstehend auf ändert InService.
-
-
Erstellen Sie in der Notebook-Instance ein Jupyter Notebook.
Die folgenden Anweisungen zeigen, wie Sie ein Jupyter-Notebook mit Python 3.10 in Ihrer neu erstellten Instanz erstellen. SageMaker
-
Gehen Sie wie folgt vor, nachdem der Status der Notebook-Instanz aus dem vorherigen Schritt lautet InService:
-
Wählen Sie in der Zeile, die den Namen Ihrer neu erstellten Notebook-Instance enthält, unter Aktionen die Option Jupyter öffnen aus. Es öffnet sich ein neuer Jupyter-Server.
-
-
Wählen Sie im Jupyter-Server im Menü oben rechts die Option Neu aus.
-
Wählen Sie mit dem Abwärtspfeil conda_custom_python310 aus. Es wird nun ein neues Jupyter Notebook erstellt, das einen Python 3.10-Kernel verwendet. Dieses neue Jupyter Notebook kann jetzt ähnlich wie ein lokales Jupyter Notebook verwendet werden.
-
-
Installieren Sie das SageMaker Python-SDK.
Nachdem Ihre virtuelle Umgebung ausgeführt wurde, installieren Sie das SageMaker Python-SDK mithilfe des folgenden Codebeispiels.
!pip install sagemaker
-
Verwenden Sie einen @remote -Decorator, um Funktionen in einem SageMaker Trainingsjob auszuführen.
Wenn Sie Ihren lokalen ML-Code mit einem @remote -Decorator im SageMaker Notizbuch annotieren, interpretiert das SageMaker Training automatisch die Funktion Ihres Codes und führt ihn als SageMaker Trainingsjob aus. Gehen Sie wie folgt vor, um Ihr Notebook einzurichten:
-
Wählen Sie den Kernelnamen im Notebook-Menü aus der SageMaker Notebook-Instanz aus, die Sie in Schritt 1, Eine SageMaker Notebook-Instanz mit einem benutzerdefinierten Kernel erstellen, erstellt haben.
Weitere Informationen finden Sie unter Ein Image oder einen Kernel ändern.
-
Wählen Sie mit dem Abwärtspfeil einen benutzerdefinierten
conda
Kernel aus, der Python in der Version 3.7 oder höher verwendet.Wenn Sie z. B.
conda_custom_python310
auswählen, wird der Kernel für Python 3.10 ausgewählt. -
Wählen Sie Select (Auswählen).
-
Warten Sie, bis der Status des Kernels als inaktiv angezeigt wird. Dies weist darauf hin, dass der Kernel gestartet wurde.
-
Wählen Sie auf der Startseite des Jupyter-Servers im Menü oben rechts die Option Neu aus.
-
Wählen Sie neben dem Abwärtspfeil die Option Textdatei aus. Jetzt wird eine neue Textdatei mit dem Namen
untitled.txt.
erstellt -
Benennen Sie
untitled.txt
inrequirements.txt
um und fügen Sie alle für den Code erforderlichen Abhängigkeiten hinzu, zusammen mitsagemaker
. -
Führen Sie Ihren Code mit dem Remote-Decorator aus, indem Sie die Datei mit den Abhängigkeiten wie unten gezeigt übergeben.
from sagemaker.remote_function import remote @remote(instance_type="
ml.m5.xlarge
", dependencies='./requirements.txt') def divide(x, y): return x / y divide(2, 3.0)Weiteren Beispielcode finden Sie im Beispiel-Notebook quick_start.ipnyb
.
-
Sie können Ihren lokalen ML-Code mit einem @remote Decorator in Ihrer bevorzugten lokalen IDE kommentieren. Die folgenden Schritte zeigen die notwendigen Voraussetzungen, wie Sie das Python-SDK installieren und wie Sie Ihren Code mit dem @remote Decorator kommentieren können.
-
Installieren Sie die Voraussetzungen, indem Sie AWS Command Line Interface (AWS CLI) einrichten und wie folgt eine Rolle erstellen:
-
Nehmen Sie an einer SageMaker Domain teil, indem Sie den Anweisungen im Abschnitt AWS CLI Voraussetzungen unter SageMaker Amazon-Voraussetzungen einrichten folgen.
-
Erstellen Sie eine IAM-Rolle, indem Sie den Anweisungen im Abschnitt „Ausführungsrolle erstellen“ von SageMakerRollen folgen.
-
-
Erstellen Sie eine virtuelle Umgebung, indem Sie entweder PyCharm oder verwenden
conda
und Python Version 3.7 oder höher, bis zu 3.10.x, verwenden.-
Richten Sie eine virtuelle Umgebung PyCharm wie folgt ein:
-
Wählen Sie im Hauptmenü Datei aus.
-
Wählen Sie New Project (Neues Projekt) aus.
-
Wählen Sie mit dem Abwärtspfeil unter Neue Umgebung verwenden die Option Conda aus.
-
Verwenden Sie im Feld für die Python-Version den Abwärtspfeil, um eine Version von Python auszuwählen, die 3.7 oder höher ist. Sie können auf der Liste bis 3.10.x gehen.
-
-
Wenn Sie Anaconda installiert haben, können Sie mit Hilfe von
conda
wie folgt eine virtuelle Umgebung einrichten:-
Öffnen Sie eine Anaconda-Terminalschnittstelle mit Eingabeaufforderung.
-
Erstellen und aktivieren Sie eine neue
conda
Umgebung mit Python in der Version 3.7 oder höher, bis 3.10x. Der folgende Beispielcode veranschaulicht, wie eineconda
Umgebung mit Python Version 3.10 erstellt wird.conda create -n
sagemaker_jobs_quick_start
python=3.10 pip conda activatesagemaker_jobs_quick_start
-
-
-
Installieren Sie das SageMaker Python-SDK.
Um Ihren Code aus Ihrer bevorzugten IDE zu packen, müssen Sie eine virtuelle Umgebung mit Python 3.7 oder höher, bis 3.10x, eingerichtet haben. Sie benötigen außerdem ein kompatibles Container-Image. Installieren Sie das SageMaker Python-SDK mithilfe des folgenden Codebeispiels.
pip install sagemaker
-
Fügen Sie Ihren Code in den @remote Decorator ein. Das SageMaker Python-SDK interpretiert die Funktion Ihres Codes automatisch und führt ihn als SageMaker Trainingsjob aus. Die folgenden Codebeispiele zeigen, wie Sie die erforderlichen Bibliotheken importieren, eine SageMaker Sitzung einrichten und eine Funktion mit dem @remote -Dekorator annotieren.
Sie können Ihren Code ausführen, indem Sie entweder die benötigten Abhängigkeiten direkt bereitstellen oder Abhängigkeiten aus der aktiven
conda
Umgebung verwenden.-
Gehen Sie wie folgt vor, um die Abhängigkeiten direkt bereitzustellen:
-
Erstellen Sie in dem Arbeitsverzeichnis, in dem sich der Code befindet, eine
requirements.txt
Datei. -
Fügen Sie alle für den Code erforderlichen Abhängigkeiten zusammen mit der SageMaker Bibliothek hinzu. Der folgende Abschnitt enthält minimalen Beispielcode für
requirements.txt
für diedivide
Beispielfunktion.sagemaker
-
Führen Sie Ihren Code mit dem @remote Decorator aus, indem Sie die Datei mit den Abhängigkeiten übergeben. Ersetzen Sie im folgenden Codebeispiel
The IAM role name
durch einen AWS Identity and Access Management (IAM-) Rollen-ARN, den Sie SageMaker zur Ausführung Ihres Jobs verwenden möchten.import boto3 import sagemaker from sagemaker.remote_function import remote sm_session = sagemaker.Session(boto_session=boto3.session.Session(region_name="
us-west-2
")) settings = dict( sagemaker_session=sm_session, role=<The IAM role name>
, instance_type="ml.m5.xlarge
", dependencies='./requirements.txt' ) @remote(**settings) def divide(x, y): return x / y if __name__ == "__main__": print(divide(2, 3.0))
-
-
Um Abhängigkeiten aus der aktiven
conda
Umgebung zu verwenden, verwenden Sie den Wertauto_capture
für dendependencies
Parameter, wie im Folgenden gezeigt.import boto3 import sagemaker from sagemaker.remote_function import remote sm_session = sagemaker.Session(boto_session=boto3.session.Session(region_name="
us-west-2
")) settings = dict( sagemaker_session=sm_session, role=<The IAM role name>
, instance_type="ml.m5.xlarge
", dependencies="auto_capture" ) @remote(**settings) def divide(x, y): return x / y if __name__ == "__main__": print(divide(2, 3.0))Anmerkung
Sie können den vorherigen Code auch in einem Jupyter-Notebook implementieren. PyCharm Die Professional Edition unterstützt Jupyter nativ. Weitere Anleitungen finden Sie in der Dokumentation zur Unterstützung von Jupyter-Notebooks
. PyCharm
-