Benutzerdefinierte LLMs mit benutzerdefinierter Modellbereitstellung bereitstellen

Important

Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Manage Azure Databricks Previews.

Auf dieser Seite wird gezeigt, wie Sie benutzerdefinierte großsprachige Modelle (LLMs) für die Modellbereitstellung mithilfe eines vLLM-Moduls bereitstellen. Verwenden Sie diesen Workflow, um fein abgestimmte Modelle, PEFT-Varianten, multimodale Modelle und andere Foundation-Modelle zu bedienen, die in Foundation Model-APIs (FMAPI) nicht verfügbar sind. Das Start-Notebook am Ende dieser Seite enthält den gesamten ausführbaren Code für die folgenden Schritte.

Wann benutzerdefinierte LLM-Bereitstellungen verwendet werden sollten

Azure Databricks empfiehlt benutzerdefinierte LLM-Dienste, wenn Sie über einen der folgenden Anwendungsfälle verfügen:

  • Voll fein abgestimmte Modelle mit benutzerdefinierten Gewichten, die Sie auf Azure Databricks trainiert haben.
  • Modelle von Hugging Face, die in FMAPI nicht verfügbar sind.
  • Benutzerdefinierte PEFT-Rezepte, die FMAPI nicht unterstützt.
  • Spezialisierte Modelle außerhalb des FMAPI-Katalogs, z. B. MedGemma.
  • Multimodale Modelle (Vision-Language) wie Qwen/Qwen2.5-VL-3B-Instruct.
  • Jedes Modell, das auf ein 1xH100 passt (80 GB GPU-Speicher).

Requirements

  • Benutzerdefinierte LLM-Bereitstellung befindet sich in Der Betaversion. Arbeitsbereichsadministratoren können dieses Feature über die Vorschauseite aktivieren oder deaktivieren. Siehe Manage Azure Databricks Previews.

  • Serverlose GPU-Berechnung. Eine A10 GPU ist die empfohlene Entwicklungsumgebung für kleinere Modelle, H100 für größere Modelle.

  • MLflow 3.12 oder höher. Das Startnotebook ist angeheftet mlflow==3.12.0. Wenn Sie Ihre eigene Umgebung erstellen, verwenden Sie dieselbe Version.

Schritt 1: Einrichten Ihrer Umgebung

Erstellen Sie ein Notizbuch auf serverlosen GPU-Compute mit einer A10-GPU. Installieren Sie vLLM und deren Abhängigkeiten. Das Starter-Notebook legt eine getestete vLLM-Version fest.

Sie können Abhängigkeiten auch über eine serverlose Umgebung angeben, anstatt %pip install zu verwenden.

Important

Legen Sie Ihr Arbeitsverzeichnis auf lokale Festplatte fest (z. B. mit tempfile.mkdtemp()). Das /Workspace Dateisystem unterstützt keine großen Dateien wie Modellgewichtungen.

Schritt 2: Herunterladen ihres Modells

Laden Sie Modellgewichte von Hugging Face mit snapshot_download. Das Start-Notebook verwendet Qwen/Qwen3-4B als Beispiel, aber Sie können jedes Modell verwenden, das in das Speicherbudget Ihrer ausgewählten GPU passt, einschließlich der folgenden Modelle:

  • Multimodale Modelle wie Qwen/Qwen2.5-VL-3B-Instruct für Vision-Language-Anwendungsfälle.
  • Größere Modelle, die auf eine 1xH100 passen, wie etwa openai/gpt-oss-120b.

Wählen Sie eine GPU basierend auf den Speicher- und Leistungsanforderungen Ihres Modells aus.

Grafikprozessor (GPU) GPU-Arbeitsspeicher workload_type
T4 16 GB GPU_SMALL
A100 80 GB GPU_LARGE

Schritt 3: Lokales Testen des Modells mit vLLM

Testen Sie vor der Bereitstellung das Modell direkt in Ihrem serverlosen GPU-Notizbuch, indem Sie einen lokalen vLLM-Server starten. Mit lokalen Tests können Sie das Modell überprüfen, mit vLLM-Parametern experimentieren und Probleme beheben, bevor Sie einen Dienstendpunkt erstellen.

