模型 / 資料集
bentoml/OpenLLM avatar
bentoml/OpenLLM

OpenLLM 評測:一條指令把開源模型變成 OpenAI 相容服務

Run any open-source LLMs, such as DeepSeek and Llama, as OpenAI compatible API endpoint in the cloud.

12,531 個 Star840 個 ForkPythonApache-2.0

秒懂

它是什麼?
OpenLLM 把 Llama、Qwen、DeepSeek 等開源模型打包成 OpenAI 相容 API,號稱一條指令就能啟動。本文拆解它的模型倉庫機制、實際指令與部署路徑,並指出它在自訂模型與權重管理上的界線。
適合誰用?
OpenLLM 適合想快速把 Llama、Qwen、Phi 等主流開源模型變成 OpenAI 相容 API 的開發者,尤其是已經熟悉 BentoML 或打算部署到 BentoCloud 的團隊。它不適合需要重度自訂推論邏輯、或想完全掌控模型權重下載流程的人,因為 OpenLLM 本身不儲存模型權重,gated 模型必須自行處理 Hugging Face 權限與 HF_TOKEN,而且自訂模型得先建立自己的 model repository。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

它解決的是哪一層問題

OpenLLM 要解決的不是模型訓練,也不是模型效果,而是部署。許多開源模型散落在 Hugging Face 上,格式不同、依賴不同、啟動參數不同。要把 Llama 3.3 或 Qwen2.5 跑起來並對外提供服務,工程師得自己處理 tokenizer、sampling、GPU 記憶體配置,還要寫一層 HTTP 介面。OpenLLM 把這些收進一個指令:openllm serve。它的目標使用者是需要快速把模型變成服務的應用開發者,而不是想深入研究推論引擎的研究人員。文件裡反覆強調 OpenAI 相容,這代表你既有的 OpenAI SDK 程式碼可以換個 base_url 就接上。對照組是 Ollama,但 OpenLLM 的定位更偏向雲端部署,BentoML 生態系是它的後盾。它提供的不是單機玩具,而是一條通往 Docker、Kubernetes 與 BentoCloud 的路徑。

模型倉庫與版本標記的實際運作

OpenLLM 的模型清單不是寫死在程式碼裡。它採用 model repository 的概念,預設倉庫指向 GitHub 上的 openllm-models 專案。你用 openllm model list 可以看到所有可用模型,用 openllm model get llama3.2:1b 可以查單一模型的細節。這種設計讓模型支援清單可以獨立更新,不必等 OpenLLM 主程式發版。版本標記也很直接,例如 llama3.2:1b 或 deepseek:r1-671b,參數規模直接寫在冒號後面。但要注意,OpenLLM 本身不儲存模型權重。文件明確說 OpenLLM does not store model weights,gated 模型還需要你先去 Hugging Face 申請權限,再設定 HF_TOKEN 環境變數。這代表第一次啟動時,OpenLLM 會去 Hugging Face 下載權重,你的網路頻寬與硬碟空間會是實際瓶頸。若你連的是私有網路或無法存取 Hugging Face,這個流程就卡住了。

實際指令與啟動流程

安裝方式就是標準的 pip install openllm。裝完之後,openllm hello 會帶你互動式探索。要啟動伺服器,指令是 openllm serve llama3.2:1b,預設監聽在 http://localhost:3000。這個位址同時提供 /v1 的 OpenAI 相容 API,以及 /chat 的網頁介面。用戶端連線時要指定 base_url 為 http://localhost:3000/v1,API key 可以隨便填,文件範例用 'na' 或 'dummy'。模型名稱則要填 Hugging Face 的完整路徑,例如 meta-llama/Llama-3.2-1B-Instruct,而不是啟動時的簡稱。這是個容易踩的坑,文件在 OpenAI Python client 範例中就是這樣寫。另一個指令是 openllm run llama3:8b,它不啟動 HTTP 伺服器,而是直接在 CLI 裡開啟對話。兩者用途不同,serve 給 API 用戶端,run 給本機快速測試。GPU 需求寫得很清楚,例如 llama3.2:1b 標示 24G,llama4:17b16e 需要 80Gx8,這對硬體規劃有直接參考價值。

OpenAI 相容介面的實際接法

相容的關鍵在於用戶端可以沿用熟悉的 OpenAI SDK。文件給了兩個範例,一個是 OpenAI Python client,一個是 LlamaIndex。OpenAI 範例中,client 初始化只要指定 base_url 與 api_key,然後就能呼叫 chat.completions.create,並啟用 stream=True 接收串流回應。LlamaIndex 範例則是把 OpenAI 類別的 api_base 指向 localhost:3000/v1。這種接法讓既有程式碼的遷移成本降到最低。但相容不代表完全一致,OpenAI 服務有許多額外功能,例如 moderation、fine-tuning 專屬端點,這些 OpenLLM 不會提供。文件也只保證 chat completion 的相容性,其他如 embeddings 或 audio 端點並未提及。若你的應用依賴這些進階功能,OpenLLM 的介面可能不夠用。另外,文件範例中 LlamaIndex 的參數寫成 api_bese,這是個明顯的拼字錯誤,真實的 LlamaIndex 參數應為 api_base。這類文件瑕疵在開源專案中常見,但讀者照抄時要小心。

自訂模型的界線與限制

