跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(LCZ-Blue)
  • 不使用皮肤
  • LCZ-Green
  • LCZ-Blue
  • LCZ-Black
折叠
品牌标识

抡锤者

首页 版块 标签
硬件
装备秀
AI 广场 App
paul houP

paul hou

@paul hou
体面乡绅 硕果累累
取消关注 关注
关于
帖子
108
主题
5
分享
0
群组
2
粉丝
1
关注
0

帖子

最新 最佳 有争议的

  • 單R9700 + VLLM(GGZ14/vllm-mxfp4) + unsloth/Qwen3.8-27B-NVFP4 測試
    paul houP paul hou
    LLM讨论区 r9700 vllm qwen-27b

    vLLM Radiance DECODE / PREFILL 性能測試報告

    測試時間: 2026-09-19 23:40 CST
    測試目標: 192.168.1.241:8080
    模型: unsloth/Qwen3.8-27B-NVFP4
    硬體: AMD Radeon AI PRO R9700 (32GB VRAM, RDNA4 gfx1201)


    1. 模型配置

    參數 值
    模型 Qwen3.8-27B-MXFP4 (不想重設就都用一樣的)
    最大模型長度 225,000 tokens (NVFP4最大值就這麼多)
    KV Cache 資料類型 FP8
    KV Cache 大小 8.6 GB
    GPU 記憶體使用率 0.98
    張量並行 1
    最大並行序列 1
    最大批次 tokens 2,560
    注意力後端 R4D
    投機解碼 DFlash2 (Qwen3.8-27B-DFlash2-FP8)
    投機 tokens 數量 7
    投機取樣方法 Greedy
    投機注意力後端 TRITON_ATTN
    禁用填充草稿批次 true
    前綴快取 已啟用
    非同步排程 已禁用
    溫度 / Top-P / Top-K 0.7 / 0.95 / 20 (溫度我最終都還是會設成1.0)
    語言模型 only 是
    啟用提示 tokens 詳細資訊 是

    完整啟動命令

    /opt/vllm/bin/python3 /opt/vllm/bin/vllm serve /models/paiton-qwen38/target \
      --served-model-name Qwen3.8 Qwen3.6 Qwen3.8-MXFP4 \
      --host 0.0.0.0 --port 8080 \
      --kv-cache-dtype fp8 \
      --tensor-parallel-size 1 \
      --gpu-memory-utilization 0.98 \
      --kv-cache-memory 8600000000 \
      --max-model-len 225000 \
      --max-num-seqs 1 \
      --max-num-batched-tokens 2560 \
      --attention-backend R4D \
      --speculative-config {"method":"dflash","model":"/models/qwen38-27b-R9700/models/tcclaviger/Qwen3.8-27B-DFlash2-FP8","num_speculative_tokens":7,"attention_backend":"TRITON_ATTN","disable_padded_drafter_batch":true,"draft_sample_method":"greedy"} \
      --no-async-scheduling \
      --mamba-cache-dtype bfloat16 \
      --mamba-ssm-cache-dtype float16 \
      --compilation-config {"cudagraph_capture_sizes":[1,2,4,8],"pass_config":{"fuse_norm_quant":true,"fuse_act_quant":true}} \
      --enable-prefix-caching \
      --mamba-cache-mode align \
      --enable-auto-tool-choice \
      --tool-call-parser qwen3_coder \
      --reasoning-parser qwen3 \
      --override-generation-config {"temperature":0.7,"top_p":0.95,"top_k":20} \
      --chat-template /patches/qwen-fixed-v22.5.jinja \
      --served-model-name qwen3.8-27b-mxfp4 \
      --language-model-only \
      --enable-prompt-tokens-details \
      --enable-force-include-usage
    

    2. 測試方法論

    避免緩存的策略

    1. 隨機 Prompt 內容: 每個測試使用完全不同的隨機字串作為 prompt,避免前綴快取(prefix caching)命中
    2. 丟棄預熱請求: 每個測試回合前先發送一次丟棄的預熱請求,確保 GPU 處於穩定狀態
    3. 隨機 Token 長度: 每個字詞長度為 3-12 個字元(英數混合),避免固定模式

    測試分類

    • PREFILL 測試: 不同 prompt 長度(256-4096 tokens 目標),只生成 1 token → 測量純 prefill 吞吐
    • DECODE 測試: 極短 prompt(~20 tokens),不同輸出長度(32-512 tokens)→ 測量純 decode 吞吐
    • 混合場景測試: 不同 prompt + 輸出長度組合 → 模擬真實使用情境

    3. PREFILL 性能測試

    測量不同 prompt 長度下的 prefill 處理速度(prefill tokens / 秒)

    目標 Prompt Tokens 實際 Prompt Tokens Wall Time (s) Prefill 速度 (tok/s)
    256 4,428 1.535 2,883.9
    512 8,818 3.118 2,828.3
    1,024 17,495 6.345 2,757.2
    2,048 35,276 13.724 2,570.4
    4,096 70,563 31.370 2,249.4

    分析

    • 短 prompt 可達 ~2,884 tok/s 的 prefill 吞吐
    • 隨著 prompt 長度增加,prefill 速度略微下降(瓶頸從 compute 轉向 memory bandwidth)
    • 4K tokens 仍有 2,249 tok/s,表現穩定

    4. DECODE 性能測試

    使用極短 prompt(~20 tokens),測量純 decode 速度

    要求 Tokens 實際輸出 Tokens Wall Time (s) 解碼時間估計 (s) Decode 速度 (tok/s)
    32 32 0.459 0.439 72.9
    64 64 0.542 0.522 122.6
    128 128 0.814 0.794 161.2
    256 256 2.151 2.131 120.1
    512 512 5.071 5.051 101.4

    分析

    • 峰值 decode 速度 ~161 tok/s(128 tokens 情境)
    • 較長輸出時速度回落(101-120 tok/s),可能受 KV cache 壓力影響
    • 投機解碼(DFlash2)在短輸出時可能尚未完全啟動

    5. 混合場景測試

    模擬真實使用:不同 prompt + 輸出長度組合

    場景 Prompt Tokens 輸出 Tokens Wall Time (s) 整體吞吐 (tok/s)
    Short (597t → 64t) 597 64 1.047 631.2
    Medium (5,804t → 128t) 5,804 128 3.628 1,634.9
    Long (22,985t → 256t) 22,985 256 12.083 1,923.4

    分析

    • 混合場景下 prefill 主導整體吞吐(prompt 越長,prefill 佔比越高)
    • Long 場景達到 1,923 tok/s 整體吞吐(prefill 貢獻最大)

    6. vLLM /metrics 分析

    測試期間的 Metrics 變化

    指標 開始值 結束值 差異
    成功請求數 225 259 +34
    Prompt Tokens 總量 2,479,447 2,651,764 +172,317
    Generation Tokens 總量 54,457 56,685 +2,228
    投機解碼草稿總數 17,257 17,723 +466
    投機接受 tokens 37,322 39,088 +1,766
    前綴快取命中 1,473,120 1,473,120 0 (確認無緩存)

    關鍵性能指標(來自 Histogram)

    指標 平均值
    TTFT (Time to First Token) 738.1s / 260 req = 2.84s
    Inter-token Latency 751.4s / 17,723 tokens = 42.4ms
    Prefill Time 551.9s / 259 req = 2.13s
    Decode Time 711.7s / 259 req = 2.75s
    E2E Latency 1,447.8s / 259 req = 5.59s

    投碼解碼效率

    指標 值
    每次迭代平均接受 tokens 1,766 / 466 = 3.79 tokens/step
    投碼接受率 39,088 / (17,723 × 7) = 31.5%
    解碼加速比(vs 逐 token) ~3.79x

    7. 總結

    測試項目 最佳表現 備註
    Prefill 速度 2,884 tok/s 短 prompt(256 tokens)
    Decode 速度 161 tok/s 128 tokens 輸出
    混合場景吞吐 1,923 tok/s Long prompt + medium output
    投碼加速比 3.79x DFlash2 每次迭代產出 3.79 tokens
    Inter-token 延遲 42.4 ms 包含投碼驗證的整體延遲

    關鍵發現

    1. Prefill 無瓶頸: 即使是 4K tokens 仍有 2,249 tok/s,compute-bound 表現優秀
    2. Decode 受投碼影響: 128 tokens 時達到峰值 161 tok/s,更長輸出時回落至 101-120 tok/s
    3. DFlash2 效率: 每次投碼迭代產出 3.79 tokens(預期 7 tokens 的 54%),投碼接受率約 31.5%
    4. 前綴快取正確避開: 測試期間 prefix_cache_hits_total 無變化(增加 0),確認緩存完全避免
    5. FP8 KV Cache 穩定: 8.6GB 配置下無 OOM 或效能衰退

    這是R9700單卡目前的最速配置了,就是上下文最大就225K(不載入視覺),但很夠用了。AMD能跑NVFP4真的很神,而且還這麼快。推薦裝一個來試試。


  • R9700 單/雙卡有抄magiccodingman/vllm-radiance 作業的同學看一下
    paul houP paul hou
    LLM讨论区 r9700 vllm qwen-27b

    建議要讓HERMES幫你裝上
    froggeric/Qwen-Fixed-Chat-Templates

    說明包含修復DSH中KV緩存命中顯示的BUG

    一、froggeric/Qwen-Fixed-Chat-Templates v22.5 更新

    1.1 修改目標

    將 Qwen 3.8 官方 chat template 換成 froggeric 的 v22.5 修復版,解決官方模板的以下已知缺陷:

    • 預設 reasoning effort 硬編譯 xhigh,token 預算大量花在 reasoning 上
    • 非 reasoning 快速模式(enable_thinking=false)會直接 crash
    • 歷史 reasoning 提取不完整,會在真實 thought 前多加入空白「思考」區塊
    • Tool argument 的 JSON 字串化格式會導致解析 crash
    • 客戶端 reasoning effort 名稱別名(high/max/minimal 等)不被識別

    1.2 修改檔案明細

    檔案 位置 修改內容
    chat_template.jinja /mnt/NVME/qwen38-27b-R9700/models/Qwen3.8-27B-MXFP4-mtpfp8/ 官方模板 → v22.5(template_version = "qwen3.8-froggeric-v22.5")
    tokenizer_config.json 同上 chat_template 欄位同步更新為 v22.5 模板字串

    備份檔案(修改前自動產出):

    • chat_template.jinja.bak-official
    • tokenizer_config.json.bak-official

    1.3 v22.5 相比官方模板的主要修復

    項目 官方 Qwen 3.8 模板 froggeric v22.5
    預設 reasoning baseline 硬編譯 xhigh 預設 medium(零注入),保留 KV cache 一致性
    非 reasoning 快速模式 Qwen3.8-2.4T-A95B 模板遇 enable_thinking=false 直接 crash 完整支援,via kwargs 或 <\|think_off\|>
    歷史 reasoning 提取 丟棄 in-content 提取,在真實 thought 前加空白「思考」區塊 跨 OpenAI / Anthropic / in-content 統一提取,不重複 tag
    Tool argument wire format 標準 OpenAI client 的 JSON 字串化 arguments 會 crash 統一 XML 預設,安全渲染 stringified JSON
    客戶端 reasoning alias 拒絕非標準名稱 自動映射:high/max/ultracode/extreme→xhigh,minimal→low,none/off→disabled
    內聯 steering tag 不支援 <\|think_low/medium/xhigh/ultracode/off\|>,strip 後保留至下個 tag
    前置 system/developer 訊息 多條視為獨立 turn 合併為單一 system turn

    1.4 啟動腳本同步修改

    檔案:~/vllm-start-8080-v116,第 86 行附近

    - "--default-chat-template-kwargs={\"reasoning_effort\":\"xhigh\"}"
    + "--default-chat-template-kwargs={\"reasoning_effort\":\"low\"}"
    

    原因:v22.5 預設 medium 即可;xhigh 會繼續強制注入 xhigh reasoning instruction,與 v22.5 的 zero-injection 設計衝突。改為 low 讓 v22.5 的 short thinking 指引正確生效。

    1.5 生效條件

    vLLM model 是 read-only mount,啟動時讀入 → 換完 template 後需重啟容器才生效:

    ./vllm-start-8080-v116 start
    

    二、vLLM 緩存命中顯示修復

    2.1 問題描述

    DSH 介面讀 usage.prompt_tokens_details.cached_tokens 顯示 prefix cache 命中數,但 v116(vLLM 0.28.0)的 API 回傳:

    "prompt_tokens_details": null
    

    導致 DSH 一直顯示 0,即使 prefix cache 實際有命中(vLLM log 顯示 hit rate 45.3% → 61.2%,證明 cache 本身運作正常)。

    2.2 根因分析

    vLLM 的 enable_prompt_tokens_details 預設值是 False。v116 啟動腳本沒有傳入該旗標,所以 API 端不會把 cached token 數填進 usage 欄位。

    0.9.3 upstream 的 serve-mxfp4.sh 有兩支旗標,v116 漏掉:

    --enable-prompt-tokens-details    # 把 num_cached_tokens 填進 usage.prompt_tokens_details
    --enable-force-include-usage      # 強制每次回應都帶 usage 欄位
    

    兩支旗標在 1.0.16 映像(vLLM 0.28.0)中均已支援,預設值皆為 False,需顯式傳入才啟用。

    2.3 修改內容

    檔案:~/vllm-start-8080-v116,SERVE_ARGS 陣列(base / vision / conc2 三個變體共用,加在變體分支之前)

       --enable-auto-tool-choice
       --tool-call-parser=qwen3_coder
       --reasoning-parser=qwen3
       --generation-config=auto
    +  # DSH 讀 usage.prompt_tokens_details.cached_tokens 顯示緩存命中; 0.9.3 upstream
    +  # 靠這兩支旗標讓 vLLM 把 cached token 數填進 usage (否則回 null, DSH 一直 0)
    +  --enable-prompt-tokens-details
    +  --enable-force-include-usage
       "--default-chat-template-kwargs={\"reasoning_effort\":\"low\"}"
    

    2.4 驗證方式

    dryrun 驗證(已執行,兩支旗標均出現在最終 docker 指令):

    ./vllm-start-8080-v116 dryrun | tr ' ' '\n' | grep -E "enable-prompt-tokens-details|enable-force-include-usage"
    # 預期輸出:
    # --enable-prompt-tokens-details
    # --enable-force-include-usage
    

    模型速度測試報告:Prefill / Decode Throughput

    模型與環境

    • 模型:qwen3.8-27b-mxfp4
    • 推理引擎:vLLM
    • 端點:http://192.168.1.241:8080/v1(OpenAI 相容 API)
    • 並行度:batch = 1(單序列測量)
    • max_model_len:262,144

    量測方法

    • 使用 SSE 串流逐 chunk 記時。
    • Prefill 速度 = prompt_tokens / TTFT(TTFT = 第一個 token chunk 的時間點)。
    • Decode 速度 = completion_tokens / (total_time − TTFT)。
    • Prefill 使用隨機文本,避免 vLLM prefix-cache 命中,量測「冷啟動」速率。
    • 溫度 temperature = 0。

    Prefill 結果(input tokens/s,冷啟動、無快取)

    目標 實際 prompt tokens TTFT (s) Prefill 速度 (tok/s)
    2,048 3,685 1.464 2,516
    4,096 7,294 3.111 2,345
    8,192 14,504 6.361 2,280
    16,384 28,907 13.646 2,118
    32,768 57,805 31.138 1,856
    65,536 115,663 78.598 1,472

    備註:因隨機單詞 token 化較密,實際 prompt tokens 比目標大;此處以實際 token 數計算。

    觀察:短上下文約 2.5K tok/s,隨 context 變長因 attention / KV 二次成本遞減至 ~1.47K tok/s(115K tokens),符合預期。本次整體比上次快約 5–8%。


    Decode 結果(輸出 tokens/s,穩態)

    任務 total tokens content tokens 生成時間 (s) 吞吐 (tok/s) 中位間隔 (ms/token,間隔 content)
    列 1..800 3,127 387 24.033 130.1 61.3
    重複句子 ×200 4,096(觸頂) 507 31.631 129.5 61.7

    觀察:穩態 ~130 tok/s(約 7.7 ms/token,全部 token 基準)。



  • 單張R9700 AI PRO 32G + VLLM + amd/Qwen3.8-27B-Quark-AWQ-MXFP4
    paul houP paul hou
    LLM讨论区 r9700 vllm qwen-27b

    之前本地佈署都是靠著網站上的大神們的分享
    這個假日測了整整二天VLLM,最終使用了這個方案,結果不錯分享一下。

    https://github.com/magiccodingman/vllm-radiance

    模型

    • 主模型:/models/amd/Qwen3.8-27B-Quark-AWQ-MXFP4(served name: qwen3.8-27b-mxfp4)
    • Draft 模型:/models/tcclaviger/Qwen3.8-27B-DFlash2-FP8
    • 量化:MXFP4(W4A8),RADIANCE_MXFP4=1 + 全套 radiance 優化旗標(WPERM、HOIST_QUANT、EPIFAST、SKINNY_GEMM、R4D attention 等)

    引擎參數

    • tensor-parallel-size: 1(單卡 R9700 / gfx1201)
    • gpu-memory-utilization: 0.98
    • kv-cache-dtype: fp8,--kv-cache-memory 7,783,339,733 bytes(~7.3GB 固定分配)
    • max-num-seqs: 8
    • max-model-len: 163,840
    • max-num-batched-tokens: 8,192
    • attention-backend: R4D(+ RADIANCE_USE_R4D_GDN / R4D_AR / R4D_AR_QUANT)
    • speculative decoding: dflash,num_speculative_tokens=7,TRITON_ATTN,disable_padded_drafter_batch
    • mamba-cache-mode: align
    • prefix caching: 啟用
    • no-async-scheduling
    • tool call: qwen3_xml parser;reasoning parser: qwen3
    • override generation config: temperature 0.7 / top_p 0.95 / top_k 20
    • chat template: qwen-fixed-v22.3.jinja(掛載為 /chat-template.jinja)
    • language-model-only、trust-remote-code、HF_HUB_OFFLINE

    實際運行狀態(/metrics)

    • KV cache:288 blocks,共 180,098 tokens 容量,fp8
    • prefix cache 命中率:1.85M / 2.44M ≈ 75.9%
    • dflash spec decode:48,588 draft tokens → 17,180 accepted,整體接受率約 35%;position 0 接受率 69%(4920/7108),逐位遞減到 position 6 約 15%
    • 目前 0 running / 0 waiting,KV 使用率 0%
    • AITER:只啟用 UNIFIED_ATTENTION,其餘(MHA/MOE/MLA/RMSNORM/FP4BMM/FP8BMM)全關

    Prefill(長 context 預填)速度:

    prompt 長度 實際 tokens TTFT prefill 速度
    8K 7,470 3.22s 2,319 tok/s
    32K 29,742 11.49s 2,589 tok/s
    64K 59,409 17.95s 3,311 tok/s
    128K 118,772 45.52s 2,609 tok/s

    Prefill 穩定在 2,300-3,300 tok/s,128K context 約 45 秒完成預填。

    併發測試(每路 max 256 tok):

    併發路數 wall time 總輸出 聚合速度 單路速度
    1(先前) - 298 tok 41.5 tok/s 41.5
    2 7.5s 459 tok 61.4 tok/s 29-34
    4 8.7s 982 tok 113.5 tok/s 25-42
    8 12.7s 1,941 tok 152.4 tok/s 27-42

    實際在DSH的使用,單路思考時是很穩定在40 t/s左右,編程時會到70~80 t/s
    ,比起llama.cpp + UD-Q4_K_XL 思考時25~40t/s,編程時50~75 t/s 效能好上不少。


  • 單張R9700 AI PRO 32G + VLLM + amd/Qwen3.8-27B-Quark-AWQ-MXFP4
    paul houP paul hou
    LLM讨论区 r9700 vllm qwen-27b

    @陳野狼

    我是有碰到CPU 100%的問題但沒有GUP 100%
    GPU 的待機功耗ROCM比VULKAN高似乎是一直以來都是如此,所以就沒放在心上。
    以下是我目前最新的設定,這個單請求上下文最大化的版本

    vllm-start-8080-upstream 設定說明

    來源腳本:/home/paul/vllm-start-8080-upstream
    上游腳本:/mnt/NVME/qwen38-27b-R9700/ggz14-mxfp4-new/serve-mxfp4.sh(GGZ14/vllm-mxfp4 0.12.0)
    更新:Launch80 / GGZ14,2026-09-08

    以 GGZ14/vllm-mxfp4 0.12.0 上游 serve-mxfp4.sh 原樣啟動 Qwen3.8-27B native MXFP4(4-bit)
    server(AMD RDNA4 gfx1201,FP8 speculative drafter,vllm-radiance 映像),僅加上「單卡承載覆蓋」。

    1. 與舊 stack(~/vllm-start-8080)完全分離

    項目 舊 stack(zzpanic launcher,單卡調校) 本腳本(upstream)
    Repo 舊 repo 獨立 clone:/mnt/NVME/qwen38-27b-R9700/ggz14-mxfp4-new(0.12.0)
    容器名 qwen38-27b-mxfp4-nv qwen38-27b-mxfp4-upstream
    torch.compile cache 舊目錄 明確指定 ~/.radiance-cache-w4a8-093-upstream(避免兩套 patch 集合共用同一 cache 互相覆蓋)
    libr4d 舊 patch 新版 patch 含 rx6(ar_oneshot_3rank_exact),首次啟動自動預編譯

    2. 用法

    ./vllm-start-8080-upstream          # 等同 start
    ./vllm-start-8080-upstream start    # 啟動(nohup 背景執行,log 見下)
    ./vllm-start-8080-upstream stop     # docker stop + rm 本容器
    ./vllm-start-8080-upstream status   # docker ps 過濾本容器
    ./vllm-start-8080-upstream logs     # docker logs --tail 200 -f
    
    • Log 檔:/mnt/NVME/qwen38-27b-R9700/upstream-mxfp4-background.log
    • 監聽:http://localhost:8080/v1

    同埠/同卡互斥

    啟動前會自動停掉舊 radiance 容器(不會並發):

    • vllm-radiance-mxfp4
    • qwen38-27b-mxfp4
    • qwen38-27b-mxfp4-nv

    並 docker rm -f 掉舊的 qwen38-27b-mxfp4-upstream 容器。

    3. 設定值總表

    所有變數以環境變數形式傳入 serve-mxfp4.sh(上游腳本全部是 ${VAR:-default},可隨時覆蓋)。

    3.1 本腳本明確指定的值

    變數 值 說明
    REPO /mnt/NVME/qwen38-27b-R9700/ggz14-mxfp4-new 0.12.0 獨立 repo clone
    MODELS /mnt/NVME/qwen38-27b-R9700/models checkpoint 目錄(bind-mount 到 /models)
    DRAFTER /mnt/NVME/qwen38-27b-R9700/models/tcclaviger/Qwen3.8-27B-DFlash2-FP8 FP8 block-diffusion drafter(SPEC_METHOD=dflash 用)
    PORT 8080 監聽埠
    RUNTIME docker 容器 runtime
    NAME qwen38-27b-mxfp4-upstream 容器名
    CACHE ~/.radiance-cache-w4a8-093-upstream 獨立編譯 cache(見 §1)
    EXTRA --language-model-only 不載 vision tower(單卡覆蓋,見 §4)
    MAXSEQS 1 最大並發 seq(單卡覆蓋)
    MAXLEN 262144 最大 context 長度
    KV_MEM 10600000000(≈ 9.87 GiB) KV cache 顯式 pin(單卡覆蓋)
    CHUNK 2048 prefill chunk / --max-num-batched-tokens(單卡覆蓋)
    HSA_TOOLS_DISABLE_REGISTER 1 ROCm runtime knob:關閉 HSA tools(profiling/追蹤工具)對 runtime 的註冊攔截(需上游 serve-mxfp4.sh 的 pass-through,見 §7)

    3.2 照上游預設的項目(未覆蓋)

    項目 值
    IMAGE stilldeadcode/vllm-radiance:0.9.3(與舊 stack 同張映像;CACHE 對映像版本有 key 綁定,兩者要一起換)
    R4D_PIN b9e42ab(+ rx6 patch)
    SPEC_METHOD / SPEC dflash / 7
    TP 自動偵測 → 本機單卡 = TP1
    GPU_UTIL 0.98
    FAST_DRAFT 1(int2 draft head + exact rerank)
    RERANK 80
    VHEAD / WPERM 等 上游預設

    4. 單卡覆蓋的理由(為什麼不照上游預設)

    上游預設(MAXSEQS=8 / MAXLEN=262144 / CHUNK=8192 / GPU_UTIL=0.98)是 2× R9700 TP2
    的量:每卡只扛 9.4 GiB weights,KV 空間充裕。

    單卡 32G 要載整顆 18.6 GiB weights,同設定下 vLLM 只給出 ~4.6 GiB KV,
    而 262144 需要 9.61 GiB → 啟動直接掛:

    ValueError: KV cache 9.61 GiB needed > 4.62 GiB available, est. max len 98880
    

    因此覆蓋值 = 舊無視覺版(novision)在同一張卡上實證過的承載上限:

    覆蓋 理由
    EXTRA="--language-model-only" 不載 vision tower,省 ~0.9 GiB + encoder cache
    MAXSEQS=1 單卡 262144 長上下文路線(9.61 GiB/滿 seq)
    MAXLEN=262144 搭配 KV_MEM pin 10.6G > 9.61G 需求,冷/暖 boot 行為一致
    KV_MEM=10600000000 顯式 pin,跳過 vLLM 保守 profiling(profile 只給 4.6G)
    CHUNK=2048 上游 8192 的 activation 暫態太大:cudagraph capture 時 weights 18.6G + KV 9.87G 已吃掉 ~31G,8192 的暫態直接 OOM(實測);2048 是舊版在同卡驗證過的峰值

    想改走高並發短上下文:MAXSEQS=8 MAXLEN=90000 KV_MEM=auto

    5. 啟動後驗證(看 log)

    • "Using RadianceMxfp4W4A8LinearKernel for MXFP4 GEMM" → 自研 kernel 贏了選擇
    • "[radiance] native MXFP4 enabled on gfx12x" → aiter fp4 gate 已放開
    • R4D selections table(RADIANCE_R4D_REPORT=1)→ 哪些 kernel 被選中、為什麼
    • 標準的 "current platform does not support native MXFP4/MXFP6" notice 仍會出現且是誤報
      (來自另一個 supports_mx() call),可忽略

    6. 路徑總表

    用途 路徑
    啟動腳本 /home/paul/vllm-start-8080-upstream
    Repo(0.12.0) /mnt/NVME/qwen38-27b-R9700/ggz14-mxfp4-new
    Checkpoints /mnt/NVME/qwen38-27b-R9700/models
    Drafter /mnt/NVME/qwen38-27b-R9700/models/tcclaviger/Qwen3.8-27B-DFlash2-FP8
    編譯 cache ~/.radiance-cache-w4a8-093-upstream
    背景 log /mnt/NVME/qwen38-27b-R9700/upstream-mxfp4-background.log

    7. 對上游 serve-mxfp4.sh 的本地修改

    上游的 docker 環境變數 pass-through 是固定清單(只有
    HIP_FORCE_DEV_KERNARG / HSA_ENABLE_INTERRUPT / ROC_ACTIVE_WAIT_TIMEOUT
    三個 ROCm knob 是「設定才傳」),HSA_TOOLS_DISABLE_REGISTER 不在其中。
    因此在 repo clone 內做了最小修改(重clone 或升級 0.12.x 時需重新套用):

    1. pass-through(docker run 命令,緊接 ROC_ACTIVE_WAIT_TIMEOUT 之後):
      ${HSA_TOOLS_DISABLE_REGISTER:+-e HSA_TOOLS_DISABLE_REGISTER="$HSA_TOOLS_DISABLE_REGISTER"} \
      
    2. usage 說明:在 HIP_FORCE_DEV_KERNARG 那段 ROCm knobs 說明補上
      HSA_TOOLS_DISABLE_REGISTER=1 (off HSA tools registration)。

    行為:只有在環境變數被設定時(本包裝腳本恆設為 1)才會傳進容器。

    Qwen3.8-27B-MXFP4 本機效能測試報告

    日期: 2026-09-10
    硬體: AMD Radeon AI PRO R9700(32GB 顯示記憶體,gfx1201)
    軟體: VLLM Radiance 0.9.3 + R4D 注意力機制 + DFlash2-FP8 投機解碼

    設定

    • 模型:Qwen3.8-27B-MXFP4(MXFP4 權重,FP8 KV cache)
    • 注意力機制:R4D 後端
    • 投機解碼:DFlash2-FP8(7 個投機 token,貪婪取樣)
    • max_model_len:262144
    • gpu_memory_utilization:0.98
    • kv-cache-memory:10.6GB
    • tensor-parallel-size:1

    測試結果

    測試項目 提示詞 Tokens 完成 Tokens 時間(秒) 速度(tok/s)
    短文本創作(俳句) 17 128 2.20 58.3
    中等分析(量子計算) 18 512 9.79 52.3
    長篇 Essay(300 字歷史) 24 768 13.01 59.1
    程式碼生成(快速排序) 19 512 6.48 79.0
    推理模式開(數學題) 51 930 9.97 93.3
    長上下文(100 字提示詞) 119 76 1.37 55.4
    多輪對話 38 163 2.42 67.4

    摘要

    • 標準生成: 持續 ~55-60 tok/s
    • 程式碼生成: ~79 tok/s(接受率較高)
    • 推理模式: ~93 tok/s(長 CoT 攤薄 TTFT)
    • TTFT: 短提示詞 1.4–2.2 秒
    • 投機解碼: DFlash2-FP8 讓 27B 參數規模下 TTFT 維持在低水準

    備註

    • 關閉思考模式:透過 extra_body: {chat_template_kwargs: {enable_thinking: False}}
    • 推理模式的回應會同時包含 reasoning 與 content 欄位
    • 單卡 RDNA4 推理表現出色

  • 雙R9700玩qfn的朋友又有得玩了
    paul houP paul hou
    LLM讨论区 r9700 qwen-flash 多卡部署

    @张光璞
    STRATA又更新了,單R9700的PREFILL上升19%

    Prompt MMQ(PF_FUSED_NATIVE=0) Fused int8 kernel 提升
    7,118 tok 3,953 ms(1,801 tok/s) 3,309 ms(2,160 tok/s) +19.5%
    14,244 tok 7,567 ms(1,882 tok/s) 6,318 ms(2,256 tok/s) +19.8%

  • 整活:8GB显存也要跑agent
    paul houP paul hou
    AI Agent rtx5060 qwen-27b 量化

    這模型的名稱為什麼要取拉屎的閩南語?


  • Strata计算器,预估你的配置能不能跑Strata
    paul houP paul hou
    LLM讨论区 strata qwen

    @艷陽天
    SSD,幾乎都是讀取的話,壽命不會掉多少。HDD的話也不適合當N-GRAM用,SEEKTIME太久了。


  • 單張R9700 AI PRO 32G + VLLM + amd/Qwen3.8-27B-Quark-AWQ-MXFP4
    paul houP paul hou
    LLM讨论区 r9700 vllm qwen-27b

    頂這麼高使用VRAM已經用二天了,都還沒發生過oom,另外也有一個上下文131072,2併發的啟動檔,也沒有oom。
    不使用圖形就是完全關閉所有圖形,我是遠端連線在用,不是本機使用,在本機使用我會用llama.cpp+vulkan。
    為什麼會用cachyos ?這個os最出名的就是vulkan優化,不只玩game有用vulkan跑LLM也是有用,arch linux的難點全都丟給hermes解決就好。


  • 單張R9700 AI PRO 32G + VLLM + amd/Qwen3.8-27B-Quark-AWQ-MXFP4
    paul houP paul hou
    LLM讨论区 r9700 vllm qwen-27b

    我是純LLM SERVER的方式在用,所以可以壓榨所有的VRAM來使用,另外是放棄了多模態沒上載入。二併發的情況下還是滿好用的。
    這套99.9%都是HERMES+DSV4F安裝好的,那2G應該可以想辦法搞出來。
    DSH新會話大約是3秒就開始動作,所以PREFILL是破3000的,這是我用這個的重點。

    1225f3f2-cf51-4b23-9959-f10088fdb83b-image.jpeg


  • 單張R9700 AI PRO 32G + VLLM + amd/Qwen3.8-27B-Quark-AWQ-MXFP4
    paul houP paul hou
    LLM讨论区 r9700 vllm qwen-27b

    @kos-or 有測試內建的MTP,結果就是9xx的prefill,30左右的decode,看來真的跟dflash2有關了。


  • 單張R9700 AI PRO 32G + VLLM + amd/Qwen3.8-27B-Quark-AWQ-MXFP4
    paul houP paul hou
    LLM讨论区 r9700 vllm qwen-27b

    SGLANG在AMD目前不吃香,只能等那位大神打滿補丁了。
    我現在用的這套是滿好用的
    vllm 0.27.1版
    https://hub.docker.com/r/stilldeadcode/vllm-radiance/

    vllm 0.28.0版
    https://github.com/GGZ14/vllm-mxfp4

    都可以試試,我最後是改用0.27.1的


  • 單張R9700 AI PRO 32G + VLLM + amd/Qwen3.8-27B-Quark-AWQ-MXFP4
    paul houP paul hou
    LLM讨论区 r9700 vllm qwen-27b

    讓HERMES寫的報告

    vLLM + Qwen3.8-27B-Quark-AWQ-MXFP4 安裝與測試報告

    報告日期:2026-09-06 硬體:AMD Radeon AI PRO R9700(RDNA4 / gfx1201 / 32GB VRAM) 容器:vllm-radiance-mxfp4(magiccodingman/vllm-radiance:1.0.15) 服務位址:0.0.0.0:8080

    本報告完整記錄在 R9700 上部署 vLLM 並服務 amd/Qwen3.8-27B-Quark-AWQ-MXFP4 模型的整個過程:環境決策、安裝步驟、啟動配置、啟動時間軸、功能驗證、效能基準測試、各種調優實驗的對比結果,以及踩過的坑與最終結論。

    1. 背景與決策

    目標:在本機 R9700 上以 vLLM 服務 Qwen3.8-27B 的 Quark MXFP4 量化模型(amd/Qwen3.8-27B-Quark-AWQ-MXFP4),並搭配推測解碼(speculative decoding)提升 decode 速度。

    關鍵決策:RDNA4(gfx1201)沒有原生 MXFP4 運算單元,通用 rocm/vllm 映像會退回「模擬反量化」(BF16 高精度計算),速度落後 3-5 倍。因此本部署採用社群 fork vllm-radiance(magiccodingman/vllm-radiance:1.0.15,源自 codeberg.org/ggz14/radiance-vllm-mxfp4),它為 gfx1201 實作了原生 MXFP4 W4A8 kernel(RadianceMxfp4W4A8LinearKernel)與 R4D attention 後端。啟動後日誌確認快取路徑全部生效:

    • Using RadianceMxfp4W4A8LinearKernel for MXFP4 GEMM(W4A8 fp8-WMMA GEMM 啟用)
    • [radiance] R4D kernel selection: libr4d 全部 query 解析成功
    • [radiance.gdn] all-R4D prefill / decode(fused) / prefill+spec path live
    • [radiance] int2 draft head armed(dflash 推測解碼堆疊就緒)

    注意:啟動日誌中出現「The current platform does not support native MXFP4/MXFP6 computation」一行是 quark 模組另一支 supports_mx() 呼叫的誤報(上游 repo 文件已註明),不代表 MXFP4 kernel 未啟用;真實狀態以上述 RadianceMxfp4W4A8LinearKernel 行為為準。

    2. 環境

    項目 值
    主機 CachyOS Linux,192.168.1.241
    GPU AMD Radeon AI PRO R9700(RDNA4 / gfx1201 / 32GB VRAM)
    容器映像 magiccodingman/vllm-radiance:1.0.15(vLLM 0.28.0 / Python 3.12 / ROCm)
    容器名稱 vllm-radiance-mxfp4(2026-09-06 02:19 建立)
    主模型 amd/Qwen3.8-27B-Quark-AWQ-MXFP4(19GB,arch qwen3_5,quant_method=quark)
    推測解碼 drafter tcclaviger/Qwen3.8-27B-DFlash2-FP8(2GB,FP8,block 128)
    模型存放 /mnt/NVME/qwen38-27b-R9700/models/(bind mount → 容器 /models:ro)
    快取目錄 /mnt/NVME/qwen38-27b-R9700/vllm-cache/mxfp4(Triton / inductor / aiter 快取)
    啟動腳本 ~/vllm-start(start|stop|status|logs)
    下游 Open WebUI(8080 串接)+ DSH 使用同一端點
    VRAM 使用 34.03 / 34.2 GB(gpu-memory-utilization 0.98 預留,屬正常)

    模型權重檢查:config.json 的 quantization_config.quant_method 為 quark、algo_config 為 null(mapper 相容性要求,見第 6 節坑 1);checkpoint 18.44 GiB 單一 safetensors 檔;config.json 保留 config.json.orig_with_algo_config 備份。

    3. 安裝步驟

    1. 準備 NVMe 目錄:/mnt/NVME/qwen38-27b-R9700/ 下建立 models/、vllm-cache/、ggz14-mxfp4/(radiance repo 的 git clone,含 patches 與 chat template)。
    2. 下載主模型 amd/Qwen3.8-27B-Quark-AWQ-MXFP4(19GB)與 drafter tcclaviger/Qwen3.8-27B-DFlash2-FP8(2GB)到 models/ 下。
    3. 拉取映像 magiccodingman/vllm-radiance:1.0.15(映像已內建 ROCm、vLLM 0.28.0、libr4d 與 repo patches,無需自建 Dockerfile)。
    4. 準備 chat template:ggz14-mxfp4/qwen-fixed-v22.3.jinja(reasoning_effort → Qwen think 控制 token 的映射),以唯讀方式 bind 進容器。
    5. 撰寫 ~/vllm-start 啟動腳本(docker run 全參數 + 約 60 個 RADIANCE_* 環境變數),作為唯一權威啟動器(repo 內舊 start-mxfp4.sh 已於 2026-09 刪除,避免誤用過期設定)。
    6. 啟動容器:掛載 /dev/kfd、/dev/dri,模型唯讀掛載,快取目錄持久化,端口 0.0.0.0:8080 → 8080。
    7. 驗證:/v1/models 回傳 qwen3.8-27b-mxfp4(max_model_len 163840);/v1/chat/completions 冒煙測試成功。

    4. 啟動配置

    vllm serve 關鍵參數(來自 ~/vllm-start,可調變數在腳本頭部):

    參數 值 說明
    --kv-cache-dtype fp8 FP8 KV cache,容量翻倍(需顯式指定,非預設)
    --gpu-memory-utilization 0.98 VRAM 預留比例
    --kv-cache-memory 7783339733 (7.25 GiB) 顯式 KV 預算,優先於 gpu-memory-utilization
    --max-num-seqs 8 短 ctx 爆發用;長 agent 情境建議 2-4
    --max-model-len 163840 避免 repo 預設 262144 引發 FLA-GDN OOM
    --max-num-batched-tokens 8192 調高至 16384 曾 OOM(見第 6 節坑 5),已固定
    --attention-backend R4D radiance 原生 R4D attention(僅支援 GQA=6)
    --enable-prefix-caching (啟用) 前綴快取;實測 hit rate 可達 91%
    --speculative-config dflash, spec tokens=7, TRITON_ATTN DFlash2 FP8 drafter,7 為 block_size 8 的硬上限
    --no-async-scheduling (同步調度) 調優穩定配置;A/B 測試顯示無效能差異(見第 5.4)
    --enable-auto-tool-choice + --tool-call-parser qwen3_xml 工具呼叫解析
    --reasoning-parser qwen3 思考解析(讀 enable_thinking)
    --override-generation-config temp 0.7 / top_p 0.95 / top_k 20 預設採樣參數
    --enable-per-request-metrics (啟用) 基準測試所需的 per-request 直方圖
    --chat-template /chat-template.jinja reasoning_effort 映射模板
    --language-model-only (啟用) 略過 VLM vision tower
    --tensor-parallel-size 1 單卡
    環境變數(節選) RADIANCE_MXFP4=1, W4A8, FAST_DRAFT, DYNAMIC_WIDTH=1, DYNAMIC_DRAFT=1 (schedule 1:8,2:7,4:6,8:5,16:4), DRAFT_TAU=0.20, DRAFT_RERANK=80, USE_R4D=1, GDN 融合系列=1, R4D_ATTN_FP8=0, HF_HUB_OFFLINE=1 完整清單見 ~/vllm-start

    5. 測試

    5.1 啟動時間軸(2026-09-06 實測)

    階段 時間(容器內) 備註
    容器啟動 02:19:27 docker run -d
    引擎初始化 02:21:04 V1 LLM engine v0.28.0,spec config dflash/spec=7
    主模型權重載入 02:21:06 → 02:21:22 18.44 GiB,15.64 秒
    drafter 權重載入 02:21:24 1.20 秒
    KV cache 配置 02:21:33 180,098 tokens;163,840 ctx 下最大並發 1.10x
    CUDA graph 捕獲 02:21:33 → 02:21:37 PIECEWISE 19 組 + FULL 8 組 + dflash2 8 組
    API server 就緒 02:22:42 Application startup complete
    總耗時 約 3 分 15 秒 權重載入 15.6s 為主

    5.2 功能驗證

    • /v1/models:回傳 qwen3.8-27b-mxfp4,max_model_len=163840。
    • /v1/chat/completions 冒煙測試:「1+1 等於幾?」→「1+1 等於 2。」,usage 正常(含 reasoning_tokens 統計)。
    • 推測解碼健康:SpecDecoding 指標持續輸出,平均接受長度 2.8-3.0,draft 接受率 26-29%(生產負載下)。
    • 前綴快取:多輪對話 hit rate 達 91.2%。
    • Open WebUI 串接 8080 正常(容器 healthy)。
    • VRAM 34.03/34.2 GB 為 0.98 預留設計,非洩漏;分配:權重 19GB + drafter 2GB + KV 7.25GB + 約 6GB workspace。

    5.3 基準測試方法

    基準協議(~/vllm-bench.py [並發數] [max_tokens] [tag]):固定長 prompt(約 4K tokens 中文段落 x80),N 個相同請求並發,於請求前後對 /metrics 做 delta 取樣:prefill = Δprompt_tokens / Δprefill_time;decode = 1 / ΔTPOT;e2e = Δtokens / Δwall;接受率 = Δaccepted / Δdraft。注意兩點陷阱:(1) 指標是累計值,A/B 比較必須取 delta 或重啟容器重置;(2) 極短 prompt 會低估 prefill(固定開銷主導),必須用長 prompt。

    5.4 調優實驗結果

    實驗 1 — spec tokens 數(8 並發 / 4K prompt / 128 out,delta 取樣):

    指標 spec=7(採用) spec=5
    decode(1/TPOT) 67.1 tok/s 60.6 tok/s
    e2e(含 prefill) 181 tok/s 162 tok/s
    prefill 2235 tok/s 1747 tok/s
    accepted / draft 2.96 2.52
    接受率 42.2% 50.5%

    結論:不能只看接受率——spec=5 單位接受率較高但每步 draft 位置較少,有效吞吐量反而輸。spec=7 全面勝利,為最終配置。

    實驗 2 — 原生 MTP 頭 vs dflash drafter(8 並發 / 4.2K prompt / greedy / 128 out):

    指標 MTP spec=3 MTP spec=5 dflash2 spec=7(基準)
    decode(1/TPOT) 23.7 tok/s 23.9 tok/s 67.1 tok/s
    e2e 吞吐量 82.4 tok/s 55.6 tok/s 181 tok/s
    prefill 897 tok/s 913 tok/s 2235 tok/s
    draft 接受率 74.7% 59.4% 42.2%

    結論:MTP 能跑(Qwen3_5MTP 架構解析成功,需 RADIANCE_QUARK_BF16_MTP=1 讓 BF16 的 mtp.fc 繞過 Quark recipe),但 1 層 MTP 頭每步自回歸跑 N 次,spec 越多浪費越多——比 dflash2 慢約 2.8 倍 decode、2-3 倍 e2e。保留 dflash2 @ spec=7;MTP 僅在需要零外部 drafter 佔用時使用。另 MTP spec=5 在此 KV 預算下無法開機(需要 7.32 GiB > 7.25 可用),spec>=4 需降 max_model_len 至 160000。

    實驗 3 — async vs sync 調度(2 並發 / 4K / 128 out):e2e 49.2 vs 49.7、prefill 4330 vs 4366、decode 44.4 vs 44.7、接受率 29.6% vs 29.6%——無可測量差異(先前「async 損失 5-10% decode」的說法未重現;首次 async 跑的 35 tok/s 是 Triton JIT 冷啟動)。維持 --no-async-scheduling。

    實驗 4 — 對照上游 repo 預設(ggz14 serve-mxfp4.sh):R4D_ATTN_FP8=0 vs 3 效能相同(e2e 46.9/52.9 vs 46.9/57.9,±10% 為 run-to-run 噪音);GDN fused decode 的 triton fallback 只是 1.0.15 映像層級問題(torch.ops._C.fused_gdn_decode_post_conv_mtp 未編入),非環境變數可修,是相對於 repo 融合路徑的主要 decode 效能差距。其餘參數(TP=1、KV 7.25 GiB、163840、SANITIZE=1、DRAFT_TAU=0.20)皆合理。

    實驗 5 — 新增 Quark 模型的兩個坑(Fable / Qwen3.6 MoE 實測):(1) algo_config 非 null 會使 Quark mapper 崩潰(AttributeError: 'dict' object has no attribute 'endswith'),須在 config.json 設為 null(純 mapper 相容欄位,不影響權重品質);(2) R4D 後端寫死 GQA=6,GQA=8 的 MoE 模型須改用 TRITON_ATTN 並關閉 R4D 環境變數。另:MoE 量化模型(Qwen3.6-35B-A3B)在此映像走 on-the-fly 反量化,decode 僅 5.8 tok/s,比 dense 27B+dflash 慢 4-8 倍,已移除不保留。

    實驗 6 — reasoning_effort 行為(模板映射實測):off→0 思考 token;low→約 49;high→150(吃光輸出預算,對 agent 危險);max→約 91(反直覺地比 high 少)。模型實際上是 ON/OFF 思考,agent 負載建議 low。注意:把 reasoning_effort 加進 --override-generation-config 無效(不在 available_params 會被靜默丟棄),正確做法是改 chat template 預設值。

    5.5 生產負載實測(2026-09-06 07:34 日誌)

    指標 值
    prompt 吞吐量 454.0 tok/s(長 prompt 請求中)
    generation 吞吐量 20.5 - 44.7 tok/s(隨請求類型)
    平均接受長度 2.83 - 3.04
    draft 接受率 26.1% - 29.2%
    KV cache 使用 33.4% - 34.5%
    前綴快取 hit rate 91.2%

    6. 踩過的坑(按嚴重度)

    1. Quark algo_config 崩潰:config.json 的 quantization_config.algo_config 若非 null,vLLM Quark mapper 在 apply_vllm_mapper 拋 AttributeError(dict 項目被當字串 .endswith 檢查)。修法:設為 null 再重新載入。症狀是引擎在 init 前退出,根因不是 KV/OOM,別先調 163840/FP8。
    2. R4D 後端僅支援 GQA=6:GQA=8 的模型(如 Qwen3.6 MoE)直接 NotImplementedError,須改 TRITON_ATTN 並關 R4D 環境變數。
    3. spec tokens > 7 開機失敗:dflash2 的 draft window 為 8 x (n+1),n=10 時 torch.compile 把該維度特化為常數 88 而標記為 DYNAMIC,torch.fx ConstraintViolationError 使 EngineCore 崩潰。spec=7 是硬上限,清快取重編也無解,須改回 7。
    4. INT4 drafter 無法載入:syvai 的 W4A16 版本是 Marlin pack 量化,linear 權重住在 packed buffer,radiance DFlash loader 要求 dense .weight → AttributeError: 'QKVParallelLinear' object has no attribute 'weight'。需改源碼,維持 tcclaviger FP8。
    5. MAX_BATCHED_TOKENS 調高 OOM:8192→16384 使 activation/workspace 峰值翻倍,在 32GB(權重 19 + KV 7.25 已鎖定)下長 prompt prefill 時 torch.OutOfMemoryError(嘗試分配 860 MiB,0 bytes free)。已回退 8192;要重試須先縮 KV_MEM。
    6. MTP spec>=4 KV 不足:spec=5 需 7.32 GiB KV > 7.25 可用,engine-init 失敗;spec>=4 須降 max_model_len 至 160000。
    7. /metrics 解析陷阱:prometheus 行格式是 name{labels} value,用「名稱+空白」匹配會全部回 0,bench 看似「什麼都沒跑」;要匹配 name{ 或名稱+空白。
    8. sed 刪 --no-async-scheduling 行會吃掉行尾反斜線,docker run 參數列提前結束;必須整行刪除(sed '/--no-async-scheduling/d')。
    9. FP8 KV 未校準:checkpoint 無 q/k scale,vLLM 用 1.0 裸存(log 有 warning);對 27B 推理可接受,但別當已校準 FP8 看待。
    10. 「平台不支援原生 MXFP4」日誌為誤報:以 RadianceMxfp4W4A8LinearKernel 行確認真實 kernel 狀態,勿據此判斷 kernel 未啟用。

    7. 結論

    • 部署成功:vllm-radiance 1.0.15 + amd/Qwen3.8-27B-Quark-AWQ-MXFP4 + DFlash2 FP8 drafter(spec=7)在 R9700 穩定服務於 8080,啟動總耗時約 3 分 15 秒。
    • 基準效能(8 並發 / 4K prompt / 128 out):e2e 約 47-58 tok/s(spec=7 多請求 delta 實測 181 tok/s)、prefill 約 2000-2300 tok/s、decode 19-23 tok/s(生產負載 20-45 tok/s)、接受率 26-42%。
    • 關鍵配置:KV FP8 顯式指定 + 7.25 GiB 顯式預算、max_model_len 163840、batched tokens 8192、R4D attention、同步調度、dflash spec=7。
    • 已驗證排除的方案:原生 MTP(慢 2.8 倍)、INT4 drafter(無法載入)、MoE 量化模型(慢 4-8 倍)、async 調度(無收益)、batched tokens 16384(OOM)。
    • 已知殘留差距:1.0.15 映像的 GDN 純 decode 步驟走 Triton 未融合路徑(映像層級,需換映像才能修)。
    • KV 預算現實:180,098 tokens 約等於 1 個 163K 長請求或 8 個 <22K 短請求;agent 長多輪情境建議 max_num_seqs 2-4。

  • 單張R9700 AI PRO 32G + VLLM + amd/Qwen3.8-27B-Quark-AWQ-MXFP4
    paul houP paul hou
    LLM讨论区 r9700 vllm qwen-27b

    @nami-ryuu
    mattbucci/2x-R9700-RDNA4-GFX1201-sglang-inference

    這個看看如何,我沒有雙卡就不試了。


  • 單張R9700 AI PRO 32G + VLLM + amd/Qwen3.8-27B-Quark-AWQ-MXFP4
    paul houP paul hou
    LLM讨论区 r9700 vllm qwen-27b

    image.jpeg
    我沒碰到你GPU 70W的問題耶,PREFILL的測試大多都是2200左右。
    ROCM待機大多在10W,VULKAN待機大多在6W。
    找HERMES去更換上遊設定試試。
    抓圖才發現忘了關圖形,Xwayland和plasmadhell有在佔用VRAM。


  • 單張R9700 AI PRO 32G + VLLM + amd/Qwen3.8-27B-Quark-AWQ-MXFP4
    paul houP paul hou
    LLM讨论区 r9700 vllm qwen-27b

    今天vllm 0.28.0版升級成magiccodingman/vllm-radiance 1.0.16
    比對0.27.1版的結果。
    測起來是0.28.0的PREFILL較快,0.27.1的DECODE較快。

    本地模型 Qwen3.8-27B-MXFP4 單請求 PREFILL / DECODE 基準測試報告

    ROCm 6.3應該是AI寫錯了。

    • 模型: qwen3.8-27b-mxfp4 (MXFP4 權重, MTP-FP8 KV Cache)
    • 伺服器: vLLM (magiccodingman/vllm-radiance 1.0.16), 127.0.0.1:8080
    • GPU: AMD Radeon AI PRO R9700 (RDNA4, gfx1201, 32GB VRAM, ROCm 6.3)
    • 引擎參數: MAXLEN 262144, KV Cache 固定 10.6G, GPU_MEM_UTIL 0.98
    • 測試方式: 單條 HTTP streaming 請求, token 數以 vLLM /metrics counter 差量精算
    • 日期: 2026-09-13

    一、PREFILL (輸入處理) 吞吐

    Prompt token 數除以 TTFT(接到第一個輸出 token 的時間)。

    提示詞 Tokens TTFT (ms) Prefill 吞吐 (tok/s)
    2,030 760 2,670
    8,190 3,444 2,378

    4 倍輸入只花 4.5 倍時間 → 縮放接近線性。Prefill 吃 GPU 帶寬,所以遠比 decode 快。
    TTFT 含首 token 取樣,故此處為「prefill 直進首 token」的綜合速率,為單請求標準計法。


    二、DECODE (輸出生成) 吞吐

    短 prompt + 長輸出隔離純 decode,3 次重複皆穩定。

    指標 數值
    Decode 吞吐 47.7 tok/s
    Per-token latency 21.0 ms/tok

    測量關鍵(Pitfall):對 /metrics 的 generation_tokens_total 差量除以完整請求區間,才得到真實 decode 速率。不能除以單一 SSE chunk 的窗口 —— vLLM 會把 ~3 個 token 攤進一個 chunk,除以攤平後窗口會高估(曾誤得 71/126 tok/s)。


    三、任務情境測試(對照參考表)

    速度 = 完成 Tokens ÷ 總時間(tok/s)。

    測試項目 提示詞 Tok 完成 Tok 時間 (s) 速度 (tok/s) 參考表
    短文本創作(俳句) 12 128 2.17 59.0 58.3
    中等分析(量子計算) 25 512 9.29 55.1 52.3
    長篇 Essay(300字歷史) 18 768 11.56 66.4 59.1
    程式碼生成(快速排序) 20 512 6.41 79.8 79.0
    推理模式開(數學題) 60 815 9.68 84.2 93.3
    長上下文(100字提示詞) 95 76 1.86 41.0 55.4
    多輪對話 43 163 3.70 44.1 67.4

    對照結論

    • 整體貼近參考: 俳句 59 vs 58.3、quicksort 79.8 vs 79.0、量子分析 55 vs 52 —— 本地 serve 與參考落差很小。
    • 長輸出 decode 偏高: 推理 84.2、essay 66.4,符合單流 27B 於此卡的水準(長輸出時固定開銷被攤平)。
    • 短輸出明顯偏低: 長上下文 41、多輪 44。原因 = 完成 tokens 少,固定 TTFT + 首幾個 token 溫機成本占比大,拉低平均。系統吞吐(system throughput)會比單請求高得多。

    四、附註

    • 測量腳本: /home/paul/bench_vllm_single.py(prefill/decode)、/home/paul/bench_tasks.py(七情境)。
    • /tokenize 端點位於伺服器根路徑(非 /v1);/completions 需 /v1。
    • 短輸出情境可改測並發請求以反映真實服務吞吐。

  • 阿里巴巴也出harness了
    paul houP paul hou
    LLM讨论区 编程

    https://github.com/AMAP-ML/LongHorizon-Harness

    還沒時間試,晚點來試看看。


  • 【直播】二次开发R9700单卡用SGLang跑Qwen3.8-27B成功! TTFT0.9s/PP2000/TG100tps(代码)!体验丝滑
    paul houP paul hou
    LLM讨论区 r9700 sg-lang qwen-27b

    @fcme
    感謝分享,裝來試試看。


  • 本地部署AI划算吗?GPT Plus订阅/DeepSeek V4.1 Flash 比本地部署更划算,ComfyUI/隐私/扛审查/API稳定性等特殊场景例外!
    paul houP paul hou
    随便聊聊 本地模型 deepseek gpt

    就是有很少數幾個工作要簽NDA,但現在又只剩規劃架構和改改參數的能力了(這年頭誰還自己寫code的),只能本地佈署了,一張R9700已是投資極限。


  • 水一贴: Strata v0.1.43 又又又提速了
    paul houP paul hou
    随便聊聊 strata rtx5070 7900xtx

    STRATA又又又又更新了,R9700 + 32G DDR4 ,DECODE能經常性看到110~125ts


  • 64GB vs 96GB跑Strata Flash-Next
    paul houP paul hou
    LLM讨论区 strata qwen-flash 本地模型

    我只有32g ddr4 還是勉強跑起來了。

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组