Wichtige Dinge zu wissen:

  • Serverlose GPU-Compute ermöglicht nur Ports 3000-3999 für lokale Tests. Wählen Sie einen Port in diesem Bereich aus; Das Startnotizbuch verwendet 3080.
  • Der vLLM-Server stellt unter /invocations eine OpenAI-kompatible API bereit.
  • Sie können sowohl normale als auch Streaminganforderungen testen.
  • Optimieren Sie Parameter wie --dtype, --max-model-len, und --gpu-memory-utilization für Ihr Modell.
  • Fügen Sie --enforce-eager hinzu, um den Start zu beschleunigen, auf Kosten eines Teils der Inferenzleistung.
  • Verwenden Sie für größere Modelle eine serverlose GPU-Variante für H100 für lokale Tests.

Wenn Sie mit der Konfiguration zufrieden sind, beenden Sie den lokalen Server, bevor Sie fortfahren.

Schritt 4: Protokollieren des Modells mit einem benutzerdefinierten Einstiegspunkt

Dieser Schritt verbindet Ihr lokales Setup mit Model Serving und verfügt über die folgenden Konfigurationsanforderungen:

  • Der Parameter task muss den Wert "llm/v1/chat" haben.
  • Der Einstiegspunkt muss am Port 8080 beginnen, dem port, den das Model Serving erwartet.
  • Der Einstiegspunktbefehl muss das, was Sie in Schritt 3 getestet haben, mit Port 8080 anstelle des lokalen Ports spiegeln.
  • Der Einstiegspunkt wird aus dem Ordner "MLflow-Modellartefakte" gestartet, sodass Modellpfade relativ zu diesem Ordner sind.
metadata = {
    "task": "llm/v1/chat",
    "entrypoint": (
        "python -u -m vllm.entrypoints.openai.api_server "
        "--model qwen3 --served-model-name qwen "
        "--host 0.0.0.0 --port 8080 "
        "--dtype float16 --max-model-len 16384 "
        "--gpu-memory-utilization 0.85"
    ),
}

Schritt 5: Registrieren des Modells im Unity-Katalog

Registrieren Sie das Modell mit mlflow.register_model in Unity Catalog. Die Bereitstellung benutzerdefinierter LLMs hängt von Express-Bereitstellungen ab. Verwenden Sie den env_pack="databricks_model_serving" Parameter, um ihn zu aktivieren.

Fügen Sie beispielsweise Folgendes zu Ihrem Notizbuch hinzu:


model_version = mlflow.register_model(model_info.model_uri, UC_MODEL_NAME, env_pack="databricks_model_serving")

Schritt 6: Erstellen eines Dienstendpunkts

Erstellen Sie den Endpunkt über die UI oder programmgesteuert mit dem Azure Databricks SDK. Die wichtigsten Entscheidungen sind Rechentyp, Workload-Größe und das Verhalten bei der Skalierung auf null.

Wählen Sie anhand Ihres Modells und Ihrer Cloud eine workload_type aus:

workload_type Grafikprozessor (GPU) Hinweise
GPU_SMALL 1x T4 (16 GB) Kleinste Option.
GPU_LARGE 1x A100 (80 GB) Empfohlen für große LLM-Workloads.

workload_size (Small, Mediumoder Large) steuert die Anzahl der bereitgestellten Replikate hinter dem Endpunkt. Verwenden Sie Small für Entwicklung und Workloads mit geringem Datenaufkommen.

Das folgende Beispiel zeigt eine typische Konfiguration:

ServedEntityInput(
    entity_name="main.<catalog>.<model_name>",
    entity_version="<version>",
    workload_type=ServingModelWorkloadType.GPU_MEDIUM,
    workload_size="Small",
    scale_to_zero_enabled=True,
)

Auf-Null-Skalierung und Kapazitätsplanung

Benutzerdefiniertes LLM-Serving in der Beta stellt eine feste Anzahl von Replikaten hinter Ihrem Endpunkt bereit. Die automatische Skalierung zwischen mehr als null Replikaten wird noch nicht unterstützt, daher müssen Sie größe workload_type und workload_size für ihren Spitzendatenverkehr festlegen. Der Endpunkt stellt Anforderungen, die die Kapazität der bereitgestellten Replikate überschreiten, in die Warteschlange.

Setzen Sie scale_to_zero_enabled=True, damit der Endpunkt bei Inaktivität auf null Replikate herunterskaliert wird und bei der nächsten Anfrage das erste Replikat per Kaltstart gestartet wird.

Warning

LLM-Endpunkte haben lange Kaltstartzeiten. Das Laden von Modellgewichten und das Starten von vLLM dauert in der Regel ein bis mehrere Minuten, je nach Modellgröße und GPU. Verwenden Sie scale_to_zero_enabled=True für Entwicklungs- oder Workloads mit niedriger Priorität, bei denen eine Latenz von mehreren Minuten bei der ersten Anfrage gelegentlich akzeptabel ist. Legen Sie für latenzempfindlichen Produktionsdatenverkehr fest scale_to_zero_enabled=False , damit der Endpunkt immer bereit ist.

