您只需一個指令,就能在 Hugging Face 基礎設施上啟動一個私有且相容 OpenAI API 的大型語言模型 (LLM) 端點。這項服務按秒計費,無需佈建伺服器或 Kubernetes,一旦啟動,您就能從筆記型電腦、筆記本或任何地方查詢它。

這是為測試、評估或批次生成快速部署模型的最佳方式。如果您需要的是託管式、生產就緒的服務,那麼 Inference Endpoints 會是更好的選擇,文章結尾會詳細說明兩者的差異。以下將完整介紹整個流程。

首先,您需要具備有效的付款方式或預付信用額度,因為 Jobs 服務會根據硬體使用量按分鐘計費。請確保您的 `huggingface_hub` 版本為 1.20.0 或更高,可透過 `pip install -U "huggingface_hub>=1.20.0"` 進行更新。

最後,請在本地端登入您的 Hugging Face 帳戶,指令為 `hf auth login`。

`hf jobs run` 指令相當於在 Hugging Face 基礎設施上執行 `docker run`。我們將使用官方的 `vllm/vllm-openai` 映像檔,透過 `--flavor` 參數指定 GPU 類型,並使用 `--expose` 參數公開 vLLM 的連接埠。

例如,執行以下指令即可啟動伺服器:`hf jobs run --flavor a10g-large --expose 8000 --timeout 2h vllm/vllm-openai:latest vllm serve Qwen/Qwen3-4B --host 0.0.0.0 --port 8000`。

其中 `--expose 8000` 會將容器的連接埠透過 Hugging Face 的公開 Jobs 代理路由出去。

指令執行後,會印出您的伺服器可供存取的 URL,例如 `https://<job_id>--8000.hf.jobs`。請記下 `<job_id>`,後續步驟會用到。伺服器啟動需要幾分鐘時間下載模型權重並開機,當日誌顯示「Application startup complete」時,您的服務就已上線。

vLLM 伺服器支援 OpenAI API 格式,每次請求只需您的 Hugging Face token 作為 Bearer token。最快的方式是使用 `curl` 指令來發送請求,例如:`curl https://<job_id>--8000.hf.jobs/v1/chat/completions -H "Authorization: Bearer $(hf auth token)" -H "Content-Type: application/json" -d '{"model": "Qwen/Qwen3-4B", "messages": [{"role": "user", "content": "Hello!"}], "chat_template_kwargs": {"enable_thinking": false}}'`。

這將返回標準的 OpenAI 格式 JSON 回應,其中 `choices[0].message.content` 會包含模型的回答。您也可以在 Python 中使用 OpenAI 客戶端,將 `base_url` 指向公開的 URL,並將您的 Hugging Face token 作為 `api_key` 傳入。

請注意,此端點是受保護的,並非公開。每個請求都必須攜帶具有該 Job 命名空間讀取權限的 Hugging Face token。這表示存取權限僅限於您或您的組織,因此請勿隨意分享 URL 或將 token 貼到不信任的地方。

Jobs 服務是按秒計費的,因此當您完成使用後,請務必停止伺服器,指令為 `hf jobs cancel <job_id>`。

雖然您設定的 `--timeout` 參數是一個安全網,會自動停止服務,但手動取消通常會更經濟。例如,一個 a10g-large 實例每小時費用約為 1.50 美元,您可以透過 `hf jobs hardware` 查看完整的價格列表,並選擇最適合您模型的最小硬體規格。

相同的指令也適用於部署更大的模型,只需選擇更強大的 `--flavor` 硬體規格,並透過 `--tensor-parallel-size` 參數指示 vLLM 將模型分片到多個 GPU 上。例如,要在兩張 H200 GPU 上運行 122B 的 Qwen3.5 混合專家模型,您可以執行:`hf jobs run --flavor h200x2 --expose 8000 --timeout 2h vllm/vllm-openai:latest vllm serve Qwen/Qwen3.5-122B-A10B --host 0.0.0.0 --port 8000 --tensor-parallel-size 2 --max-model-len 32768 --max-num-seqs 256`。

`--tensor-parallel-size` 的值應與您選擇的硬體規格中的 GPU 數量相符。對於大型模型,建議給予更長的 `--timeout` 時間,因為它們下載和載入所需的時間更長。如果模型因記憶體不足或快取區塊錯誤而無法啟動,首先應嘗試調低 `--max-model-len` 和 `--max-num-seqs` 這兩個參數。

如果您偏好使用聊天介面而非 `curl`,只需幾行 Gradio 程式碼即可連接到相同的端點。在 `vllm serve` 指令中加入 `--reasoning-parser deepseek_r1`,讓 Qwen3 的思考過程能作為獨立欄位返回。

接著,在本地執行提供的 Python 程式碼,您只需提供 Job ID 即可。執行後,開啟 `http://127.0.0.1:7860`,即可開始與模型聊天,模型的思考過程會顯示在可摺疊面板中,回答則在下方。

如果您需要偵錯啟動失敗、監控 GPU 記憶體或互動式地查看日誌,可以直接透過 SSH 進入正在運行的 Job 容器。啟動 Job 時,請加入 `--ssh` 參數,並確保您的公開金鑰已在 `huggingface.co/settings/keys` 註冊。

啟動指令範例:`hf jobs run --flavor a10g-large --expose 8000 --timeout 2h --ssh vllm/vllm-openai:latest vllm serve Qwen/Qwen3-4B --host 0.0.0.0 --port 8000`。然後,使用 `hf jobs ssh <job_id>` 指令連接。

現在您已進入容器內部,可以執行 `nvidia-smi`、檢查進程或直接操作模型,這使得偵錯和監控比從外部讀取日誌更為便捷。請注意,SSH 支援需要 `huggingface_hub` 版本 1.20.0 或更高。

相同的端點也可以作為終端機程式碼代理程式的後端。Pi 是一個與供應商無關的代理程式框架,您可以將其指向您的 Job,就能在自己託管的模型上運行一個具備讀取、寫入、編輯和 Bash 功能的代理程式。

首先,代理程式透過工具呼叫來驅動模型,而 vLLM 只有在伺服器啟用工具呼叫功能時才會接受這些請求。因此,請重新啟動伺服器,並加入 `--enable-auto-tool-choice` 和與模型系列相符的 `--tool-call-parser` 參數。接著,將此 Job 作為自訂供應商新增到 `~/.pi/agent/models.json` 設定檔中。

最後,執行 `pi` 指令即可啟動代理程式。這樣,您之前部署的模型就能在您的終端機中驅動一個互動式程式碼代理程式。

Hugging Face 上部署模型不只有 HF Jobs 一種方式。Inference Endpoints 也是我們提供的託管產品,兩者如何選擇取決於您的需求。當您需要最大的彈性和控制權時,請選擇 HF Jobs。

HF Jobs 就像在 Hugging Face 基礎設施上執行 `docker run`,您可以自由選擇映像檔、精確的 vLLM 服務參數和硬體,並按秒計費。這非常適合實驗、一次性評估、批次生成或在正式部署前對模型進行初步測試。

如果您需要更具生產就緒性的服務,則應選擇 Inference Endpoints。它們提供了長期服務所需的營運便利性,例如更細緻的存取控制(端點可以是公開、受保護或私有的),以及自動縮放至零的功能,讓您在非活動期間無需支付費用。

本文主要介紹 vLLM,但相同的公開連接埠模式也適用於任何相容 OpenAI API 的伺服器。若要使用 llama.cpp 服務 GGUF 模型或運行 SGLang,請參考「Serve Models on Jobs」指南,其中詳細說明了這些後端的使用方式。