跳到主要內容

發表文章

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(兩階段提交)觸發一萬次 /...

用 AI 寫程式的痛:我們做了兩個小工具來解決

用 AI 寫程式最大的問題是什麼?對我們來說,不是模型不夠聰明,而是 不放心 。 LLM token 越來越貴,但大部分都在重複看已經知道的程式碼結構。 Agent 改完程式編譯不過,要來回好幾輪才修好。 工作到一半 context 滿了,重開 session 什麼都不記得了。 有時候改壞了檔案還沒人知道。 這些問題大概不是只有我們遇到。我們的做法是寫兩個小工具來補,一個管 輸入成本 ,一個管 操作安全 。兩者透過 MCP 協定接進 OpenCode,各自只做一件事。 工具一:GraphifyRust — 讓 LLM 不用重看整包程式碼 GraphifyRust 是用 Rust 寫的靜態分析引擎。用 Tree-sitter 解析原始碼,把 function、struct、trait 這些節點抽出來,建成一個有向圖。 AI agent 要改程式時,傳統做法是把整支檔案丟給 LLM。幾百行的檔案可能只有幾段 function 相關,但 LLM 還是得看完所有 import、註解、不相干的邏輯。 Graphify 的 skeleton_extract 只回傳 AST 骨架 — function 名稱、行號、簽名。實際壓縮效果: 檔案 原始 token 骨架 token 節省比例 server.go (BloggerAgent MCP) 1,289 117 90.9% toon.rs (Graphify 核心) 2,132 147 93.1% 骨架不夠用時,用 range mode 精準讀取特定 function。不需要整包丟進去。 選 Rust 的理由很務實:Tree-sitter 的 Rust binding 最成熟。在 110 個檔案、422 條邊的測試專案上,建圖只要 16ms ,比之前 Python 版快 26 倍。節點用 petgraph arena 預分配,減少 heap 碎片。輸出用自訂的 .toon 格式,體積比 JSON 少 60%。 語意搜尋用本機 Qdrant,沒有雲端費用。目前支援 9 種語言:Rust、Python、Go、JavaScript、TypeScript、C、C++、Java、PHP、Swift。 工具二:StateMachineMcp — 永遠不讓壞掉的程...

那些沒做和一直做的事。

正式失業那天,上午去找人聊天,回家後我還是坐在電腦前。也許不是「失業所以創業」的劇本,可能還帶著一種想要做作品集的那種求職慣性,總之是還沒收到履歷回覆的邀約面試。 把舊的 cawa0505.github.io 改用 Zola SSG,準備用來做自動發布技術文章的地方,因為現在很懶,所以把玩具兜一兜變成自動發文的 repo 展示場。實作到一定程度,可以讓 AI 寫一篇文講為什麼會想做、做了發現什麼。 本來底下的文字是用 golang jieba 中文分詞,做了一個詞語庫,讓 AI 隨機抽一些弱格文章的慣用語來寫一篇整理最近實作的玩具,但內容實在太爛我砍掉了。至少草稿是 AI 建立的,雖然滿無聊,不過人生好像也是。 其實蠻恐慌的,104 沒人聯絡,能力或許已經讓職場瞧不上,中老年人發發牢騷可以,日子不知道怎麼過就是。 你覺得的黃昏,其實是日出,困難的日子才剛要開始。

加密

長串數字匿名幣,TradeOgre 被查緝。 房貸尚有寬限期,加拿大警方公告卻玄疑。 輕羅小扇撲流螢,Machi 夏日比基尼。

docchi

『我可以幫助你,實現你的夢境。』 AI 提供了 yes / no 的 confirm box 一瞬間,幻燈高轉風扇的高頻,興奮莫名。

月台

訊息:「他答應了!!!」 傑爾看著三個跳躍的驚嘆號,「恭喜。」 炫耀的電話裡,幸福滿溢。 那一包冰箱裡的過期拍立得,一張充滿祝福的贈禮。 月台,一直都在,未曾有一班車離開。 目送。是唯一的合宜。