跳到主要內容

16GB ROCm 本地 LLM-as-a-Verifier 實測數據:Qwen3.5-9B 跑起來到底多快

TL;DR: 用 Qwen3.5-9B(Q4_K)在單張 16GB AMD GPU 上跑本地 LLM-as-a-Verifier,每次 code comparison 約 0.5–2 秒,cache hit rate 66%,正確程式碼穩定給 1.0 分,有 bug 的給 0.0–0.14 分。16GB 跑 9B 模型綽綽有餘,還有空間跑其他服務。 這篇是實測續篇,前兩篇分別講了 架構設計 和 Docker 封裝 。前兩篇講的是「做什麼」跟「怎麼做」,這篇來量「到底多快」。 1. 測試環境 在一台 homelab Linux(CachyOS)上跑的: 項目 內容 GPU AMD 16GB(15.9 GiB)via ROCm 模型 Qwen3.5-9B(8.95B 參數,Q4_K ~5.7GB GGUF) 後端 llama.cpp(llama-server,ROCm HIP build) Verifier Docker container(llm-verifier),port 8010 模型 VRAM ~10.2 GB(模型本身 + 動態 KV cache) GPU 使用率 78% 系統 RAM 62 GB;使用 27 GB(swap 用了 9.3 GB) Context window 131,072 tokens MIN_SCORE 0.8 後端跑在另一台機器上,走 local Gigabit 網路連線。 2. Verifier 在幹嘛 docker-llm-as-a-verifier 包裝了 LLM-as-a-Verifier 這個研究套件,讀取 token-level log probability 來算連續分數,不是簡單的 yes/no 判斷。 Container 開了 7 個 HTTP endpoint: Endpoint Method 用途 /health GET 健康檢查 /v1/compare POST 兩組答案比對評分 /v1/select POST Best-of-N 選最佳 /v1/track POST Agent 軌跡分數追蹤 /v1/directed POST 導...

窮人的 LLM-as-a-Verifier:16GB 顯卡 + ROCm 打造地端 0 成本 Agent 審查閘門

TL;DR: 這篇寫給不想被雲端 API 掏空錢包、又怕 AI Agent 盲目重構改爆 Codebase 的開發者。我們用 Radeon RX 9060 XT 16GB、Linux ROCm (HIP) 硬體加速,加上 Rust 寫的確定性 2PC 防禦門衛,手刻一套符合 PRM(Process Reward Model)規格的地端零成本 AI 外骨骼系統。

1. 痛點:Agent 狂歡背後的帳單破產與程式碼毀滅

Autonomous Coding Agent(OpenCode、Claude Code 等)大幅改變了開發流程,但附帶兩大噩夢:

  • Token 黑洞與 API 帳單爆表:為了確保程式碼品質,Agent 需要頻繁自我思考、多方案比較(Best-of-N)與長鏈修復。幾輪對話下來,雲端 API 帳單直接失控。
  • 確定性缺失(Non-determinism):沒有 Guardrail 攔截的 Agent 就像沒導航的賽車——隨時在背景修改全域 Interface、弄爛 DB Schema,甚至產生語法幻覺。

解答:我們需要 Verifier(過程監督者)。但大廠論文動輒用 A100 叢集配 vLLM 預分配幾十 GB VRAM,一般開發者負擔不起。我們需要一套在地端 16GB VRAM 上順暢跑的「窮人版 Process Supervision 體系」。

2. 硬體與驅動層:為什麼選 Radeon RX 9060 XT 16GB + ROCm (HIP)?

在 Homelab / Linux (CachyOS) 環境下,配 Radeon RX 9060 XT 16GB 搭 ROCm Backend 是 CP 值很高的搭配:

  • HIP 矩陣加速與 VRAM 吞吐:透過 ROCm 原生 HIP 加速,16GB VRAM 能穩穩咬住 Qwen3.5-9B with mmproj(程式碼語意 + 多模態視覺)。
  • 逃離 vLLM 的 VRAM 黑洞:vLLM 預分配 90% VRAM 的機制在單機多任務環境是災難。改用 ROCm 版的 llama-server(GGUF 量化),模型權重只吃 5~9 GB VRAM,剩下的空間還能動態分配 KV Cache,主機照樣順跑其他服務。
  • 0 API 成本:2PC(兩階段提交)觸發一萬次 /v1/directed 評分,消耗的只有幾塊錢電費,沒了 Token 焦慮。

3. 架構哲學:三層確定性防禦外骨骼 (Tri-Layer Harness)

核心思想:把 LLM 從掌控系統寫入權的執行者,降級成必須提交合法提案的實習生。