Schritt 7: Abfragen Ihres Endpunkts

Nachdem der Endpunkt bereit ist, wird er auf der Seite des Endpunkts automatisch im AI Playground angezeigt. Sie können sie auch programmgesteuert mit dem Databricks SDK, dem OpenAI SDK oder curl abfragen.

Databricks SDK

w.serving_endpoints.query(
    name="<endpoint-name>",
    messages=[ChatMessage(role=ChatMessageRole.USER, content="Hello")],
)

OpenAI SDK

client = OpenAI(
    api_key=DATABRICKS_TOKEN,
    base_url=f"{DATABRICKS_HOST}/serving-endpoints",
)
client.chat.completions.create(
    model="<endpoint-name>",
    messages=[{"role": "user", "content": "Hello"}],
)

cURL

curl -X POST \
  -u "token:$DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"messages":[{"role":"user","content":"Hello"}]}' \
  https://<workspace-url>/serving-endpoints/<endpoint-name>/invocations

Überwachen Sie Ihren Endpunkt

Die Bereitstellung benutzerdefinierter LLMs verwendet dieselbe Observability-Infrastruktur wie standardmäßige Endpunkte für die benutzerdefinierte Modellbereitstellung, jedoch mit einigen vLLM-spezifischen Erweiterungen, die in den folgenden Abschnitten beschrieben werden.

Liveprotokolle

Die Registerkarte Protokolle auf der Endpunktseite in der Serving-Benutzeroberfläche zeigt stdout und stderr aus Ihrem vLLM-Prozess in Echtzeit an. Sie können auch über die Protokoll-API auf diese Ausgabe zugreifen.

Persistent gespeicherte Protokolle und Metriken

Wenn Telemetrie aktiviert ist, werden protokolle und Metriken für die langfristige Aufbewahrung, SQL-Abfrage und Compliance in Unity Catalog Delta-Tabellen beibehalten. Siehe Benutzerdefinierte Modellbereitstellungsdaten in Unity Catalog beibehalten für vollständige Einrichtungsanweisungen, Anforderungen und Tabellenschemas.

Für benutzerdefinierte LLM-Dienste speziell:

  • Protokolle: stdout und stderr aus dem vLLM-Prozess werden automatisch erfasst. Es ist kein anwendungsseitiger Protokollierungscode erforderlich.
  • Metrics: Azure Databricks verschrottet automatisch den Prometheus /metrics-Endpunkt des vLLM-Servers und speichert die Metriken zusammen mit Protokollen. Standardmäßig erhalten Sie Latenz, Durchsatz, Tokenanzahl, Warteschlangentiefe und KV-Cache-Auslastung pro Anforderung.

Telemetriedaten abfragen

Während der Betaversion gibt es keine Benutzeroberfläche zum Visualisieren von Protokollen oder Metriken. Abfragen der gespeicherten Daten direkt im Unity-Katalog mithilfe von SQL oder einem Notizbuch. Sehen Sie sich die Metrik- und Protokollschemas an, die in persist custom model serving data to Unity Catalog dokumentiert sind.

Das folgende Notizbuch zeigt, wie Sie die dauerhaften vLLM-Metriken analysieren und visualisieren:

Benutzerdefiniertes LLM-Notizbuch zur Bereitstellung von Metriken

Notebook abrufen

Beispiel-Notebook

Entwickeln und testen Sie das Modell in einem Notebook mit serverloser GPU, protokollieren Sie anschließend dieselbe Konfiguration und stellen Sie sie als Bereitstellungsendpunkt bereit. Das folgende Notebook enthält den vollständigen ausführbaren Ablauf aus diesem Leitfaden.

Benutzerdefiniertes Starter-Notebook für die LLM-Bereitstellung

Notebook abrufen

Einschränkungen

Die folgenden Einschränkungen gelten während der Betaversion.

  • Keine automatische Skalierung zwischen Replikaten. Scale-to-Zero wird unterstützt.
  • Nur die LLM-Chat-Aufgabe (llm/v1/chat) wird unterstützt, einschließlich multimodaler Funktionen.
  • Keine Routenoptimierung.
  • Keine Benutzeroberfläche zum Visualisieren von Protokollen oder Metriken. Abfrage-Telemetrie direkt im Unity-Katalog.

Wenden Sie sich für Feedback oder Fragen an Ihr Azure Databricks Kontoteam.