Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Important
Deze functie bevindt zich in de bètaversie. Werkruimtebeheerders kunnen de toegang tot deze functie beheren vanaf de pagina Previews . Zie Azure Databricks previews beheren.
Op deze pagina ziet u hoe u aangepaste modellen voor grote talen (LLM's) implementeert in Model Serving met behulp van een vLLM-engine . Gebruik deze werkstroom om nauwkeurig afgestemde modellen, PEFT-varianten, multimodale modellen en andere basismodellen te leveren die niet beschikbaar zijn in Foundation Model API's (FMAPI). Het startersnotitieblok aan het einde van deze pagina bevat alle uitvoerbare code voor de volgende stappen.
Wanneer gebruikt u aangepaste LLM-server
Azure Databricks raadt aangepaste LLM-server aan wanneer u een van de volgende gebruiksscenario's hebt:
- Volledig fijnafgestelde modellen met aangepaste gewichten die u hebt getraind in Azure Databricks.
- Modellen van Hugging Face die niet beschikbaar zijn in FMAPI.
- Aangepaste PEFT-recepten die FMAPI niet ondersteunt.
- Gespecialiseerde modellen buiten de FMAPI-catalogus, zoals MedGemma.
- Multimodale (vision-language) modellen zoals
Qwen/Qwen2.5-VL-3B-Instruct. - Modellen insluiten die niet beschikbaar zijn in FMAPI, zoals
nomic-ai/nomic-embed-text-v2-moe. - Elk model dat past op een 1xH100 (80 GB GPU-geheugen).
Requirements
Aangepaste LLM-server is in bèta. Werkruimtebeheerders kunnen deze functie in- of uitschakelen op de pagina Previews . Zie Azure Databricks previews beheren.
Serverloze GPU-rekenkracht. Een A10 GPU is de aanbevolen ontwikkelomgeving voor kleinere modellen, H100 voor grotere modellen.
MLflow 3.12 of hoger en
databricks-sdk>=0.102.0. Het startnotebook zetmlflow==3.12.0en een compatibele SDK-versie vast. Als u uw eigen omgeving aanmaakt, gebruik dan deze versies. Eerdere SDK-versies kunnen een time-out krijgen bij het uploaden van modelartefacten tijdens de registratie. Zie Er treedt een time-out op bij het uploaden van artefacten tijdens het registreren.
Stap 1: Uw omgeving instellen
Maak een notebook op serverloze GPU-rekenkracht met een A10 GPU. Installeer vLLM en de bijbehorende afhankelijkheden. Het startnotebook legt een geteste vLLM-versie vast.
U kunt ook afhankelijkheden opgeven via een serverloze omgeving in plaats van te gebruiken %pip install.
Important
Stel uw werkmap in op de lokale harde schijf (bijvoorbeeld met behulp van tempfile.mkdtemp()). Het /Workspace bestandssysteem biedt geen ondersteuning voor grote bestanden, zoals modelgewichten.
Stap 2: Uw model downloaden
Download de modelgewichten van Hugging Face met snapshot_download. Het startersnotitieblok gebruikt Qwen/Qwen3-4B als voorbeeld, maar u kunt elk model vervangen dat past bij het geheugenbudget van uw geselecteerde GPU, waaronder de volgende:
- Multimodale modellen zoals
Qwen/Qwen2.5-VL-3B-Instructvoor gebruikssituaties met beeld en taal. - Grotere modellen die op een 1xH100 passen, zoals
openai/gpt-oss-120b.
Selecteer een GPU op basis van de geheugen- en prestatiebehoeften van uw model.
| Graphics Processing Unit (GPU) | GPU-geheugen | workload_type |
|---|---|---|
| T4 | 16 GB | GPU_SMALL |
| A100 | 80 GB | GPU_LARGE |
Stap 3: Het model lokaal testen met vLLM
Voordat u het model implementeert, test u het model rechtstreeks in uw serverloze GPU-notebook door een lokale vLLM-server te starten. Met lokaal testen kunt u het model verifiëren, experimenteren met vLLM-parameters en problemen oplossen voordat u een service-eindpunt maakt.
Belangrijke dingen die u moet weten:
- Serverloze GPU-rekenkracht staat alleen poorten 3000-3999 toe voor lokale tests. Selecteer een poort in dat bereik; het startersnotitieblok maakt gebruik van 3080.
- De vLLM-server maakt een openAI-compatibele API beschikbaar op
/invocations. - U kunt zowel reguliere als streamingaanvragen testen.
- Stem parameters zoals
--dtype,--max-model-lenen--gpu-memory-utilizationvoor uw model af. - Voeg
--enforce-eagertoe voor sneller opstarten, ten koste van enige inferenceprestaties. - Gebruik voor grotere modellen een serverloze GPU-variant van H100 voor lokaal testen.
Wanneer u tevreden bent met de configuratie, stopt u de lokale server voordat u doorgaat.
Stap 4: Het model vastleggen met een aangepast invoerpunt
Deze stap verbindt uw lokale installatie met Model Serving en heeft de volgende configuratievereisten:
- De
taskmoet"llm/v1/chat"zijn (chatmodellen, inclusief multimodale modellen) of"llm/v1/embeddings"(embeddingmodellen). Zie Ondersteunde taken. - Het invoerpunt moet zijn geopend op poort 8080, de poort die Model Serving verwacht.
- De invoerpuntopdracht moet spiegelen wat u in stap 3 hebt getest, met poort 8080 in plaats van uw lokale poort.
- Het invoerpunt wordt gestart vanuit de map MLflow-modelartefacten, dus modelpaden zijn relatief ten opzichte van die map.
Voor een chatmodel:
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"
),
}
Voor een embeddingmodel stelt u task in op "llm/v1/embeddings" en start u de server in embeddingmodus. Met de vLLM-versie die hier wordt gebruikt, is dat --runner pooling (oudere vLLM-versies gebruiken --task embed):
metadata = {
"task": "llm/v1/embeddings",
"entrypoint": (
"python -u -m vllm.entrypoints.openai.api_server "
"--model nomic-embed --served-model-name nomic-embed "
"--runner pooling "
"--host 0.0.0.0 --port 8080 "
"--gpu-memory-utilization 0.85"
),
}
Ondersteunde taken
task |
Modeltype | Zoekoppervlak |
|---|---|---|
llm/v1/chat |
Chatmodellen, waaronder multimodale (beeld-taal)modellen | chat.completions |
llm/v1/embeddings |
Modellen insluiten | embeddings |
De task die u declareert, moet overeenkomen met wat uw entrypoint daadwerkelijk aanbiedt: het entrypoint moet de OpenAI-compatibele API voor die taak beschikbaar maken op poort 8080. In de bovenstaande voorbeelden wordt vLLM gebruikt, maar elke server die aan dit contract voldoet, werkt. Andere taaktypen, zoals llm/v1/completions, worden niet ondersteund.
Stap 5: het model registreren bij Unity Catalog
Registreer het model bij Unity Catalog met behulp van mlflow.register_model. Aangepaste LLM-service is gebaseerd op snelle implementaties, dus de registratie maakt gebruik van de env_pack="databricks_model_serving" parameter en vereist mlflow>=3.12 en databricks-sdk>=0.102.0.
Voeg bijvoorbeeld het volgende toe aan uw notitieblok:
model_version = mlflow.register_model(model_info.model_uri, UC_MODEL_NAME, env_pack="databricks_model_serving")
Stap 6: Een service-eindpunt maken
Maak het eindpunt vanuit de gebruikersinterface of programmatisch met de Azure Databricks SDK. De belangrijkste beslissingen zijn het rekentype, de grootte van de workload en het scale-to-zero-gedrag.
Selecteer een workload_type op basis van uw model en cloud:
workload_type |
Graphics Processing Unit (GPU) | Opmerkingen |
|---|---|---|
GPU_SMALL |
1x T4 (16 GB) | Kleinste optie. |
GPU_LARGE |
1x A100 (80 GB) | Aanbevolen voor grote LLM-workloads. |
workload_size (Small, Mediumof Large) bepaalt het aantal ingerichte replica's achter het eindpunt. Gebruik Small voor ontwikkeling en workloads met weinig verkeer.
In het volgende voorbeeld ziet u een typische configuratie:
ServedEntityInput(
entity_name="main.<catalog>.<model_name>",
entity_version="<version>",
workload_type=ServingModelWorkloadType.GPU_MEDIUM,
workload_size="Small",
scale_to_zero_enabled=True,
)
Schaal naar nul en capaciteitsplanning
Aangepaste LLM-service in bèta richt een vast aantal replica's achter uw eindpunt in.
Automatisch opschalen naar meer dan nul replica's wordt nog niet ondersteund, dus u moet workload_type en workload_size afstemmen op uw piekverkeer. Het eindpunt plaatst aanvragen die de capaciteit van de ingerichte replica’s overschrijden in de wachtrij.
Stel scale_to_zero_enabled=True in om het eindpunt omlaag te laten schalen naar nul replica's wanneer het inactief is. Koude start is traag: het laden van modelgewichten en het starten van vLLM duurt meestal één tot enkele minuten.
Voor latentiegevoelige of productiekritische workloads stelt u scale_to_zero_enabled=False in en stemt u de grootte van workload_size vooraf af op uw piekverkeer.
Warning
Opschalingscapaciteit is niet gegarandeerd. Wanneer Azure Databricks een nieuwe GPU moet toewijzen aan uw eindpunt — bij het maken ervan, bij een toename van workload_size, of wanneer uw eindpunt vanuit nul ontwaakt — kan de aanvraag vastlopen als de cloudprovider in uw regio geen GPU-capaciteit beschikbaar heeft. Dit geldt voor alle GPU-typen. Databricks beperkt dit met warme pools en prereservatie, waardoor GPU-capaciteit beschikbaar en gereed blijft.
Stap 7: Een query uitvoeren op uw eindpunt
Nadat het eindpunt gereed is, wordt het automatisch weergegeven in de AI-speeltuin vanaf de pagina van het eindpunt. U kunt er ook programmatisch query's op uitvoeren met behulp van de Databricks SDK, de OpenAI SDK of curl.
Chatmodellen (llm/v1/chat):
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
Modellen insluiten (llm/v1/embeddings):
OpenAI SDK
client = OpenAI(
api_key=DATABRICKS_TOKEN,
base_url=f"{DATABRICKS_HOST}/serving-endpoints",
)
client.embeddings.create(
model="<endpoint-name>",
input=["The quick brown fox jumps over the lazy dog."],
)
curl
curl -X POST \
-u "token:$DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"input":["The quick brown fox jumps over the lazy dog."]}' \
https://<workspace-url>/serving-endpoints/<endpoint-name>/invocations
Sommige insluitmodellen verwachten een taakspecifiek voorvoegsel voor elke invoer (bijvoorbeeld nomic-embed-text-v2-moe gebruikt search_query: en search_document:). Controleer de kaart van uw model op de invoerconventies.
Uw eindpunt bewaken
Aangepaste LLM-service maakt gebruik van dezelfde waarneembaarheidsinfrastructuur als standaard aangepaste modellen voor eindpunten, maar met enkele vLLM-specifieke extra's die in de volgende secties worden beschreven.
Livelogboeken
Het tabblad Logboeken op de eindpuntpagina in de Serving-UI toont stdout en stderr vanuit uw vLLM-proces in realtime. U kunt deze uitvoer ook openen via de logboeken-API.
Persistente logboeken en metrische gegevens
Wanneer telemetrie is ingeschakeld, worden zowel logboeken als metrische gegevens bewaard in Unity Catalog Delta-tabellen voor langetermijnretentie, SQL-query's en naleving. Zie Persistent aangepast model dat gegevens verwerkt in Unity Catalog voor volledige installatie-instructies, vereisten en tabelschema's.
Voor een aangepaste LLM-server met name:
-
Logboeken:
stdoutenstderrvan het vLLM-proces worden automatisch vastgelegd. Er is geen logboekregistratiecode aan de toepassingszijde vereist. -
Metrics: Azure Databricks automatisch het Prometheus-eindpunt van de vLLM-server
/metricsverwijdert en de metrische gegevens naast logboeken persistent maakt. Standaard krijgt u latentie per aanvraag, doorvoer, tokenaantallen, wachtrijdiepte en KV-cachegebruik.
Telemetriegegevens opvragen
Tijdens bèta is er geen gebruikersinterface voor het visualiseren van logboeken of metrische gegevens. Query's uitvoeren op de persistente gegevens rechtstreeks in Unity Catalog met behulp van SQL of een notebook. Zie de schema's voor metriek en logboeken zoals gedocumenteerd in Aangepaste modelservinggegevens persistent opslaan in Unity Catalog.
In het volgende notebook ziet u hoe u de persistente metrische gegevens van vLLM kunt parseren en visualiseren:
Aangepaste LLM-notebook voor metrische gegevens
Voorbeeld van notebook
Ontwikkel en test het model in een serverloze GPU-notebook , logeer en implementeer dezelfde configuratie als een dienend eindpunt. Het volgende notebook bevat de volledige uitvoerbare werkstroom van deze handleiding.
Starternotebook voor het serveren van aangepaste LLM's
Limitations
De volgende beperkingen gelden tijdens de bètaversie.
- Geen automatische schaalaanpassing tussen replica's. Schaal naar nul wordt ondersteund.
- Alleen de chattaken (
llm/v1/chatinclusief multimodale) en insluitingen (llm/v1/embeddings) worden ondersteund. Zie Ondersteunde taken. - Geen routeoptimalisatie.
- Er is geen gebruikersinterface voor het visualiseren van logboeken of metrische gegevens. Telemetrie direct opvragen in Unity Catalog.
Neem contact op met uw Azure Databricks-accountteam voor feedback of vragen.
Uploaden van artefacten krijgt een time-out tijdens registratie
Wanneer u het model registreert met env_pack, uploadt Azure Databricks de verpakte modelgewichten en omgeving als artefacten (model_version.tar en model_environment.tar). Met databricks-sdk versies ouder dan 0.102.0, kan het uploaden van grote LLM-artefacten na vijf minuten een time-out hebben en mislukt de registratie met een fout zoals hieronder:
MlflowException: The following failures occurred while uploading one or more artifacts to
/Models/<catalog>/<schema>/<model>/<version>: {
'.../model_environment.tar': "TimeoutError('Timed out after 0:05:00')",
'.../model_version.tar': "TimeoutError('Timed out after 0:05:00')"
}
Om dit op te lossen, upgrade naar databricks-sdk>=0.102.0 en registreer het model opnieuw:
%pip install databricks-sdk>=0.102.0