Janus:支援 Vulkan 的本地 LLM 伺服器與 OpenAI 兼容 API

Janus 是一個單一的 Go 二進位檔案,可於 GPU 或 CPU 上本地執行 .gguf 模型,並提供 OpenAI 兼容 API,讓 Cursor 和 Cline 等客戶端能輕鬆整合。透過 llama.cpp 的 Vulkan 後端,Janus 可在 AMD、Intel 和 NVIDIA GPU 上實現硬體加速推理,且無需 Python、Docker 或 Ollama 執行環境。

核心功能與技術能力

Janus 提供 llama.cpp 的輕量級封裝,簡化本地模型的部署。其主要技術優勢包括:

  • 跨廠商 GPU 加速:使用 Vulkan 後端支援廣泛的硬體,包括 AMD、Intel 和 NVIDIA GPU,並在無相容圖形硬體的系統上提供 CPU 回退。
  • OpenAI 兼容 API:實作標準端點如 /v1/chat/completions 和 /v1/models,使其可作為任何相容客戶端的 OpenAI 替代方案。
  • 動態模型管理:透過 /models/load 端點支援熱交換 .gguf 模型,無需重啟伺服器。
  • 推理模型支援:特別處理「思考」模型,將 ⁅ 推理區塊拆分至專用的 reasoning_content 欄位。
  • 自動化設定:自動從 GGUF 元資料檢測對話範本,減少手動提示格式化的需要。

系統需求與部署

Janus 設計為低依賴性,僅需 Go 1.22+ 即可從原始碼建置。

平台支援

平台 要求
Windows Windows 10/11,Go 1.22+,建議具備 Vulkan 功能的 GPU
Linux Go 1.22+,Vulkan 或 CPU
macOS Go 1.22+,CPU 後端(Vulkan 支援因版本而異)

設定參數

使用者透過 .env 檔案設定伺服器。關鍵變數包括:

  • INFERENCE_BACKEND:設定為 vulkan、cpu 或 openrouter。
  • JANUS_GPU_LAYERS:控制 GPU 卸載(-1 表示所有層皆在 GPU,0 表示僅 CPU)。
  • JANUS_VRAM_CEILING_MB:提供 VRAM 預算提示,以管理記憶體配置。
  • JANUS_MODEL_PATH:.gguf 模型檔案的絕對或相對路徑。

API 端點

Janus 提供多個端點,用於健康監控、模型管理與推理:

方法 路徑 描述
GET /health 活性檢查(使用 ?deep=true 取得詳細狀態)
GET /v1/models 列出可用模型
POST /v1/chat/completions 支援串流的對話介面
POST /models/load 熱交換目前使用的模型
GET /models/list 列出模型資料夾中的可用 .gguf 檔案
GET /engine/status 回傳目前的 VRAM 使用量與後端資訊

社群分析與批判性觀點

儘管 Janus 簡化了部分使用者的設定流程,但 Hacker News 上的技術社群對其實用性與效能提出多項疑問:

與 llama.cpp 的重複性

有使用者認為 Janus 對 llama.cpp 原生提供的 llama-server 幾乎無額外價值。

"這似乎只是 libllama 的封裝,有什麼意義?llama.cpp 已經內建網路伺服器。我沒看到 README 中有任何是 llama.cpp 不支援的功能。"

硬體效能問題

對於 Vulkan 後端的效率,特別是在 Intel 硬體上,存在疑慮,認為其可能帶來顯著的額外開銷。

"根據我所見,Vulkan 在 Intel 硬體上會帶來大量額外開銷。"

缺乏基準測試

批評者指出,缺乏與 vLLM、SGLang 或 ExLlama 等高效能推理引擎的效能比較資料,使評估其在生產或高吞吐量使用情境下的效率變得困難。

Sources

相關

  • Dispatch
  • 專案
  • 專案
  • 專案
  • 專案