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.
Entwicklung kundenspezifischer Modelle in Neptune ML
Eine gute Möglichkeit, mit der Entwicklung benutzerdefinierter Modelle zu beginnen, besteht darin, den Beispielen im Neptune-ML-Toolkit
Darüber hinaus bietet das Toolkit Dienstprogrammfunktionen, mit denen Sie während Modelltraining und Modelltransformation die notwendigen Artefakte erzeugen können. Sie können dieses Python-Paket in Ihre benutzerdefinierte Implementierung importieren. Alle im Toolkit enthaltenen Funktionen oder Module sind auch in der Neptune-ML-Trainingsumgebung verfügbar.
Wenn Ihr Python-Modul zusätzliche externe Abhängigkeiten besitzt, können Sie diese zusätzlichen Abhängigkeiten einfügen, indem Sie im Verzeichnis Ihres Moduls die Datei requirements.txt
erstellen. Die in der Datei requirements.txt
aufgelisteten Pakete werden anschließend installiert, bevor Ihr Trainingsskript ausgeführt wird.
Das Python-Modul, das Ihr benutzerdefiniertes Modell implementiert, muss mindestens Folgendes enthalten:
Einen Einstiegspunkt für ein Trainingsskript
Einen Einstiegspunkt für ein Transformationsskript
Eine
model-hpo-configuration.json
-Datei
Entwicklung benutzerdefinierter Modelltrainingsskripts in Neptune ML
Ihr benutzerdefiniertes Modelltrainingsskript sollte ein ausführbares Python-Skript sein, siehe das Beispielskript train.py
model-hpo-configuration.json
abgerufen. Die Hyperparameterwerte liegen entweder innerhalb des gültigen Hyperparameterbereichs, wenn der Hyperparameter optimierbar ist, oder nehmen den Standard-Hyperparameterwert an, wenn er nicht optimierbar ist.
Ihr Trainingsskript wird auf einer SageMaker-Trainings-Instance mit einer Syntax wie der folgenden ausgeführt:
python3
(script entry point)
--(1st parameter)
(1st value)
--(2nd parameter)
(2nd value)
(...)
Für alle Aufgaben sendet der Neptune-ML-AutoTrainer zusätzlich zu den von Ihnen angegebenen Hyperparametern mehrere erforderliche Parameter an das Trainingsskript. Ihr Skript muss diese zusätzlichen Parameter verarbeiten können, um ordnungsgemäß zu funktionieren.
Diese zusätzlichen erforderlichen Parameter sind von der jeweiligen Aufgabe abhängig:
Für die Klassifizierung oder Regression von Knoten
-
task
– Der intern von Neptune ML verwendete Aufgabentyp. Für die Knotenklassifikation ist diesnode_class
, für die Knotenregressionnode_regression
. -
model
– Der intern von Neptune ML verwendete Modellname, in diesem Fallcustom
. -
name
– Der Name der intern von Neptune ML verwendeten Aufgabe, in diesem Fallnode_class-custom
für die Knotenklassifizierung undnode_regression-custom
für die Knotenregression. -
target_ntype
– Der Name des Knotentyps für die Klassifizierung oder Regression. -
property
– Der Name der Knoteneigenschaft für die Klassifizierung oder Regression.
Für Linkvorhersagen
-
task
– Der intern von Neptune ML verwendete Aufgabentyp. Für Linkvorhersagen ist dieslink_predict
. -
model
– Der intern von Neptune ML verwendete Modellname, in diesem Fallcustom
. -
name
– Der intern von Neptune ML verwendete Aufgabenname, in diesem Falllink_predict-custom
.
Für die Klassifizierung oder Regression von Kanten
-
task
– Der intern von Neptune ML verwendete Aufgabentyp. Für die Kantenklassifikation ist diesedge_class
, für die Kantenregressionedge_regression
. -
model
– Der intern von Neptune ML verwendete Modellname, in diesem Fallcustom
. -
name
– Der Name der intern von Neptune ML verwendeten Aufgabe, in diesem Falledge_class-custom
für die Kantenklassifizierung undedge_regression-custom
für die Kantenregression. -
target_etype
– Der Name des Kantentyps für die Klassifizierung oder Regression. -
property
– Der Name der Kanteneigenschaft für die Klassifizierung oder Regression.
Ihr Skript sollte die Modellparameter sowie alle weiteren Artefakte speichern, die am Ende des Trainings benötigt werden.
Sie können die Dienstprogrammfunktionen des Neptune-ML-Toolkits verwenden, um den Speicherort der verarbeiteten Diagrammdaten, den Speicherort der Modellparameter und die auf der Trainings-Instance verfügbaren GPU-Geräte zu bestimmen. Beispiele für die Verwendung dieser Dienstprogrammfunktionen finden Sie im Beispiel-Trainingsskript train.py
Entwicklung benutzerdefinierter Modelltransformationsskripts in Neptune ML
Ein Transformationsskript ist erforderlich, um den inkrementellen Neptune-ML-Workflow für Modellinferenzen für neue Diagramme zu nutzen, ohne das Modell neu zu trainieren. Auch wenn alle für die Modellbereitstellung notwendigen Artefakte durch das Trainingsskript generiert werden, müssen Sie dennoch ein Transformationsskript bereitstellen, wenn Sie aktualisierte Modelle generieren möchten, ohne das Modell neu zu trainieren.
Anmerkung
Induktive Inferenz in Echtzeit wird zurzeit für benutzerdefinierte Modelle nicht unterstützt.
Ihr benutzerdefiniertes Modelltransformationsskript sollte ein ausführbares Python-Skript sein, siehe das Beispielskript transform.py
Das Skript wird auf einer SageMaker-Trainings-Instance mit einer Syntax wie dieser ausgeführt:
python3
(your transform script entry point)
Ihr Transformationsskript benötigt verschiedene Informationen, z. B.:
Der Speicherort der verarbeiteten Diagrammdaten.
Der Speicherort der Modellparameter und der Speicherort für neue Modellartefakte.
Die auf der Instance verfügbaren Geräte.
Die Hyperparameter, die das beste Modell generiert haben.
Diese Eingaben werden über Neptune-ML-Dienstprogrammfunktionen abgerufen, die Ihr Skript aufrufen kann. Beispiele hierfür finden Sie im Beispielskript transform.py
Das Skript sollte Knoteneinbettungen, Knoten-ID-Zuordnungen und alle anderen Artefakte speichern, die für die Modellbereitstellung für die einzelnen Aufgaben notwendig sind. Weitere Informationen zu den für verschiedene Neptune-ML-Aufgaben erforderlichen Modellartefakten finden Sie in der Dokumentation zu Modellartefakten.
Benutzerdefinierte model-hpo-configuration.json
-Datei in Neptune ML
Die Datei model-hpo-configuration.json
definiert Hyperparameter für Ihr benutzerdefiniertes Modell. Sie hat dasselbe Format wie die Datei model-hpo-configuration.json
, die mit den integrierten Neptune-ML-Modellen verwendet wird, und hat Priorität gegenüber der Version, die von Neptune ML automatisch generiert und zum Speicherort Ihrer verarbeiteten Daten hochgeladen wird.
Wenn Sie Ihrem Modell einen neuen Hyperparameter hinzufügen, müssen Sie in dieser Datei auch einen Eintrag für den Hyperparameter hinzufügen, damit dieser an Ihr Trainingsskript übergeben wird.
Sie müssen einen Bereich für einen Hyperparameter angeben, wenn er optimierbar sein soll, und diesen als tier-1
-, tier-2
- oder tier-3
-Parameter festlegen. Der Hyperparameter wird optimiert, wenn die Gesamtzahl der konfigurierten Trainingsaufträge die Optimierung von Hyperparametern in seiner Stufe zulässt. Für einen nicht optimierbaren Parameter müssen Sie einen Standardwert angeben und den Hyperparameter zum Abschnitt fixed-param
der Datei hinzufügen. Ein Beispiel dafür, wie Sie dies tun, finden Sie in der Beispieldatei model-hpo-configuration.json
Sie müssen auch die Metrikdefinition angeben, die der SageMaker-HyperParameter-Optimierungsauftrag für die Auswertung der trainierten Kandidatenmodelle verwendet. Hierzu fügen Sie der Datei model-hpo-configuration.json
das JSON-Objekt eval_metric
wie folgt hinzu:
"eval_metric": { "tuning_objective": { "MetricName": "
(metric_name)
", "Type": "Maximize" }, "metric_definitions": [ { "Name": "(metric_name)
", "Regex": "(metric regular expression)
" } ] },
Das metric_definitions
-Array im Objekt eval_metric
listet Metrikdefinitionsobjekte für jede Metrik auf, die SageMaker aus der Trainings-Instance extrahieren soll. Jedes Metrikdefinitionsobjekt besitzt einen Name
-Schlüssel, mit dem Sie einen Namen für die Metrik angeben können (z. B. „Genauigkeit“, „F1“ usw.). Mit diesem Regex
-Schlüssel können Sie eine Zeichenfolge mit einem regulären Ausdruck angeben, der mit der Ausgabe dieser Metrik in den Trainingsprotokollen übereinstimmt. Weitere Informationen zur Definition von Metriken finden Sie auf der Seite SageMaker-HyperParameter-Optimierung.
Mit dem Objekt tuning_objective
in eval_metric
können Sie dann angeben, welche der Metriken in metric_definitions
als die Auswertungsmetrik verwendet werden soll, die als Zielmetrik für die Hyperparameter-Optimierung dient. Der Wert für MetricName
muss mit dem Wert von Name
in einer der Definitionen in metric_definitions
übereinstimmen. Der Wert für Type
sollte „Maximieren“ oder „Minimieren“ sein, je nachdem, ob die Metrik als „größer ist besser“ (z. B. „Genauigkeit“) oder als „weniger ist besser“ (z. B. „Mean-Squared-Fehler“) interpretiert werden soll.
Fehler in diesem Abschnitt der Datei model-hpo-configuration.json
können zu einem Fehlschlag des API-Auftrags für das Neptune-ML-Modelltraining führen, da der SageMaker-HyperParameter-Optimierungsauftrag nicht das beste Modell auswählen kann.
Lokale Tests Ihrer benutzerdefinierten Modellimplementierung in Neptune ML
Sie können Ihren Code lokal in der Conda-Umgebung des Neptune-ML-Toolkits ausführen, um Ihr Modell zu testen und zu validieren. Wenn Sie auf einer Neptune-Notebook-Instance entwickeln, wird die Conda-Umgebung auf der Neptune-Notebook-Instanz vorinstalliert. Wenn Sie auf einer anderen Instance entwickeln, müssen Sie die Anweisungen für die lokale Einrichtung
Die Conda-Umgebung reproduziert exakt die Umgebung, in der Ihr Modell ausgeführt werden wird, wenn Sie die Modelltrainings-API aufrufen. Alle Beispielskripts für Training und Transformation ermöglichen Ihnen die Übergabe des Befehlszeilen-Flags --local
, um die Skripts zum einfachen Debuggen in einer lokalen Umgebung auszuführen. Sie sollten diese Umgebung bei der Entwicklung Ihres eigenen Modells nutzen, um Ihre Modellimplementierung interaktiv und iterativ zu testen. Beim Modelltraining in der Produktionstrainingsumgebung von Neptune ML wird dieser Parameter ausgelassen.