Zum Inhalt springen

Erste AI Model Experiments-Instanz erstellen, verbinden und ein erstes Experiment durchführen

Zuletzt aktualisiert am

Diese Anleitung ermöglicht es Ihnen, schnell eine laufende STACKIT AI Model Experiments Instanz zu erhalten und ein Experiment darauf auszuführen. Dabei verwenden Sie Standardeinstellungen, die für die meisten Anwendungsfälle geeignet sind.

Folgen Sie diesen Schritten, um Ihre Instanz zu erstellen:

  1. Besuchen Sie das STACKIT Portal.

  2. Klicken Sie in der Seitenleiste auf AI Model Experiments.

    Falls AI Model Experiments in Ihrer Region nicht aktiviert ist, erscheint eine Schaltfläche Aktivieren. Klicken Sie darauf, um das Produkt in Ihrer Region zu aktivieren. Hierbei entstehen keine weiteren Kosten.

  3. Klicken Sie in der oberen Leiste auf AI Model Experiments erstellen.

  4. Geben Sie im neuen Bereich eine Beschreibung und einen Namen ein.

  5. Klicken Sie auf Erstellen.

  6. Warten Sie, bis Ihre Instanz den Status Aktiv erreicht hat.

  7. Klicken Sie auf Ihre neue Instanz und speichern Sie deren URL an einem sicheren Ort.

    Dieser Artikel bezeichnet diese URL als ai-model-experiments-instance-uri.

Nachdem Ihre Instanz den Status Aktiv erreicht hat, können Sie mit der Erstellung eines Zugriffstokens fortfahren. Folgen Sie dazu diesen Schritten:

  1. Besuchen Sie das STACKIT Portal.

  2. Klicken Sie in der Seitenleiste auf AI Model Experiments.

  3. Navigieren Sie zu Ihrer Instanz und klicken Sie darauf.

  4. Klicken Sie in der linken Leiste auf Tracking-Tokens.

  5. Klicken Sie auf Tracking-Token erstellen.

  6. Geben Sie im neuen Bereich einen Namen ein und klicken Sie auf Erstellen.

  7. Speichern Sie Ihren Token an einem sicheren Ort.

    Dieser Artikel bezeichnet diesen Token als ai-model-experiments-access-token.

Nun erfüllen Sie alle internen Voraussetzungen. Als letzten Schritt zur Vorbereitung müssen Sie Zugangsdaten für den neu erstellten Object Storage Bucket erstellen:

  1. Besuchen Sie das STACKIT Portal.

  2. Klicken Sie in der Seitenleiste auf Object Storage.

  3. Klicken Sie im Untermenü auf Anmeldedaten & Gruppen.

  4. Navigieren Sie zu dem Eintrag, der mit aiexp beginnt, und klicken Sie darauf.

  5. Klicken Sie links auf Zugangsdaten.

  6. Klicken Sie in der oberen Leiste auf Zugangsdaten erstellen.

  7. Klicken Sie im Bereich auf Erstellen.

  8. Kopieren Sie die Access key ID und den Secret access key an einen sicheren Ort.

    Dieser Artikel bezeichnet die Key ID und den Schlüssel selbst als stackit-object-storage-access-key und stackit-object-storage-secret-key.

Um mit der Nutzung von STACKIT AI Model Experiments zu beginnen, installieren Sie die Python-Bibliotheken MLflow™ und boto3. Während MLflow™ Ihre Experimente verwaltet, stellt boto3 die erforderliche S3-kompatible Schnittstelle zum Speichern von Artefakten wie Modelldateien und Diagrammen bereit.

Erstellen und aktivieren Sie zunächst eine virtuelle Umgebung:

Terminal-Fenster
python -m venv ai-model-experiments
source ai-model-experiments/bin/activate

Für dieses spezifische Tutorial müssen Sie außerdem einige zusätzliche Data-Science-Tools installieren. Führen Sie den folgenden Befehl aus, um die erforderlichen Bibliotheken zu installieren:

Terminal-Fenster
pip install mlflow boto3 xgboost numpy

Um dem MLflow™-Client die Authentifizierung und Kommunikation mit dem Tracking-Server sowie dem Artefakt-Speicher zu ermöglichen, müssen Sie zudem die folgenden Umgebungsvariablen konfigurieren:

Terminal-Fenster
# MLflow Tracking Server Konfiguration
export MLFLOW_TRACKING_URI="[ai-model-experiments-instance-uri]"
export MLFLOW_TRACKING_TOKEN="[ai-model-experiments-access-token]"
# S3 Zugangsdaten für Artefakt-Zugriff
export AWS_ACCESS_KEY_ID="[stackit-object-storage-access-key]"
export AWS_SECRET_ACCESS_KEY="[stackit-object-storage-secret-key]"
# STACKIT S3 Endpoint URL
export MLFLOW_S3_ENDPOINT_URL="https://object.storage.eu01.onstackit.cloud"

Detaillierte Anweisungen zum Generieren und Abrufen dieser Werte finden Sie unter Einrichten einer lokalen Umgebung für AI Model Experiments.

Experimente sind eine Möglichkeit, Ihre Durchläufe (Runs) zu organisieren. Sie können ein neues Experiment mit der Funktion mlflow.create_experiment erstellen.

import mlflow
experiment_name = "my-first-experiment"
mlflow.create_experiment(experiment_name)
mlflow.set_experiment(experiment_name)

Erstellen Sie eine neue Datei mit dem oben gezeigten Code namens create_experiment.py und führen Sie diese aus:

Terminal-Fenster
python create_experiment.py

Innerhalb eines Experiments können Sie Runs starten, um einzelne Ausführungen Ihres Codes zu verfolgen. Sie können Parameter, Metriken und Artefakte für einen Run protokollieren.

