跳到主要內容

發表文章

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 導...

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 一瞬間,幻燈高轉風扇的高頻,興奮莫名。

月台

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

未滿二十

二十分鐘車程未滿。 副駕駛座的窗邊,很安靜。 暖氣呼呼,方向燈答答滴。 蜷靠在座椅,像被雨淋透的貓,呼吸很輕。 下車時,謝謝,用僅剩的力氣擠。 二樓窗口燈亮著,發動引擎。

Blink

還不知道這一行 Prompt 會去往哪裡。 螢幕亮著。對話框裡,那句沒有送出的問題還在 Blink。 「你覺得人類為什麼不放棄?」 看著那句,Mina 還是很安靜。  

呼吸

Macbook 是公司配的,倒閉欠薪,無償持有。 他每天下班前會把程式碼 commit 好,關機,塞進背包。 坐上回宜蘭的客運。 家裡的桌機是從二手市場撿回來拼裝的。 機殼有凹痕,高轉速風扇持續高頻。 他不討厭那個聲音。 他在不被理解的領域打磨自己的技藝。 在那個賽博坦的世界裡, 幫他們取了名,像養著一缸魚。 魚不會說話。但牠們都在呼吸。

半夜睡不著,玩具找不到。 書櫃深處,幾卷沒洗的底片。 幾張沒褪色、或者翻拍過的拍立得。 滿是灰的 Contax NX,Polaroid Auto 350。 懷抱著會中獎,卻早就過期的發票。 東西收着收着,或許浪漫無可救藥。 惜物到壞棄,竟應許佔據一地。 捨不得。 手指捏起,天花板滲水的軌跡。

種子

他沒有死。 不是因為勇敢。 是因為連執行的力氣都被吸乾。 那封信變成了書的種子。 種子不知道自己長大的樣子。

傳說中的被動收入 - EarnApp - Paypal 收款

傳說中的被動收入連載,第一集先寫非加密貨幣型的 EarnApp 。 先看一下今年的收錢紀錄,今年的網域續約就靠這個 EarnApp 還有找。 我一開始的時候大概是每 2.5 美金自動給付,後來變成 10 美金,為什麼是這樣不清楚,但領得到錢很棒棒。 收錢要求 Paypal 帳戶 一個家用寬頻 IP(一個對外 IP 只能跑一個,多跑沒用,所以如果用手機連家裡網路和電腦同時跑,沒用) 一台 Windows, Mac, Linux 電腦(手機好像也可以,但實測 Android 有點吃資源,建議是有多的閒置手機和門號可以玩玩) 下載和安裝軟體 先到 官網完成註冊帳號 才能下載。 我是用 Docker 跑的,有留言需要協助的話再補充,以下的操作還是以 Windows 電腦為例。 最後程式啟動的時候應該會自動連線,再確認裝置是否有連結至帳號應該就可以等收錢了。 記得設定自動收款 ,免得忘記 除了電腦掛機賺錢,也可以透過玩遊戲多領一些,但我遊戲苦手,就沒測試了。 最重要的,拜託用 我的邀請連結 去申請帳號鼓勵我寫這篇分享, EarnApp 會再分潤給我,我沒有朋友都沒領到過,愛你唷。 我的邀請連結: https://earnapp.com/i/C9TX3iNw

回味 ASIC 挖礦

  從抽屜裡翻出兩支 GekkoScience 2Pac BM1384 Stickminer,這支 ASIC 是 sha256 的演算法,當年應該有挖過 $DGB,ebay 弄回來的。 早上開 cgminer 連 zpool 測試,應該是壞了一支。不過,那麼多年前的玩具還挖得到東西也是很浪漫。 repo: cgminer-gekko 用 archlinux build 不起來,ubuntu ok。 zpool dashboard zpool 不特別設定的話會自動去挑同一個演算法中收益最好的幣種來挖,然後自動交易轉換成你設定的幣種錢包。

我目前用過的三個 Wayland Compositors