┌────────────────────────────────────────────────────────────────────────┐
│ omo-slim / OpenCode Orchestrator                                       │
└───────────────────────────────────┬────────────────────────────────────┘
                                    │ 1. 2PC Proposal (Diff / AST Delta)
                                    ▼
┌────────────────────────────────────────────────────────────────────────┐
│ guardrail-mcp (確定性 2PC 閘門 Gateway)                                 │
│                                                                        │
│  Track 1: Hard Guard (Rust / graphify-core AST 結構檢查)               │
│  └── 毫秒級短路攔截(Short-Circuit),語法錯誤/違規直接退回(0 VRAM)     │
│                                                                        │
│  Track 2: Soft Guard(地端多模態語意審查)                              │
└───────────────────────────────────┬────────────────────────────────────┘
                                    │ 2. POST /v1/directed
                                    ▼
┌────────────────────────────────────────────────────────────────────────┐
│ docker-llm-as-a-verifier(地端 ROCm Backend / llama-server)             │
│ └── Qwen3.5-9B with mmproj (GGUF)                                     │
└────────────────────────────────────────────────────────────────────────┘
  • graphify (AST & Context Manager):Rust 寫的,負責程式碼拓撲分析與動態 Token 剪枝,只餵給 Agent 資訊密度最高的 Minimal Sub-graph。
  • guardrail-mcp (State Machine & 2PC Gateway):獨立 MCP 門衛,強制執行兩階段提交(Phase 1: Proposal → Phase 2: Guard Check → Issue commit_token)。
  • docker-llm-as-a-verifier (PRM Evaluation Server):Docker 包裝的本地審查容器,透過 ROCm 加速提供細粒度評分。

4. 實作拆解:REST API 規格對齊 PRM 過程監督

docker-llm-as-a-verifier 提供 7 隻完整的 REST API,實現高階 Process Supervision 原語:

Endpoint Method 2PC 實戰調用場景
/v1/directed POST [核心] 給定原 Task,比對舊程式碼 A 與新修復 B,回傳 Preference Score 與 accepted 標記
/v1/select POST [Best-of-N] 從 Agent 產生的 N 個修復提案中挑分數最高且最安全的 AST 變更
/v1/track POST [軌跡監控] 每步 Action 後評估進度,發現 Agent 越改越爛就立刻短路中斷
/v1/compare POST 快速 A/B Testing 雙案評分
/v1/score-pairs POST 批次跑迴歸測試與評測
/health GET 系統健康度檢查
/v1/usage GET 地端 Token 累積統計

5. 實測閉環:從 Proposal 攔截到 Micro-Patching

當 Agent 提出帶有隱患的程式碼修改時,系統的防禦閉環如下:

  1. Coder Agent 發起變更提案(Proposal)。
  2. guardrail-mcp 觸發 Track 1:graphify-core 掃描發現 Interface 斷層。
  3. 通過 Track 1 後觸發 Track 2:打 HTTP POST 到 Docker /v1/directed(Qwen3.5-9B with mmproj)。
  4. Verifier 判定 REJECTED,回傳 Payload:
    {
      "status": "REJECTED",
      "reason": "Signature mismatch on UserRepositoryInterface",
      "ast_node_id": "Node#402"
    }
    
  5. Orchestrator 擷取 ast_node_id,指示 Agent 只針對 Node#402 做局部 Micro-patching,不用重讀整份長檔!

雙重驗證:前端 UI 變更可進一步讓 Qwen3.5-9B with mmproj 直接審查 Playwright 渲染截圖(Visual Guard),確保沒有跑版或 CSS 斷層。

6. 結語:把主控權與算力奪回地端

不用幾十萬的 A100 顯卡叢集,也不用每月給雲端 API 巨頭交保護費。透過 Rust 確定性圖譜 + 2PC 狀態機閘門 + AMD ROCm 本地多模態 Verifier,我們在不到一萬五的消費級顯卡上,打造了一套完全私有化、零隱私洩漏、具備 PRM 審查能力的 AI 防禦外骨骼。

相關開源儲存庫:

留言

這個網誌中的熱門文章

有點誇張的準專業機.Minolta Alpha 7 (Dynax 7、Maxxum 7).2000

