Yinsongxu/LLM2Jev
Turn local language models into Jev-style structured decision models. Get results from text and images with prefill alone—no token-by-token decoding required.
🧠 什麼是 LLM2Jev?
LLM2Jev 是一個開源函式庫,可讓您將本地大型語言模型 (LLM) 作為 Jev 風格的決策引擎 執行。它不是逐 token 生成文字,而是預填充模型一次,讀取 logits,並直接計算一組答案候選項的機率。結果是結構化的決策輸出(例如分數、選擇),可供期望 Jev / System One API 的應用程式使用。
此專案支援三個後端:
- SGLang – 高效能推論伺服器,可快取前綴(Radix Cache)並有效評分多個候選項。
- Transformers – 經典的 Hugging Face 管線。
- MLX – 適用於文字和視覺模型的 Apple-Silicon 原生推論。
它支援純文字以及多模態輸入(文字 + 影像),並可透過 Python API 或與 Jev 的 /v1/systemone API 相容的 HTTP 端點存取。
✨ 核心功能(依 README 所述)
| 功能 | 說明 |
|---|---|
| 廣泛的後端支援 | 透過 SGLang、Transformers 或 Apple Silicon 上的 MLX 執行本地 LLM(僅文字或視覺語言)。 |
| 僅 prefill 推論 | 模型執行一次以產生 logits;候選機率從這些 logits 推導,無需迭代解碼。 |
| Apple Silicon 加速 | MLX 後端在 M 系列 Mac 上提供量化模型、批次處理和前綴重用。 |
| 多模態輸入 | 您可以在請求的 state 或 instructions 中將影像與文字一起提供。 |
| 順序無關評分 | 每個候選項獨立評估,因此打亂選項不會影響分數。 |
| 冷請求上的前綴重用 | 對於具有多個候選項的長提示,第一個候選項建立快取,後續候選項重用該快取,減少重複工作。 |
| 與 Jev 相容的 HTTP 服務 | 公開模仿官方 Jev API 的 POST /v1/systemone 端點。 |
🚀 快速開始(Linux + NVIDIA GPU 範例)
# 複製並安裝 SGLang 後端的額外依賴項
git clone https://github.com/Yinsongxu/LLM2Jev.git
cd LLM2Jev
uv sync --extra sglang # 或 `pip install -e .[sglang]`
source .venv/bin/activate
# 使用本地因果模型(HF 格式)執行示範腳本
python examples/sglang_inference.py --model-path /path/to/model
此腳本向模型發送 Choice、Score 和 Noul 問題,並列印 JSON 回應。
對於 Apple-Silicon 使用者,相同的命令可與 MLX 後端搭配使用(請參閱安裝文件)。基於影像的請求涵蓋在 docs/multimodal.md 中。
📦 安裝
儲存庫提供詳細指南(docs/installation.md),列出:
- Python 3.12+ 需求
- 可選額外項目:
sglang、transformers、mlx - CUDA(Linux)或 Metal(macOS)的系統函式庫
- 建議的套件管理器 uv(備用為 pip)
📖 開始使用
使用指南(docs/usage.md)引導您了解:
- 離線 Python API – 用於評分的直接函式呼叫。
- 線上 HTTP 服務 – 啟動接受 Jev 相容請求的伺服器。
- 在
staged(前綴重用)和all(無重用)評分策略之間選擇。 - 如何建構多模態負載。
🎮 示範
| 示範 | 說明 |
|---|---|
| Web 示範 | 互動式 UI,用於提交問題並檢視機率分解。(demos/web/README.md) |
| 貪吃蛇示範 | 一個小型遊戲,LLM 根據目前棋盤狀態決定蛇的移動。(demos/snake.py) |
| MuJoCo 揀選與放置 | 展示機器手臂使用 LLM 驅動的決策來揀選物體。(demos/pick_place/README.md) |
README 中包含動畫 GIF 以說明每個示範。
📊 基準測試
Qwen3-1.7B 模型在 RTX 5090 上的效能數據記錄在 docs/shared-prefix-benchmarks.md 中。基準測試比較:
staged(前綴重用)與all(無重用)- 冷快取與熱快取情境
- 輸入長度和候選數量對延遲和吞吐量的影響。
🗺️ 路線圖(目前狀態)
- ✅ 互動式 Web 示範已完成
- ✅ Transformers 和 SGLang 的初始本地影像支援
- ⬜ 擴展更多模型大小和資料集的基準測試
- ⬜ 新增更多多模態任務和示範
- ⬜ 更深入評估決策品質與延遲的權衡
🧪 測試
使用以下命令執行測試套件:
python -m unittest discover -s tests -v
儲存庫包含評分管線和 HTTP 服務的單元測試。
📄 授權
Apache License 2.0 – 免費供商業和學術使用。
TL;DR:LLM2Jev 透過直接從單次 prefill 傳遞中對候選答案進行評分,將任何本地執行的 LLM(文字或視覺)轉變為快速、與 Jev 相容的決策引擎。它支援 SGLang、Transformers 和 Apple-Silicon MLX 後端,提供 Python API 和 HTTP 服務,並包含從 Web UI 到機器手臂模擬等示範。
相關
- 專案
- 專案
- 專案
- 專案