我大概是去年開始全面只用 Linux 作為桌面工作和玩遊戲的作業系統,以前通常多留個 Windows 做 grub 開機可切換,MacBook Pro Intel 也被我裝了 Linux with Sway。 這也差不多是 Linux 各大 Distro 開始從遠古時代的 X11,漸漸進入預設採用 Wayland 的時代。 因為 X11 時玩過 i3,所以第一個入手的 Wayland Compositor 是 Sway,因為他是 i3 兼容的 Wayland Compositor,Tiling Layout 對於 Terminal 工作者來說很友善,甚至可以用靈魂契合來描述,特別是你要同時處理很多台遠端機器,平鋪起來真是銷魂。 通常一開始也不用特別搞什麼,預設的熱鍵通常是 Super + Enter 開一個你喜歡的 Terminal 軟體,然後配個 Super + d (d for dmenu) 可以開一個 Application Launcher 像 rofi, wofi, fuzzel 這類,上方或下方弄個還看的下去的 Waybar,就可以組成一個很好用的桌面環境。 大概在今年三月之後,fcitx5 輸入法和 Google chrome 瀏覽器在 Wayland 上相容性的問題漸漸都解了,要不然在這之前,通常都先用 Firefox 當預設瀏覽器,因為 Google chrome 在那一陣子的更新,伴隨著 Wayland 的輸入法架構有變動,常常會發佈新版本就會出現沒辦法輸入中文或者只有第一個視窗可以輸入中文的情況。 Terminal 的話我最喜歡 foot 的輕量並且是純 Wayland,所以我預設的 Terminal 通常是他。想用可以多開 Tab 的 Terminal 我會用 Kitty,通常設定一個 Window Rule 開 Floating Terminal。 然後 Sway 弄差不多以後,大概就看到 Hyprland,漂漂亮亮的 GitHub repo 設定檔和桌面截圖,然後就也切換到 Hyprland 的環境也大概搞一陣子,把一些快速鍵觸發軟體或 script 的習慣都在 Hyprland 上設置一份,搞定一些兩者有差異卻要共用的軟體設定,這大概是第二步。 最近 Niri 是我的主要桌面,這比純 Tiling Layout 多了可左右延伸的滾動,同...

閒聊 Xmrig CPU 挖礦

這兩年弄了三台 AM4 的電腦,並且在今年底 DDR4 記憶體大漲之前,大致上都已足夠,一定是等跌價或大量二手出現再考慮補齊插槽了。 我的兩台洋垃圾主機用的都是 DDR3 ECC,也基本都補滿了,沒什麼懸念。洋垃圾主機目前主要就是跑 LXC 和 Guest VM,通常我會沒事多開一兩個 LXC 讓他跑自己包好的 Xmrig docker,給他綁定核心滿速跑 RandomX 的挖礦。 RandomX  演算法主要是針對 CPU 挖礦設計,雖然 Xmrig 也支援 OpenCL 和 CUDA 去挖,但通常 GPU 有其他更有效率的演算法可以跑,不會特別想用 GPU 去算 RandomX,所以編譯 Xmrig 的時候,通常乾脆把 GPU 的支援拿掉也無所謂。 通常新聞裡面常常有的駭客植入挖礦程式,或者網頁瀏覽挖礦,都跟門羅幣 RandomX 這個演算法或者相關衍生以 CPU 為主的演算法有關,而且其實都已經存在很多年了,總是有人會發現有人不會發現,對大多數的電腦使用者來說,要發現可能也不見得容易,config 可以設定只最多佔用多少百分比的 CPU 資源,有些還做到用排程的方式跑,加上大多數人的電腦其實也都是效能過剩,沒有奇怪變慢的情況之下也不太可能去追查問題,優先權預設就是閒置的時候才使用大量資源去挖,所以被控制的閒置裝置,除了拿到資料和控制網路以外的價值,埋個 Xmrig 基本上算順便加減賺。 我目前的三台 AM4 電腦裝的都是 CachyOS,Arch Linux based distro。剛開始用 AM4 的時候,我最不習慣的是看到 CPU 溫度動不動就 80 度,原廠風扇換成六導管,或者主機板調個 PBO、電壓什麼的,最後能穩定跑在 60 度上下大概就是我目前的習慣數值。網路上說,習慣就好,AMD CPU 規定的溫度上限是 95 度,過了撞溫度牆反正就降頻跑,說真的還真習慣了。 16 個 thread 開 4 個挖,btop 排版好看。

