Entwicklung kundenspezifischer Modelle in Neptune ML - Amazon Neptune

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 zu folgen, um Ihr Trainingsmodul zu strukturieren und zu schreiben. Das Neptune-ML-Toolkit implementiert auch modularisierte Diagramm-ML-Modellkomponenten im modelzoo, die Sie stapeln und zur Erstellung Ihres benutzerdefinierten Modells verwenden können.

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 im Neptune-ML-Toolkit. Es muss Hyperparameternamen und -werte als Befehlszeilenargumente akzeptieren. Während des Modelltrainings werden die Hyperparameternamen aus der Datei 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 AI-Trainingsinstanz mit einer Syntax wie der folgenden ausgeführt:

python3 (script entry point) --(1st parameter) (1st value) --(2nd parameter) (2nd value) (...)

Für alle Aufgaben AutoTrainer sendet das Neptune ML zusätzlich zu den von Ihnen angegebenen Hyperparametern mehrere erforderliche Parameter an Ihr Trainingsskript, und Ihr Skript muss in der Lage sein, diese zusätzlichen Parameter zu verarbeiten, 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 dies node_class, für die Knotenregression node_regression.

  • model   –   Der intern von Neptune ML verwendete Modellname, in diesem Fall custom.

  • name   –   Der Name der intern von Neptune ML verwendeten Aufgabe, in diesem Fall node_class-custom für die Knotenklassifizierung und node_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 dies link_predict.

  • model   –   Der intern von Neptune ML verwendete Modellname, in diesem Fall custom.

  • name   –   Der intern von Neptune ML verwendete Aufgabenname, in diesem Fall link_predict-custom.

Für die Klassifizierung oder Regression von Kanten
  • task   –   Der intern von Neptune ML verwendete Aufgabentyp. Für die Kantenklassifikation ist dies edge_class, für die Kantenregression edge_regression.

  • model   –   Der intern von Neptune ML verwendete Modellname, in diesem Fall custom.

  • name   –   Der Name der intern von Neptune ML verwendeten Aufgabe, in diesem Fall edge_class-custom für die Kantenklassifizierung und edge_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 Utility-Funktionen des Neptune ML-Toolkits verwenden, um den Speicherort der verarbeiteten Grafikdaten, den Ort, an dem die Modellparameter gespeichert werden sollen, und zu bestimmen, welche GPU Geräte auf der Trainingsinstanz verfügbar sind. 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 im Neptune-ML-Toolkit. Da dieses Skript während des Modelltrainings ohne Befehlszeilenargumente aufgerufen wird, müssen alle Befehlszeilenargumente, die das Skript akzeptiert, Standardwerte haben.

Das Skript wird auf einer SageMaker KI-Trainingsinstanz 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 im Toolkit.

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 im Toolkit.

Sie müssen auch die Metrikdefinition angeben, anhand SageMaker derer der HyperParameter KI-Optimierungsjob die trainierten Kandidatenmodelle bewertet. Dazu fügen Sie der model-hpo-configuration.json Datei ein eval_metric JSON Objekt 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 eval_metric Objekt listet Objekte mit Metrikdefinitionen für jede Metrik auf, die SageMaker KI aus der Trainingsinstanz 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 KI HyperParameter Tuning.

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 entweder „Maximieren“ oder „Minimieren“ lauten, je nachdem, ob die Metrik als greater-is-better (wie „Genauigkeit“) oder less-is-better (wie „“ mean-squared-error interpretiert werden soll).

Fehler in diesem Abschnitt der model-hpo-configuration.json Datei können dazu führen, dass der API Trainingsjob für das Neptune ML-Modell fehlschlägt, da der SageMaker AI HyperParameter Tuning-Job nicht in der Lage ist, das beste Modell auszuwählen.

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 im Neptune-ML-Toolkit befolgen.

Die Conda-Umgebung reproduziert exakt die Umgebung, in der Ihr Modell ausgeführt wird, wenn Sie das Modelltraining aufrufen. API 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.