跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • 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 广场
Stephen TseS

Stephen Tse

@Stephen Tse
取消关注 关注
关于
帖子
1
主题
1
分享
0
群组
0
粉丝
0
关注
0

帖子

最新 最佳 有争议的

  • AMD R9700 實測:ROCm 10,Qwen38-27B-UD-Q6_K、128K context 和 MTP
    Stephen TseS Stephen Tse

    AMD R9700 實測:ROCm 10,27B 模型、128K context 和 MTP (Windows 11 Pro)

    分享一下我這段時間折騰 R9700 的結果。
    我想用一張 32GB 卡在 Windows 跑本地 AI,平常透過 Hermes 使用,也希望保留128K長上下文和看圖功能。

    001.png

    目前我定下來的組合是 ROCm 10 + llama.cpp b10814 + Qwen3.8-27B UD-Q6_K,搭配 128K context、q8 KV、MTP n=2 和 BF16 mmproj。

    先說結果:**獨立 512-token 輸出測試約 **35.4 tok/s(wall-clock)/36.6 tok/s(server-reported)****;精確 120K 輸入可以完成,但首字要等 435.7 秒,約 7 分 16 秒。所以對我來說,長 context 是能用,但一次塞進十幾萬 tokens 的等待時間還是很明顯。

    我的配置

    項目 配置
    GPU GIGABYTE Radeon AI PRO R9700 32GB,gfx1201
    CPU / RAM Ryzen 7 9800X3D / G.SKILL Trident Z5 Neo 64GB DDR5-6000
    系統 / Driver Windows 11 / 32.0.31019.2002
    Backend ROCm 10.0.0 clean stack,官方 llama.cpp b10814
    模型 unsloth/Qwen3.8-27B-GGUF,UD-Q6_K
    圖片 projector BF16 mmproj
    Context / KV 131072 / K、V 都用 q8_0
    MTP draft-mtp,n=2;draft KV 也是 q8_0
    其他 Flash Attention on、parallel 1、batch4096 / ubatch1024、threads 8

    主機板、SSD 等完整零件和價格我放在後面。圖片端到端流程在部署時已通過,下面的跑分則全部是文字測試。

    實際跑分

    這次我直接傳入固定長度的 token array,沒有再用字數估算。每組都核對 cache_n=0,MTP 也確認有啟用。

    實際輸入 tokens Prefill tok/s 首字等待(TTFT) MTP acceptance
    2,048 785.5 2.68 秒 94.1%
    32,768 555.6 59.1 秒 100%
    65,536 410.1 160.0 秒 100%
    102,400 316.1 324.4 秒 74.5%
    122,880 282.5 435.7 秒 未保存詳細計數

    這裡的 120K 是 122,880 個輸入 tokens;128K 則是 server 配置容量 131,072,兩個數字不要混在一起。隨著輸入變長,prefill 下降,首字等待明顯增加。

    生成速度我另外測,不把它和 prefill 混成一個 tok/s:

    輸出長度 Wall-clock Server-reported MTP acceptance
    256 tokens,清除殘留 server 後 38.07 tok/s 39.23 tok/s 60.17%
    512 tokens,正式 baseline 35.4 tok/s 36.6 tok/s 53.0%

    256-token 那次 wall time 為 6.72 秒,server evaluation time 為 6499.66 ms,所以兩個速度稍有不同。512-token 的完整計時起止沒有留下,我保留原本的指標名稱。

    這是 synthetic 測試,不是自然中文或 coding 的保證速度。 長輸入使用重複 token,MTP 比較容易接受 draft;我不會把表裡的 100% 當成日常對話也能達到。這些是部署時保存的單次結果,尚未做多次平均、長文品質或長時間壓力測試。

    我為什麼選這套版本和參數

    ROCm 10:先把環境整理乾淨。 我之前曾混用新 runtime 和舊 hipBLAS/rocBLAS,後來改成獨立的 ROCm 10 SDK 和官方 package,核對實際載入的 DLL。官方更新也包含 Windows memory-pool allocation stall 修正,值得測試,但不能只憑版本號就說速度提升多少。ROCm 10 更新說明

    b10814:因為我實際驗證過這個官方包。 我試過自己編譯 b10819 和另一個 upstream 版本,在 Windows 的 ROCm Clang/MSVC 工具鏈遇到 host/device 編譯衝突,最後沒有編成。官方 b10814 則通過模型載入、長 context、MTP、看圖和 Hermes 使用流程,所以我先固定用它。b10814 官方下載

    MTP n=2:已經可用,先不繼續追 n=3。 最終 ROCm 的 512-token baseline 有 53% acceptance。舊 Vulkan 測試中,n=3 在 64K 相對 n=2 只多約 4.7% decode,卻多約 1 GiB dedicated memory;我因此沒有繼續往上調。這不是 ROCm n=2/n=3 的正式對照,也不能說 n=2 一定最優。

    batch4096 / ubatch1024:加大之後沒有看到收益。 我用同樣 122,880-token 輸入試過另一組:

    120K A/B 4096 / 1024 16384 / 2048
    Prefill 282.5 tok/s 280.4 tok/s
    TTFT 435.7 秒 438.2 秒
    Dedicated memory 28.2 GiB 29.1 GiB
    Shared memory 0.82 GiB 1.87 GiB
    錯誤 0 0

    速度差很小,一次測試不足以說大 batch 必然更慢,但我沒得到好處,記憶體用量又增加,就保留 4096/1024。這次同時改了兩個參數,也沒法單獨判斷是哪個造成差異。

    幾個真的影響結果的坑

    最值得提醒的是 prompt 長度和重複 server,它們都曾讓我的數字失真。

    • 早期「64K」其實只有 45,372 tokens。 當時用字元數估算,整批輸入約短了 30.8%。那些 32K/64K/100K 成績已撤回,正式表是改用精確 token array 後重測的。我當時懷疑長 context 會讓 MTP 關閉,後續測到 120K 仍啟用,也撤回了這個推論。
    • 舊 server 沒退乾淨。 新 server 跑分時,舊 ROCm 7.1 server 還在佔 GPU/shared memory,曾量到只有 12.79 tok/s。清除後的 256-token 測試回到 38.07/39.23 tok/s。這是排除資源互搶,不能說成升級 ROCm 後三倍加速。
    • Hermes 曾啟動沒有模型的 router。 它佔著服務 port,旁邊又有真正的模型 server;另一次 launcher 漏了 auth 參數。後來我固定從同一個 launcher 啟動,並核對實際模型和 Hermes 請求,不只看 health 正常。
    • 必要時完整重啟後端。 只殺掉其中一個 server 後,記憶體分佈仍不理想。我最後停掉全部 server、確認 port 釋放,等約 15 秒,再只啟動 production 一次。這裡的 cold restart 是重啟後端,不是重開 Windows。
    • Smart App Control 曾擋住 DLL。 b10814 最初的 0xC0E90002 後來查到是 Code Integrity 阻擋 ggml.dll,不是單純缺 DLL。後續已成功載入,但我沒有保存具體 UI 修復步驟,因此不把它寫成一條通用解法。

    編譯失敗的細節、事件編號和登錄檔處理,我留在私人技術筆記。對這篇跑分而言,重點是最後用哪個成功的 binary,以及測試時有沒有其他程序干擾。

    跟我以前的 Vulkan 比起來呢?

    我有舊 Vulkan b10819 的數據,但當時用的是 non-UD 模型、128-token synthetic 輸出,不能直接跟現在的 UD-Q6_K、512-token baseline 排名。

    以舊環境的 65,536-token 輸入為例:

    舊 Vulkan 模式 Prefill tok/s Decode tok/s TTFT 秒
    MTP off 496.304 22.168 132.281
    MTP n=2 477.646 44.426 137.529
    MTP n=3,補齊 draft q8 KV 後 469.014 46.524 139.986

    這張表能看舊環境內部的 MTP 差別,但不能證明 ROCm 或 Vulkan 全面勝出。特別是舊測試輸出高度重複,n=2 曾全數接受 draft,生成速度會很好看。要回答 backend 誰更快,我還需要用同一模型 hash、相同輸入和輸出長度重做對照。

    我的硬件花了多少錢?(加拿大溫哥華)

    以下來自我補充的 Excel 價格表:2026/9/6 Newegg.ca PC Builder 參考價在前,六月購入金額在後。購入欄是折扣前的零件金額,Combo 另計,不能直接當成每件折扣後淨成本。截止2026年9月6日, 這個主機組合2個月時間漲了約23%左右,後續加買了一樣的SSD 2TB給LINUX系統。

    零件 9月市場價 - 加幣 6月購入價 - 加幣 6月購入價 - 換算人民幣
    AMD Ryzen 7 9800X3D 569.99 609.99 2,958
    ASUS TUF X870E-PLUS WIFI7 379.99 379.99 1,843
    G.SKILL Trident Z5 Neo 64GB DDR5-6000 1,729.99 1,419.99 6,886
    GIGABYTE R9700 32GB 2,499.99 2,049.99 9,942
    Phanteks XT Pro Ultra 109.99 104.99 509
    ASUS TUF Gaming 1000W Gold 269.99 219.99 1,067
    WD_BLACK SN7100 2TB(6月第1顆) 499.99 409.99 1,988
    be quiet! Pure Rock Pro 3 79.99 79.99 388
    WD_BLACK SN7100 2TB(8月第2顆) 499.99 424.99 —

    R9700 的9月 CAD 2,499.99 是缺貨牌價,不代表當天買得到。兩顆 SSD 也不是同時買:6月第一顆 409.99,8月第二顆 424.99,所以我把它們分開列。

    RMB 只換算6月已知購入金額,使用 2026/9/4 的 1 CAD ≈ 4.8497 CNY

    整套配置成本對照(CAD) 9/6 報價/估算 原購入價格
    商品小計,未折扣 6,639.91 5,699.91
    Combo 折扣 -300.00 -845.00
    折後稅前小計 6,339.91 4,854.91
    稅金 760.79 584.90
    運費 19.24 19.24
    含稅及運費總額 7,119.94 5,459.05

    所以我目前整套配置的累計支出是 CAD 5,459.05,包含八月加買的 SSD。九月同配置參考總額約 7,119.94,差 1,660.89(30.42%);其中不只零件牌價變動,也包含 Combo 優惠減少。9月稅金和運費是表內估算,不是完成結帳的報價。

    海外加拿大沒有魔改卡, 否則我當初是想買京東保養的魔改卡

    目前的價格也不想買第2張R9700, 所以想搭建UBUNTU那邊主要想玩Minimax H3

    我目前的使用結論

    折騰完之後,我留下了一套固定的 ROCm 10 環境、一個 production server,以及 UD-Q6_K/BF16 模型組合。舊 runtime、模型和 ROCm 7.1 殘留清掉後,約釋放 31 GiB;顯示驅動保留,最後 health、MTP、看圖和 Hermes 都確認正常。

    我現在比較傾向保存版本、hash 和設定,以後需要時乾淨重建,不再留一堆舊 runtime 備份。35 tok/s 級別的這筆輸出測試對我的目標已經可用;真正要接受的限制,是 100K 以上新 prompt 的等待時間。

    目前還缺自然中文/coding 的重複測試、長時間穩定性和功耗數據,所以這篇先當作我的部署與跑分分享。


    附錄:重現所需的版本與參數

    主模型與 BF16 projector 都固定在 repo revision:

    4ca720788d1e01f1bff70c033e0d0028fd02e502

    檔案 Bytes SHA256
    Qwen3.8-27B-UD-Q6_K.gguf 21983677344 c9c206812fbe4ac7b76a729e25928b63f2ae89d37f69da7a71c20aec763cd436
    mmproj-BF16.gguf 931146432 83ee4f4f205fa514161778c41df1ea14144faa0f713510893b63c2395f5c2d53
    llama-b10814-bin-win-rocm-10.0-x64.zip — 5e088b105d480836751c4ae4826523acd0053caf6688fcca4a94763ab171bee2

    llama.cpp 完整 commit:1548a240e36079f07856c95c53de1ec2770840ab。上述 hash 是我的部署紀錄,不是本次重新下載後計算。官方 commit

    以下是我的啟動狀態和參數摘要,檔案位置用佔位符取代;分行僅為方便閱讀,實際執行需按 shell 處理換行。

    image.png

    llama-server.exe
      --model MODEL_GGUF --mmproj MMPROJ_GGUF
      --alias Qwen38-27B-UD-Q6_K
      --host 127.0.0.1 --port 1234 --api-key-file KEY_FILE
      --ctx-size 131072 --cache-type-k q8_0 --cache-type-v q8_0
      --n-gpu-layers 99 --parallel 1 --flash-attn on
      --batch-size 4096 --ubatch-size 1024
      --threads 8 --threads-batch 8
      --spec-type draft-mtp --spec-draft-n-max 2
      --spec-draft-type-k q8_0 --spec-draft-type-v q8_0
      --metrics
    

    我的 launcher 使用 process-local SDK PATH,沒有實作 singleton lock;維護時仍需確認沒有舊 server。長 prompt 也要同步檢查 client timeout,不能只改 server context。

    第一次發長文, 我另一個SSD的LINUX那邊也裝好了HERMES QWEN 3.8 27B Q6 一樣的ROCM10 模型 上下文,如果感興趣我會再發LINUX那邊的測試結果。文章主要由AI幫我整理,我再檢閱. 多多指教。

    AI硬件
  • 登录

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