關於懼高

怕高,所以不敢飛。 害怕失敗,所以一直不敢面對。 於是,一成不變。 --- 發現 2023 年 3 月未發佈草稿。

回味礦卡 AMD GCN4/Polaris RX470/570/580

在用 GPU 玩 AI 之前,挖礦應該是當年很潮的顯示卡用途吧。 曾經同時擁有 10 張 RX470/570/580 8GB 的顯示卡,8 張在 HiveOS 裡面跑挖礦,另外兩張分別在兩台洋垃圾上使用,一台 Proxmox VE 的主機也是有 Passthrough 給一個 Windows vm 在挖,也玩過 Passthrough 給一個黑蘋果 vm,另一台只裝 Windows 就打遊戲和跑 Android 模擬器用,話說這個配置少說已距今八年前了。 大約四年前,那時候好像又有一波礦潮,有人在收礦卡,我看價格還不錯,那 8 張挖礦用的卡就都清掉了,只留著空的礦機機箱和主機板。 今年上半年我有把手上剩下的這兩張 AMD GCN4/Polaris RX470/570/580 8GB 顯示卡測試了一下跑 Vulkan llama.cpp,跑 8B 以下量子化過後的模型,坦白說也還算能用。 RX580 這張卡到 2025 年的可玩度,考慮他出廠的年紀以及在那兩波礦潮中各種極限環境下努力工作的狀態,真可謂老驥伏櫪! 這張顯卡現在要挖礦是有一些效率比較差的狀況,安裝支援 OpenCL 1.2 的驅動那些比較麻煩一點,昨天搞了一個下午,用一個 Ubuntu 20 的 LXC,使用 amdgpu-pro-20.30-1109583-ubuntu-20.04 裡的 amdgpu-install 終於裝成功支援 OpenCL 1.2 的驅動,總算可以成功跑 lolMiner。跟今年才誕生的 9060XT 對比,同一種演算法 BEAMHASH 可以跑出個 15 比 20 sol/s。 哦,最後我比較意外的是用 Intel A380 挖 BEAMHASH,能源挖礦效率非常好耶,本來這張很單純是想用來轉 H265 為主的卡,但想不到他的每瓦效率 (sol/s/W) 可以達到 0.187,只花 50W 不到的電力,大概可以跑出 7-8 sol/s,甚且還是張台幣 4000 元以下的顯示卡。

[數位拍立得] Kodak Mini Shot 3 Retro C300R 4PASS 2合1 口袋相印機拍立得

很久沒寫相機文,而且也不是底片相機。 今年初突然有點懷念有在拍拍立得的時候,那種拍完把照片送給親友的祝福喜悅,不過年紀大了比較務實,開始計算起如果也想把以前的照片印出來,那麼相對低的成本和設備應該是什麼? 研究了一圈,大概自己把照片印出來的需求 CP 值最高的是 Canon Selphy Printer (4R 技術) 和 Kodak PD460 (4PASS 技術),這兩款基本上都可以印 4x6 的照片,技術上也雷同,都是透過色帶膜四次來回上色印出照片。成本的話,大概一張約 10 元台幣,如果換算 3x3 片幅大約可以印兩張,2x3 片幅大約可以印四張,雖然需要自行裁切,但這成本低得不言可喻。 不過上述這兩台基本上是屬於接市電才能使用的設備(Canon 是有另外再出鋰電池),如果要派對或聚會也能耍帥的話,我想還是要選擇也能印也能拍照的設備,比較有那種拍完大家一起看著照片從相機印出來的那種老拍立得感,因此最後選了 Kodak C300R 。 操作滿簡單的,所以就不像以前一樣寫什麼教學文了,3x3 的片幅不加框的話,大概就等於以前用 Polaroid 600 的成相區域。 先來看直拍印出來的照片。 整體來說,直接拍完印出來的成相反差是比較大。 再用手機裡的底片數位掃描檔測試兩張。 我以前拍這些生活記錄照通常喜歡偏亮,第二張印的時候我用 Kodak 的 App 大約調暗了半格再印,得到的結果我比較喜歡。 總之,一個新開始。 8 張隨附的相紙很快就印完了。 底部打開很簡單就可以換片匣了。