Modellartefakte vorbereiten
Nach dem Training eines Modells müssen Sie ein Modellartefakt erstellen, das mit dem Modell in einem Modellkatalog gespeichert werden soll.
Dadurch werden Modellartefakte zum Verfolgen von Modellmetadaten zentral gespeichert.
Ein Modellartefakt ist ein ZIP-Archiv mit den Dateien, die erforderlich sind, um das Modell als Modell-Deployment bereitzustellen oder es wieder in eine Notizbuchsession zu laden.
Wir haben verschiedene Modellkatalogbeispiele bereitgestellt, die Modellartefakte für verschiedene Frameworks und Modellformate für maschinelles Lernen enthalten. Wir bieten Beispiele für die Modelle ONNX, Scikit-learn, Keras, PyTorch, LightGBM und XGBoost. Laden Sie zunächst unsere Modellartefaktvorlage mit den folgenden Dateien herunter:
Datei | Beschreibung |
---|---|
score.py |
Enthält Ihre benutzerdefinierte Logik zum Laden von serialisierten Modellobjekten in den Arbeitsspeicher und zum Definieren eines Inferenzendpunkts (predict() ). |
runtime.yaml |
Enthält Anweisungen dazu, welche Conda-Umgebung beim Deployment des Modells mit einem Data Science-Modell-Deployment verwendet werden soll. |
README.md |
Bietet Ihnen eine Reihe von Schritt-für-Schritt-Anweisungen zum Vorbereiten und Speichern eines Modellartefakts im Modellkatalog. Wir empfehlen Ihnen, diese Schritte zu befolgen. |
artifact-introspection-test/requirements.txt |
Listet die Drittanbieterabhängigkeiten auf, die Sie in der lokalen Umgebung installieren müssen, bevor Sie Introspektionstests ausführen. |
artifact-introspection-test/model_artifact_validate.py |
Stellt eine optionale Reihe von Testdefinitionen bereit, die Sie auf Ihrem Modellartefakt ausführen können, bevor Sie es im Modellkatalog speichern. Diese Modellintrospektionstests erfassen viele der häufigsten Fehler bei der Vorbereitung eines Modellartefakts. |
Die Modellartefaktverzeichnisstruktur muss folgendem Beispiel entsprechen:
.
|-- runtime.yaml
|-- score.py
|--<your-serialized-model>
|--<your-custom-module.py>
Weitere Python-Module können in score.py
importiert werden. Es wird empfohlen, dass jeder Code, der für Inferenz verwendet wird, auf derselben Ebene wie score.py
oder einer Ebene unter der Datei komprimiert wird. Wenn erforderliche Dateien auf Ordnerebenen vor der Datei score.py
vorhanden sind, werden die Dateien ignoriert und können zu einem Deployment-Fehler führen.
Die Datei score.py
Diese Datei enthält die Funktionsdefinitionen, die zum Laden eines Modells in den Arbeitsspeicher und zum Erstellen von Prognosen erforderlich sind.
Die beiden Funktionen lauten load_model()
und predict()
. Die Funktionsparameter können nicht angepasst werden. Beispiel: Sie können Datentypen in predict()
definieren, bevor Sie die Inferenzmethode des Schätzerobjekts aufrufen. Sie können mehrere Schätzerobjekte in den Arbeitsspeicher laden und eine Ensembleauswertung durchführen. Die Funktion predict()
befindet sich hinter dem /predict
-Endpunkt eines Modell-Deployment. Stellen Sie sicher, dass der Datentyp des Parameters data
in predict()
mit dem für das Modell-Deployment erwarteten Payload-Format übereinstimmt.
Das Modell-Deployment unterstützt nur JSON-Payloads und Byte. Stellen Sie sicher, dass der Datenparameter in predict()
ein JSON-Blob oder -Byte ist.
ADS (oracle-ads
) stellt Modellregistrierungs-Framework-spezifische Klassen bereit. Beispiel: Wenn die Klasse SklearnModel
mit .prepare()
verwendet wird, serialisiert ADS das Modell standardmäßig in joblib. Wenn XgboostModel
verwendet wird, speichert .prepare()
das Modell standardmäßig in einer JSON-Datei.
Die score.py
-Vorlage verwendet load_model()
, um das Modellrechnerobjekt zurückzugeben. Die Funktion predict()
übernimmt Daten und das Modellobjekt, das von load_model()
zurückgegeben wird. Beide Funktionen sind anpassbar und erfordern Definitionen. Der Body von predict()
kann Datentransformationen und andere Datenmanipulationsaufgaben enthalten, bevor eine Modellvorhersage erstellt wird. Alle benutzerdefinierten Python-Module können in score.py
importiert werden, wenn sie in der Artefaktdatei oder als Teil der Conda-Umgebung für Inferenzzwecke, wie die Vorlage, verfügbar sind.
Sie können andere Helper-Funktionen in score.py
definieren, die in predict()
aufgerufen werden. Beispiel: Sie können eine data_transformation()
-Funktion definieren, die benutzerdefinierte Transformationen angibt.
Sie können diese Dateien anhand der Best Practices für Modellartefakte effektiv erstellen.
Wir haben verschiedene Modellkatalogbeispiele und -vorlagen bereitgestellt, darunter die score.py
-Dateien. Wir bieten Beispiele für die Modelle ONNX, scikit-learn, Keras, PyTorch, LightGBM und XGBoost.