題外話,去年幫朋友標了這台,遲遲未寫一篇介紹,其實是有私心的,好東西少一點人知道比較不會搶。 上個禮拜因為自己要 幫朋友拍攝一場婚禮 ,無巧不巧原本服役的 707si 掛了,於是跟朋友商借了 Alpha 7 來拍,拍過之後就一直放在身邊,說實在的有點捨不得還,快門聲,手感,強大的性能,實在是有點誇張。 拿 Alpha 7 拍我女兒的時候,因為有 LCD,我女兒會說我要看,而不是問我 把拔這台是底片的嗎 ?讓我解釋半天她也不相信,直指著 LCD 要看照片,很妙,但是個識貨的女孩,一眼就看出這台相機的特點,機背有 LCD。 於 1998 年推出頂級機 Alpha 9 之後,2000 年推出的 Alpha 7 除了快門速度和連拍速度緊挨著機皇而沒有強過頭,卻在準專業定位的 Alpha 7 身上加入多項先進的功能,其中許多 Alpha 9 所沒有的,相當驚人,整理於下: ※ 全新開發之 CDC912 對焦系統,九點寬域對焦,排列為黃金矩陣 ,宣稱為世界首快之 AF 對焦;機背轉盤可選擇對焦點並直接對焦。(Alpha 9 為三點寬域自動對焦) ※ 首見機背大型點矩陣式 LCD 大幅增加人機溝通性能,若採垂直控制拍攝時LCD會隨之轉為垂直。 ※ DMF (Direct Manual Focus) 功能 :透過機身可讓鏡頭全時手動,無須撥動AF/MF鈕 ※ 世界首見 STF (Smooth TransFocus) 特效 ,可使每支鏡頭作出特殊背景鬆濛感,類似Minolta STF 135mm f/2.8[T4.5]的效果 (作用原理:相機自動切換為多重曝光,並於曝光時逐漸縮小光圈葉片)。[Custom 3] ※搭配新一代納入距離編碼器的鏡頭時,Alpha 7 可採 ADI (Advanced Distance Intergration) 測光模式 ,或配合 TTL 4 區閃燈測光。 ※一推出即支援 SAM 超音波馬達鏡頭。(Alpha 9 需要更新韌體) 功能很多很強大,底下就先挑一些比較有意思的設計做介紹。 》十四區蜂巢式測光,LCD 顯示 當同時按下 AE 曝光鎖 (AEL) 與 LCD 顯示選擇鍵 (DISP) 時,會顯示 14 區各分區的相對EV值,與灰色部份比較,白色的為正值,黑色的為負值,以上圖為例,畫面最暗的地方是 –2.3,最亮的地方是 ...

[古典相機] M 系列快門最速.ME MX 合體.Pentax ME Super.1980

Pentax M 系列機身中,快門速度達到 1/2000 秒的,就只有 ME Super 以及需搭配特殊鏡頭 AF 35-70 f2.8 自動對焦的 ME-F 。 為什麼要說 ME Super 是 MX 以及 ME 的合體呢? MX 是只有曝光手動控制, ME 是只有光圈先決,另有幾台 M 系列 1980 年代出的 MG、MV、MV1,也都只有提供光圈先決,除了改變 EV 值外,沒辦法手動調整快門速度,ME Super 是整個 M 系列機身第一台同時可以手動設定快門也能 Auto 快門的機身,或許是因為希望機身維持像 ME 一樣小,所以在快門設定的功能上,並不像其他家是用機頂轉盤的方式 (OM-2 是用機身接環前的轉環),Pentax ME Super 的快門設定是機頂上的兩個鈕,只能在觀景窗內,透過 LED 指示燈顯示所選用的快門速度,同時也會顯示是否 Over 或者 Under。 機身的設計與 ME 幾乎相同,除了機頂右邊的轉盤處加了兩個手動設定快門速度的鈕,其他都相同,寬度和高度就比 ME 多了一點點,真的只有一點點,就各多個 0.5mm,但重量卻比 ME 更輕,猜想是使用了更輕量的機身結構吧,而可搭配的捲片馬達手把也能通用 (ME、ME II)。 MX 與 ME、ME Super 之比較》 機型 生產 體積 (mm) 重量 快門速度 閃燈同步快門 MX 1976-1985 135.8 x 82.5 x 49.3 495g 1 ~ 1/1000, B 1/60 ~ 1, B ME 1976-1980 131 x 82.5 x 49.5 460g 8 ~ 1/1000, B 1/100 ~ 8, B ME Super 1980-1987 131.5 x 83 x 49.5 445g 4 ~ 1/2000, B 1/125 ~ 4, B ...

Nikon D7000 的感光元件 Sony 做的,官方不公開承認,chipworks 拆給你看!

(圖片來源: Teardown of the Nikon D7000 DSLR by chipworks ) Sony IMX071 The Nikon D7000 comes equipped with a DX format (APS-C) sensor fabricated by Sony, the IMX071. With a 16.2 Mp resolution, this is the second highest resolution of any Nikon DSLR, behind the 24 Mp D3X (dpreview.com). This image sensor features a pixel size of 4.8 µm x 4.8 µm (as seen in the Bayer patterned RGB color filters). The sensor displays improvements in pixel layout and process features, as compared to previous generations of Sony DSLR sensors. 有圖有真相,完整拆解請直上: Teardown of the Nikon D7000 DSLR by chipworks