OpenLLM 不是只能跑預設清單上的模型。文件提到可以 add a model repository to run custom models,意思是你可以自建一個 model repository,把自家模型納入 openllm model list。但這條路徑的細節在 README 中被截斷了,後續步驟沒有呈現。從現有資訊推斷,自訂模型必須符合 OpenLLM 對 model repository 的格式要求,而且權重仍要能從某處下載。這不是一個把任意 Hugging Face 模型丟進去就能跑的萬能工具。實際限制在於,OpenLLM 的價值來自它對特定模型的設定檔,這些設定檔涵蓋 tokenizer 行為、prompt template、GPU 配置等。若你的模型不在支援清單,這些設定得自己寫,等於回到手動部署的老路。文件支援的模型清單涵蓋 Llama、Mistral、Qwen、Phi、Gemma、DeepSeek 等主流系列,但長尾模型或剛釋出的新模型可能不在其中。採用前先確認你的模型在不在清單裡,否則 OpenLLM 的優勢會大打折扣。

雲端部署路徑與 BentoML 的關係

OpenLLM 由 BentoML 團隊開發,這不是偶然。BentoML 本身就是一個把 Python 模型包裝成服務並部署到雲端的框架。OpenLLM 的定位是 LLM 專用的前端,真正的封裝與部署底層仍由 BentoML 負責。README 提到 enterprise-grade cloud deployment with Docker, Kubernetes, and BentoCloud,這表示 OpenLLM 不是只能跑在本機。你可以把啟動好的服務打包成 Docker image,丟進 Kubernetes,或直接部署到 BentoCloud。BentoCloud 是 BentoML 的託管平台,OpenLLM 與它的整合是文件中的賣點之一。但這也帶來相依性,若你想脫離 BentoML 生態,改用其他容器編排工具,OpenLLM 的抽象層不一定幫得上忙。設計哲學的部落格文章標題是 From Ollama to OpenLLM,暗示它想取代 Ollama 在雲端場景的位置。Ollama 主打本機簡單使用,OpenLLM 則把重心放在可部署性,兩者取向不同。若你的需求只是本機跑個模型測試,Ollama 可能更輕量,但若要上正式環境並管理多個模型版本,OpenLLM 的 repository 機制與 BentoML 整合會是更完整的方案。

GPU 需求與實際部署的硬體門檻

文件對每個模型都標了 Required GPU,這不是建議值,而是啟動的最低需求。例如 llama3.1:8b 需要 24G,表示單張 RTX 3090 或 A10 勉強可用,但 16G 的顯示卡就跑不動。phi4:14b 需要 80G,這已經是 A100 或 H100 的等級。deepseek:r1-671b 更需要 80Gx16,這不是一般團隊負擔得起的配置。這些數字提醒你,OpenLLM 的便利只限於軟體層,硬體成本不會因為一條指令而消失。若你的 GPU 記憶體不足,openllm serve 可能直接失敗,文件沒有提供量化或 CPU offload 的選項,至少在 README 中看不到。這點與 Ollama 不同,Ollama 在記憶體不足時會嘗試用 CPU 或部分 offload,但 OpenLLM 文件沒有類似描述。若你只有消費級 GPU,能跑的模型會被限制在 1b 或 3b 等級,例如 llama3.2:1b 標示 24G 但實際可能更低,文件沒有細分。部署前先對照自己的 GPU 型號與模型需求,否則會浪費時間在下載權重後才發現跑不起來。

維護成本與授權考量

OpenLLM 採用 Apache-2.0 授權,這對商用相對友善,你可以自由修改與重新發布,只要保留著作權聲明。但專案的維護節奏值得觀察,最後一次 push 是 2026 年 9 月,但最近的 release 停在 2025 年 4 月的 v0.6.30,中間有將近一年半沒有新版本。這不代表專案已死,但對依賴新模型支援的團隊來說,版本停滯會是個風險。模型推出速度很快,若 OpenLLM 沒有跟上,你可能得自己新增 model repository 或改用其他工具。升級成本方面,openllm repo update 可以同步模型清單,但主程式更新仍需手動 pip install --upgrade openllm。由於 OpenLLM 底層依賴 BentoML,升級時可能連帶影響其他 BentoML 服務,這在相依性管理上需要留意。文件沒有提供 rollback 或版本相容性矩陣,這對正式環境的升級規劃是個不確定因素。整體而言,OpenLLM 的維護成本集中在下載權重的網路時間、GPU 記憶體校準,以及追蹤上游模型清單的更新,這些都比自己從零寫部署框架要低,但也不是零。

編輯結論

OpenLLM 適合想快速把 Llama、Qwen、Phi 等主流開源模型變成 OpenAI 相容 API 的開發者,尤其是已經熟悉 BentoML 或打算部署到 BentoCloud 的團隊。它不適合需要重度自訂推論邏輯、或想完全掌控模型權重下載流程的人,因為 OpenLLM 本身不儲存模型權重,gated 模型必須自行處理 Hugging Face 權限與 HF_TOKEN,而且自訂模型得先建立自己的 model repository。採用前應先確認目標模型是否在預設清單內,用 openllm model list 檢查,並實際跑一次 openllm serve 觀察 GPU 記憶體需求是否符合文件標示。授權為 Apache-2.0,改動或商用沒有明顯障礙,但推論背後的 BentoML 相依與版本更新節奏,仍需要納入維護成本評估。

官方來源

  1. bentoml/OpenLLM on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
社群筆記

社群筆記