Important
這項功能目前處於 公開預覽版。 工作區管理員可以從 「預覽 」頁面控制對此功能的存取。 請參閱 管理 Azure Databricks 預覽。
本頁說明如何在 Model Serving GPU 端點上部署自己的 LLM。 任何由 vLLM 執行的模型都會成為帶有 OpenAI 相容 API 的生產端點。 運作方式如下:
- 你要執行推論伺服器,例如 vLLM,並選擇它的版本和設定。
- 你要在 無伺服器 GPU Notebook 中測試伺服器。 錯誤的旗標或記憶體不足錯誤會在幾秒內出現,而非部署後才出現。
- 你將你建立且確認可運作的指令和環境部署到生產端點。
快速入門
將以下筆記本匯入你的工作區,並在配備 A10 GPU 的 AI Runtime 上按一下 全部執行。 大約 15 分鐘內,你就會有一個 Qwen3.5-4B 端點,能回應相容 OpenAI 的聊天請求。
以 vLLM 部署 Qwen3.5-4B
何時使用自訂 LLM 服務
在以下情況下使用自訂大型語言模型(LLM):
- 你在 AI Runtime 上微調了大型語言模型,想要部署並提供服務。 請參考 下方段落 中的範例。
- 你想要提供一個 Foundation Model APIs(FMAPI)不支援的開放模型,例如新的大型語言模型(LLM)、語音轉文字模型或嵌入模型。
- 你想改變 LLM 的執行時或架構,並且需要控制執行時和環境。
以下情況下不要使用自訂 LLM 服務:
- FMAPI 提供你所需的模型,且未改變。 FMAPI 使用更簡單且高度優化。
- 這個模型無法裝在約 80 GB 記憶體的單一顯示卡上。 例如,Qwen3.8-27B 和 gpt-oss-120b 可以,但 Kimi K3 和 GLM 5.3 不行。
- 你需要達到頂尖水準的吞吐量或每代幣價格,且不需調整。 效能能與 開放原始碼 vLLM 在同一張 GPU 上媲美。
Requirements
客製化 LLM 服務有以下要求:
- 你的工作空間必須具有 無伺服器 GPU 運算。
- 你必須從無伺服器 GPU 筆記本中登錄模型。 從 CPU 環境記錄的模型會封裝 CPU 相依性,導致 GPU 端點無法啟動。
- 你必須有權限在 Unity Catalog 結構描述中建立模型。
- 你必須向
env_pack="databricks_model_serving"註冊該模型。 自訂 LLM 服務以 express deployments 為基礎,express deployments 將筆記本環境與模型打包。 - 你必須使用 MLflow 3.12 或以上,以及
databricks-sdk0.102.0 或以上。 AI v6 環境包含兩者。
入門記事本
每本筆記本都會將 Hugging Face 的一個模型部署到查詢端點,就像 快速入門一樣。 你可以照原樣運行,或是從一個開始 部署你自己的模型。
| 型號 | 任務 | 環境 | 筆記型電腦用 GPU | 端點 GPU |
|---|---|---|---|---|
| Qwen3.5-4B | 聊天室 | AI v6 或 標準 v6 | A10 | A10G (AWS), A100 (Azure) |
| Qwen3.8-27B | 支援工具呼叫的聊天 | AI v6 | H100 | H100 (AWS), A100 (Azure) |
| Gemma 4 26B-A4B | 使用工具呼叫聊天 | AI v6 | H100 | H100 (AWS), A100 (Azure) |
| Muse Glimmer 30B | 聊天室 | 標準 v6 | H100 | H100 (AWS), A100 (Azure) |
| Whisper large-v3-turbo | 語音轉文字 | AI v6 | A10 | A10G (AWS), A100 (Azure) |
| Qwen3-Embedding-0.6B | Embeddings | AI v6 | A10 | A10G (AWS), A100 (Azure) |
AI v6 和標準 v6 是 AI 執行環境。 AI v6 預載並配備 vLLM、PyTorch、Transformers 及其他常見的機器學習套件,隨時可用。 請參閱 AI v6 套件清單。 Standard v6 筆記本會自行安裝 vLLM,因此你要選擇其版本。 當你的模型需要比 AI v6 包含的更新 vLLM 或 transformers 時,可以使用標準 v6 筆記本,例如 Muse Glimmer。
部署你自己的模型
若要為另一個模型提供服務,請選擇具有相同任務且配備你的模型所需 GPU 的入門 notebook。 先更改 MODEL_REPO_ID 並更改 vllm_command 中的旗標,然後執行筆記本。 每個 Notebook 都會執行以下步驟:
- 可從 Hugging Face 下載模型權重,或從訓練檢查點取得。
- 在 Notebook 中啟動 vLLM 並向它提問。
- 用 vLLM 指令作為模型的入口點,並將其註冊到 Unity Catalog,作為 express deployment。
- 建立一個服務端點,其會啟動相同的指令。
- 用 OpenAI 客戶端、Databricks SDK 或 SQL
ai_query查詢端點。
以下範例中,模型的 metadata 保存任務與入口點:
import mlflow
from mlflow.pyfunc.model import ChatCompletionResponse, ChatModel
# The endpoint runs the entrypoint and never calls predict, but MLflow needs a model class to log.
class Placeholder(ChatModel):
def predict(self, context, messages, params):
return ChatCompletionResponse.from_dict({"choices": []})
model_info = mlflow.pyfunc.log_model(
name="my-model",
python_model=Placeholder(),
artifacts={"model_dir": "my-model"}, # the weights folder, which --model names
metadata={
"task": "llm/v1/chat",
"entrypoint": (
"python -u -m vllm.entrypoints.openai.api_server "
"--model my-model --served-model-name my-model "
"--host 0.0.0.0 --port 8080 --max-model-len 16384"
),
},
)
mlflow.register_model(model_info.model_uri, "<catalog>.<schema>.my_model", env_pack="databricks_model_serving")
部署微調模型
在 AI Runtime 上微調模型,並從同一本筆記本提供服務。 舉例可參考 監督微調(全)及 Qwen3.5-0.8B 的部署。 教學在單一 H100 上微調 Qwen3.5-0.8B,並比較訓練前後的答案,並提供微調後模型的服務。
支援任務
模型中繼資料中的 task 會設定該端點提供服務的 API。 你的伺服器必須為該任務公開 OpenAI 相容的 API。 其他任務,例如 llm/v1/completions,則不被支援。 下表列出了支援的任務。
task |
車型類型 | 使用…查詢 |
|---|---|---|
llm/v1/chat |
聊天模型,包括視覺語言模型 | chat.completions |
llm/v1/embeddings |
內嵌模型 | embeddings |
llm/v1/audio/transcriptions |
語音轉文字模型 | audio.transcriptions |
llm/v1/audio/translations |
語音轉英文翻譯模型 | audio.translations |
選擇顯卡
Azure Databricks 建議你在實際提供服務時使用的 GPU 上開發,所以你測試的設定就是部署時使用的設定。 下表列出用於自訂 LLM 服務的 GPU。
workload_type |
GPU | 註釋 |
|---|---|---|
GPU_SMALL |
1 台 T4(16 GB) | 參數量最多約為 5B。 |
GPU_LARGE |
1 台 A100(80 GB) | 大型模型。 正式推出。 |
GPU_LARGE_RTX |
1 張 RTX PRO 6000(96 GB) | 記憶體和速度都比 A100 強。 可於 southeastasia 及 westus2中取得。 |
常見問題
更換筆記型電腦時最常見的問題如下:
- 下載在
/Workspace中失敗,該系統不接受多 GB 檔案。 像入門筆記本檔一樣,把權重下載到本機磁碟。 - 本地伺服器無法啟動。 無伺服器 GPU 筆記本只支援埠 3000 到 3999,所以可以在其中一個埠上測試。 只有 entrypoint 使用 8080 埠,且必須與你測試的指令相符。
- 端點找不到權重。 入口點會在模型的 artifacts 資料夾中執行,因此
--model必須指定為你所記錄的權重資料夾名稱。 - 嵌入模型不提供嵌入向量。 啟動 vLLM
--runner pooling。 -
上傳
TimeoutError('Timed out after 0:05:00')或model_environment.tar時,註冊因model_version.tar而失敗。 升級到databricks-sdk0.102.0 或更高版本,然後重新註冊該模型。
建立端點
從 Serving UI 或像入門筆記本一樣使用 Databricks SDK 建立端點。
workload_type選擇 GPU,而 workload_size(Small、Medium或 Large)設定複本數量。
ServedEntityInput(
entity_name="<catalog>.<schema>.<model>",
entity_version="<version>",
workload_type=ServingModelWorkloadType.GPU_MEDIUM,
workload_size="Small",
scale_to_zero_enabled=False,
)
縮減至零和容量
目前自訂的 LLM 端點不會動態自動擴展,所以要將 workload_size 規模設定為符合你的尖峰流量。
在縮放到零時,閒置端點會停止其所有副本。 下一個請求會等待一到數分鐘,因為 vLLM 會再次載入模型,且所有副本都要重新啟動。 Azure Databricks 建議關閉生產流量的 scale-to-zero。
Warning
擴展能力並不保證。 每當 Azure Databricks 需要為您的端點取得新 GPU,例如在建立時、在 workload_size 增加時,或端點從零喚醒時,若雲端供應商在您的區域內沒有 GPU 容量,請求可能會停止回應。 這適用於所有 GPU 類型。 Databricks 透過暖池和預留機制來緩解這個問題,讓 GPU 容量保持可用且隨時可用。
查詢您的端點
AI 遊樂場中會出現一個可立即使用的聊天端點。 以下範例以 Databricks SDK、OpenAI 用戶端及 REST 呼叫端點。
Databricks SDK
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole
w = WorkspaceClient()
w.serving_endpoints.query(
name="<endpoint-name>",
messages=[ChatMessage(role=ChatMessageRole.USER, content="Hello")],
)
OpenAI 用戶端
from openai import OpenAI
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"}])
client.embeddings.create(model="<endpoint-name>", input=["The quick brown fox jumps over the lazy dog."])
with open("speech.flac", "rb") as audio:
client.audio.transcriptions.create(model="<endpoint-name>", file=audio)
REST:聊天
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
REST:嵌入
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
有些嵌入模型期望每個輸入都有前綴,例如 search_query: 或 search_document:。 檢查模型卡。
監控你的端點
端點的 日誌 標籤會即時顯示你伺服器的 stdout 和 stderr。
logs API 回傳相同的輸出。
Azure Databricks 會將你的 vLLM 伺服器指標轉送,並在端點的 Metrics 索引標籤中將其繪製成圖表:
- 延遲:到第一個標記的時間、每個輸出標記的時間、請求延遲和佇列時間。
- 負載:正在執行和等待中的請求。
- KV 快取:使用率與命中率。
- 吞吐量:每秒提示與產生 token 數。
匯出指標 API 會以 Prometheus 格式回傳相同的指標,所以你可以把它們爬到 Prometheus 或 Datadog 裡。
啟用遙測功能後,Azure Databricks 也會將伺服器日誌和 vLLM Prometheus 指標儲存到 Unity Catalog 資料表,讓你能在更長時間內查詢這些資料。 請參見
Pricing
你按 GPU 實例小時付費,和其他 GPU 自訂模型服務一樣。 參見 模型服務定價。
限制和區域可用性
你從 AI 執行時記錄自訂 LLM,因此自訂 LLM 服務在與無伺服器 GPU 運算相同的區域內可用。 這些是 AWS 和 Azure 在美國的區域。 不支援 GCP。
以下功能即將推出:
- LoRA 轉接器。
- 跨區服務。
- 在 AI 執行環境外記錄模型,例如從 Databricks 執行環境或 CPU 無伺服器。
不支援下列功能:
- KV-cache 感知型路由。
- 路線優化。