Halogen 0.16版更新 實測NPU vs GPU vs CPU 驅動Embedding與Reranker
-
Qwen3 RAG對決:NPU vs iGPU vs CPU(Strix Halo,同機實測)
上次實測Halogen Flash Server跑Qwen 3.8 Flash Next一陣子了,github不斷更新,這版v0.16比較有趣的是可以用NPU跑Embedding、Reranker、Dicider的小模型了。
v0.16內建了Qwen的Embedding、Reranker、Decider,
Decider是跟Jev對標的推論模型,我目前還沒想到實戰用途,
而Embedding與Reranker實戰用途就很明確了,老早就廣泛被RAG或向量資料庫拿來做知識、文件管理,所以直接測這兩兄弟
兩者通常在資訊檢索(如 RAG 搜尋系統)中搭配使用,分工如下:-
Embedding(向量化 / 初篩)
作用:把文字轉換成包含語意特徵的「數字向量」。
定位:負責大海撈針。透過計算向量間的距離(如餘弦相似度),以極快速度從數百萬筆資料中挑出初步相關的幾十到幾百筆結果(速度快、算力成本低,但語意理解深度有限)。 -
Reranker(重排序 / 精算)
作用:將使用者的問題與初篩出來的每篇文章配對,放入模型(如 Cross-Encoder)深度交叉比對相關性並重新打分排序。
定位:負責去蕪存菁。精準度極高,能挑出最核心的幾筆交給後續模型使用(理解深度高,但計算慢、成本高,無法直接對海量資料運算)。
總結:Embedding 負責「快選前 100 名」,Reranker 負責「從中精挑前 3 名」。
如果你的文件或知識量巨大,不可能全部塞KV Cache、成本太高,RAG的用意就是將向量庫落盤到SSD甚至HDD。
過去能驅動這類模型的推論引擎主流就是llama.cpp與vllm,現在Halogen是頭一個做到能用NPU做向量處理的除了測速度、RAG很重要的是召回正確性,這次也出了題目一併測試。
1. 測試環境
項目 內容 APU AMD Strix Halo gfx1151,128G 統一記憶體(OS 可見 124G)OS Nobara 44,kernel 7.1.4,ROCm 7.2.4 NPU 側 halogen-flash-server 0.16.0, HALOGEN_NPU_MODELS,/dev/accel/accel0+XRT 2.26.0(COPR),IOMMU oniGPU 側 llama.cpp fork(ROCmFPX build),vulkan router :8002,GGML_HIP_ENABLE_UNIFIED_MEMORY=1CPU 側 同一 fork binary, -ngl 0,32 thread,臨時:8109/:8110(embed 加-ub 2048,見 §4),測完即下Embedding 權重 NPU:peonist qwen3-embedding-0.6b(精度未公開,估 4–5bpw);iGPU/CPU:enacimie/Qwen3-Embedding-0.6B-Q4_K_M-GGUF(Q4_K_M,396MB)Reranker 權重 NPU:peonist qwen3-reranker-0.6b;iGPU/CPU:dean2155/Qwen3-Reranker-0.6B-Q4_K_M(
️第三方量化,非官方)輸出維度 三邊都是 1024
2. halogen 版本追蹤(NPU 部分)
- 0.16.0 新增 NPU 小模型同端口(decider-0.8b/qwen3-embedding-0.6b/qwen3-reranker-0.6b)。
- 開通代價(
.55實錄):grub 刪amd_iommu=off(驅動拒綁,journal 明寫)→COPR 裝 XRT 2.26.0 三件→容器接/dev/accel/accel0+lib 三份雙掛(lib/+lib64/都要,少一邊拒啟)+/sys:/host/sys+/models改 rw。
3. embedding 跟 reranker 是做什麼的(RAG 兩件套)
- Embedding:把文字壓成 1024 維向量,語意相近=夾角小(cosine 高)。RAG 第一步:query 和文件都轉向量,用 cosine 撈候選。本次驗法:同義句 vs 無關句,gap 越大越好。
- Reranker:把候選文件和 query 一對一精排(cross-encoder),輸出相關分數重排序。本次驗法:4 文件中狐狸那篇應該第一(query:fox by the river)。
4.測試題目
RAG應用 速度不是唯一 故召回與排序的正確性是重點
速度題
-
短句(~10 tok):
The quick brown fox jumps over the lazy dog.→/v1/embeddings,計 wall 時間。先打一次 warmup 不計分,再量。 -
長文(1401 tok):
"Strix Halo unified memory architecture review" ×200(空格連接)→ 同 endpoint。1401 是 server 回報的 actual prompt_tokens。 -
Rerank:query=
fox by the river,4 文件:The fox jumped near the river bank at dawn.LPDDR5X bandwidth reaches 256 gigabytes per second.The bank approved the loan yesterday afternoon.Canine sleep patterns vary by breed and age.
→
/v1/rerank(vulkan/CPU)或:8731/v1/rerank(NPU),取 relevance_score 排序,計時+記順序。
正確性題
- Embedding cosine:三句——原句(fox jumps...)、同義改寫(
A fast dark fox leaps above a sleepy canine.)、無關句(Quantum entanglement enables instant communication.)。算 cos(原句,同義) vs cos(原句,無關),gap 越大越好。dim 都是 1024。 - Rerank 排序:同上 4 文件,正解 index 0(狐狸篇)第一。LPDDR 篇(index 1)是干擾項(跟 query 零語意交集,純字面 bank 撞詞的是 index 2)。
控制條件
- 同文本跑三邊(NPU/iGPU/CPU),temperature 不影響 embedding(確定性),rerank 取預設參數
- 每項 2–3 次,報告取區間(NPU 長文 0.36/0.38/0.54 那次 variance 有標)
5. 速度比對(同文本,Q4 對 Q4)
Embedding
輸入 NPU iGPU(Q4_K_M) CPU(Q4_K_M) 短句(~10 tok) 0.104–0.119s 0.039–0.044s 0.050–0.052s 長文 1400 tok 0.361–0.544s 0.218s 0.483–0.693s Rerank(4 文件,同 query)
NPU iGPU(Q4_K_M) CPU(Q4_K_M) 耗時 0.504–1.057s 0.067–0.298s 0.229–0.253s 小結:短查詢 iGPU 最快(0.04s),長文也是 iGPU 最快(0.22s),NPU(0.36–0.54s)+CPU(0.48–0.69s)居次。0.6B 這量級,iGPU 算力說了算;NPU 的價值在零 burden(不佔VRAM、不開整組 vulkan)+長文開箱不炸。
6. 正確性比對(Q4 對 Q4)
Embedding cosine
同義 無關 gap NPU 0.7096 0.4202 0.2895 
iGPU Q4_K_M 0.8131 0.4698 0.3433 
CPU Q4_K_M 0.8113 0.4616 0.3497 
三邊都正確分離。llama 系兩邊 gap 一致(0.34–0.35,同權重同精度);NPU 窄一點(0.29,自家量化精度未知),但遠過門檻。
Rerank 排序(query:fox by the river,正解狐狸篇 index 0)
排序 頂部 NPU [0, 3, 2, 1](兩次一致)
語意對iGPU Q4_K_M [1, 2, 0, 3](兩次一致)
️ LPDDR 篇第一CPU Q4_K_M [0, 2, 3, 1]
狐狸篇第一重點發現:同一個 Q4_K_M,CPU 排對、vulkan 排錯——server 端處理(模板/參數)會影響排序,權重相同≠結果相同。NPU 兩次都對可以說是正確又一致。iGPU 的錯排打了折扣看(第三方量化),但 CPU 同量化排對,說明問題在 vulkan 那側的處理,不在權重。
7. 結論
- 三方重排:短文延遲 iGPU(0.04s)>CPU(0.05s)>NPU(0.11s);長文 iGPU(0.22s)>NPU(0.36–0.54s)>CPU(0.48–0.69s)。0.6B 這量級 iGPU 通吃,NPU 贏在零 burden 不在速度。
- 正確性:embedding 三邊全過;rerank NPU=CPU>vulkan(同權重不同 server 結果不同,server 也是變量)。
- 成本:NPU 幾 GB 零 burden;CPU 零成本隨起隨下;GPU需vulkan 整組。
- 實用建議:RAG 長文走 NPU;短 query 要極限延遲開 vulkan;iGPU 不在時 CPU 完全夠打。
- AI Max+ 395的CPU是有AVX 512指令級的ZEN5新架構,對CPU推論的矩陣運算幫助很大,如果是不支援AVX512的CPU效果會大打折扣。
- .利用NPU最大價值是可以把CPU與GPU的開銷節省下來做其他事。
-