OpenJev 將本地決策模型推論帶入瀏覽器
OpenJev 實現了裝置端的 Jev 風格決策推論
OpenJev 是一個網頁演示,它在瀏覽器中運行本地語言模型,讓您可以透過讀取原始 logits 或提示模型輸出 JSON 分佈來查詢選項機率。該演示不需要後端,無需等待名單,並將所有權重和輸入保留在客戶端。
直接讀取 Logit 與 JSON 生成的比較
直接讀取會讀取模型針對所提供選項的選擇 logits,將其正規化,並在不進行任何 Token 解碼的情況下返回機率向量。JSON 生成則要求模型將相同的分佈寫入為 JSON 物件,並逐個串流輸出 Token。這兩種方法在同一個已載入的模型上依序執行,因此不會爭奪 GPU 資源。
模型目錄與效能數據
| 模型 | 大小 | Authored % | Perturbed % | TypeSafe % |
|---|---|---|---|---|
| Qwen3 0.6B | 639 MB | 44.0 | 52.8 | 40.7 |
| MiniCPM5 2B (預設) | 1.56 GB | 68.6 | 69.3 | 63.7 |
| Qwen3.5 4B | 3.01 GB | 81.3 | 76.6 | 84.5 |
| Published Jev (託管) | – | – | – | 88.3 |
權重從 Hugging Face 獲取並快取在瀏覽器中。首次載入可能需要幾分鐘,特別是對於 4 B 模型。
數據的含義
- 僅限條件機率 – 直接評分是對顯示選項的 softmax;它們不是經過校準的信心分數,並且忽略了模型可能偏好的其他替代方案。
- 模型層級權衡 – 最小的模型可以在手機上運行,但會犧牲準確性。MiniCPM5 是桌面端的預設模型;4 B 模型需要更多的記憶體,可能無法在低階裝置上運行。
- 實際執行時間 – 設定、暖機、提示準備、直接執行、第一個生成的 Token 以及完整生成過程均使用
performance.now()進行測量。不使用預設的基準測試。 - 量化權重 – 該演示透過
wllama使用固定的 GGUF 建置;量化可能會影響速度和品質。
社群反應與常見問題
“Authored 與 Perturbed 之間有什麼區別?” – 該表格區分了原始 (authored) 資料集上的分數與用於穩健性測試的擾動 (perturbed) 版本上的分數。
“這與 Jev 的專有服務相同嗎?” – OpenJev 重現了 Jev 的介面模式(執行時期定義的語義決策),但運行在開放權重的模型上;它不使用 Jev 的封閉模型或訓練資料。
“為什麼在手機上感覺很慢?” – 即使是 0.6 B 的模型在行動硬體上也可能需要半秒到幾秒的時間;該演示比遠端 API 呼叫更快,但仍受限於本地運算能力和 WebGPU 的可用性。
“我可以在沒有 Hugging Face 帳號的情況下運行它嗎?” – 該演示直接從 Hugging Face 下載權重。位於防火牆後的用戶可能需要鏡像站點或手動下載。
“Jev 是商標嗎?” – 一些評論者指出“Jev”是一個註冊商標服務,OpenJev 的命名可能會引起混淆。
實作的技術見解
OpenJev 利用 SGLang(或類似的推論後端)來快取共享的提示前綴,然後為每個選項發出單獨的請求。工作流程大致如下:
- 發送一個包含共享狀態的拋棄式請求。
- 依賴推論引擎的前綴快取來避免重新計算共享部分。
- 針對每個選項發出請求,每個請求都重複共享前綴。
- 從完整詞彙表中提取一組特殊答案 Token 的分數。
- 將這些分數轉換為正規化的機率。
一種更優雅的方法——分叉推論引擎以執行一次共享提示,針對每個選項複製內部狀態,並僅對相關 Token 進行評分——已在 eider 等自訂引擎中得到驗證,預計將出現在 llama.cpp、vLLM 和其他執行時期的後續修補程式中。
限制與待解決問題
- 無 GPU 轉接器 – 部分瀏覽器報告存在 WebGPU,但缺乏可存取的 GPU 轉接器,導致演示回退到 CPU。
- 部分下載支援 – 中斷模型下載會丟棄部分快取的檔案;可恢復下載將提高可用性。
- 法律模糊性 – 使用“Jev”名稱可能侵犯原始服務的商標,且開放實作並未複製 Jev 的專有模型。
- 基準測試透明度 – 雖然演示報告了原始時間,但它沒有提供針對封閉 Jev 服務的標準化延遲或準確性基準測試。
總結
OpenJev 證明了 Jev 風格的決策推論可以完全在瀏覽器中使用開放權重的 LLM 進行重現,同時提供原始 logit 存取和結構化的 JSON 輸出。該專案突顯了模型大小、速度和準確性之間的權衡,並作為未來快速、無 Token 決策 API 開源實作的概念驗證。
Sources
- HNOpenJev
相關
- Dispatch
- Dispatch
- 專案
- 專案
- Dispatch