import mlflow
with mlflow.start_run() as run:
run_id = run.info.run_id
print(f"MLflow Run ID: {run_id}")
# Parameter protokollieren
mlflow.log_param("alpha", 0.5)
# Metrik protokollieren
mlflow.log_metric("accuracy", 0.95)
# Artefakt protokollieren
with open("artifact.txt", "w") as f:
f.write("This is a dummy artifact.")
mlflow.log_artifact("artifact.txt")

Erstellen Sie eine neue Datei mit dem oben gezeigten Code namens run_experiment.py und führen Sie diese aus:

Terminal-Fenster
python run_experiment.py

Das Skript erzeugt eine Ausgabe ähnlich zu dieser:

MLflow Run ID: b10f5deb2dd34af7b3824e5c3e03903d

Während MLflow™ hervorragend geeignet ist, um einzelne Metriken und Dateien zu verfolgen, liegt seine Hauptstärke in der Verwaltung des gesamten Machine-Learning-Lebenszyklus. Das folgende Skript demonstriert einen vollständigen End-to-End-Workflow: Erstellen eines Experiments, Protokollieren von Parametern, Speichern eines trainierten XGBoost-Modells und dessen Registrierung.

Dieses Beispiel führt mehrere fortgeschrittene Funktionen ein:

  • Natives Model Flavoring: Anstatt das Modell als generische Datei zu speichern, verwenden wir mlflow.xgboost.log_model. Dies bewahrt die interne Struktur des Modells und ermöglicht es, es als funktionales Objekt wieder zu laden.
  • Model Signatures: Durch die Verwendung von infer_signature definieren wir einen “Datenvertrag”, der die exakten Eingabe- und Ausgabeformate festlegt. Dies gewährleistet Sicherheit und Konsistenz, wenn das Modell später für Inferenzen verwendet wird.
  • Automatisierte Registrierung: Das Skript fügt das trainierte Modell über den Parameter registered_model_name automatisch der Model Registry hinzu, wodurch es sofort für Versionierung und Deployment verfügbar ist.
import mlflow
import numpy as np
import xgboost as xgb
from mlflow.models import infer_signature
# 1. Experiment initialisieren
experiment_name = "my-first-experiment"
if not mlflow.get_experiment_by_name(experiment_name):
mlflow.create_experiment(experiment_name)
mlflow.set_experiment(experiment_name)
# 2. Einen Trainings-Run starten
with mlflow.start_run() as run:
run_id = run.info.run_id
print(f"Active Run ID: {run_id}")
# Metadaten protokollieren
mlflow.log_param("algorithm", "XGBoost")
mlflow.log_param("layers", 3)
mlflow.log_metric("accuracy", 0.95)
# Eine Dummy-Artefaktdatei erstellen
with open("notes.txt", "w") as f:
f.write("Model trained on synthetic data.")
mlflow.log_artifact("notes.txt")
# --- Modell trainieren ---
X = np.random.rand(100, 10)
y = np.random.randint(0, 2, 100)
dtrain = xgb.DMatrix(X, label=y)
model = xgb.train({"objective": "binary:logistic"}, dtrain, num_boost_round=5)
# Modell mit Signatur protokollieren (definiert Eingabe-/Ausgabeschema)
signature = infer_signature(X, model.predict(dtrain))
mlflow.xgboost.log_model(
xgb_model=model,
artifact_path="model-artifacts",
signature=signature,
registered_model_name="stackit-xgboost-model"
)

Erstellen Sie eine neue Datei mit dem oben gezeigten Code namens register_model.py und führen Sie diese aus:

Terminal-Fenster
python register_model.py

Sie sollten eine Ausgabe wie diese erhalten:

Successfully registered model 'stackit-xgboost-model'.
Created version '1' of model 'stackit-xgboost-model'.

Sobald ein Modell in der Model Registry registriert ist, können Sie es unter Verwendung seines Namens und seiner Version laden.

import mlflow.xgboost
import xgboost as xgb
import numpy as np
# Modell-URI definieren (Version 1 verwenden)
model_name = "stackit-xgboost-model"
model_version = 1
model_uri = f"models:/{model_name}/{model_version}"
# Modell laden
loaded_model = mlflow.xgboost.load_model(model_uri)
# Inferenz ausführen
sample_data = xgb.DMatrix(np.random.rand(1, 10))
predictions = loaded_model.predict(sample_data)
print(f"Predictions: {predictions}")

Erstellen Sie eine neue Datei mit dem oben gezeigten Code namens load_model.py und führen Sie diese aus:

Terminal-Fenster
python load_model.py

Die Ausgabe wird wie folgt aussehen:

Predictions: [0.58940643]

Herzlichen Glückwunsch, Sie haben alle Codebeispiele ausgeführt!

Sobald Ihr Code ausgeführt wurde, können Sie Ihre Daten über die MLflow™-Benutzeroberfläche visualisieren und verwalten. Geben Sie dazu einfach Ihre MLFLOW_TRACKING_URI in Ihren Browser ein. Nutzen Sie das Dashboard, um Experiment-Runs zu überprüfen, Metriken über verschiedene Versionen hinweg zu vergleichen und die in STACKIT Object Storage gespeicherten Artefakte zu inspizieren.

Herzlichen Glückwunsch! Sie haben STACKIT AI Model Experiments erfolgreich in Ihren Workflow integriert.

Während dieses Tutorial die grundlegende Einrichtung durch die Installation des MLflow™-SDK und boto3 sowie die Protokollierung Ihres ersten Runs abgedeckt hat, gibt es noch viel mehr zu entdecken. Wir empfehlen die Lektüre der offiziellen MLflow™ Dokumentation für weitere Details.