跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • 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
折叠
品牌标识

抡锤者

  1. 主页
  2. 版块
  3. LLM讨论区
  4. R9700 32GB 跑 Qwen3.8-27B:llama.cpp Vulkan + MTP 实测与踩坑记录

R9700 32GB 跑 Qwen3.8-27B:llama.cpp Vulkan + MTP 实测与踩坑记录

已定时 固定直到 2026/8/22 11:04 已锁定 已移动 LLM讨论区
r9700qwen-27bllama.cpp
6 帖子 4 发布者 229 浏览 2 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • PhoenixRise2026P 离线
    PhoenixRise2026P 离线
    PhoenixRise2026
    编写于 最后由 编辑
    #1

    最近在一张 AMD Radeon AI PRO R9700 32GB 上折腾 Qwen3.8-27B,前后试了 ROCm 下的 SGLang、vLLM,以及 llama.cpp 的 HIP / Vulkan 路线。

    最后这台机器上比较稳定、速度也比较理想的方案,是:

    llama.cpp + Mesa RADV Vulkan + Q4_K_M + MTP + 128K Context

    先说结论:如果手里已经有 R9700,现阶段我更建议优先试 llama.cpp Vulkan。至少在我这套环境里,它比我之前折腾的 ROCm 路线省心得多。

    下面的数据只代表这台机器、当前驱动和对应版本下的结果,不建议直接外推到所有 R9700 或所有模型。全程使用Gemini 3.7 flash 配置。


    1. 测试环境

    3c5fd039-4a59-4168-b40c-9e74da4cf18b-image.jpeg
    硬件大致如下:

    • 华南金牌 X99-TF
    • Xeon E5 v4 2697A
    • 128GB DDR4
    • AMD Radeon AI PRO R9700 32GB
    • PCIe 3.0 x16
    • 机器里同时还有一张 NVIDIA 4080s 32G

    软件环境:

    • Ubuntu 24.04
    • Mesa 25.2.x / RADV Vulkan
    • llama.cpp Vulkan 构建
    • Qwen3.8-27B Q4_K_M
    • 视觉模型使用对应的 F16 mmproj

    BIOS 里开启:

    • Above 4G Decoding
    • Resizable BAR

    2. 目前的实测结果

    c7be7696-b82f-415e-a93b-aa2428a49116.png

    场景 实测
    长文本 Prefill,约 2322 tokens 730.89 t/s
    非思考模式,代码生成 53.10 t/s
    思考模式,数学证明 44.81 t/s
    视觉问答生成 35.80 t/s
    视觉问答 TTFT 约 927 ms
    Context 128K
    运行时显存占用 约 20.3 GiB

    其中 53 t/s 并不是所有问题都能稳定达到。

    Qwen3.8 的 MTP 对任务类型比较敏感。代码、JSON、工具调用这类下一 token 比较容易预测的任务,接受率高,速度会明显上去;开放式写作、视觉问答这类任务,接受率下降,速度也会跟着掉。

    我这边两个比较典型的数据:

    • 代码生成:MTP acceptance 约 68.7%,53.10 t/s
    • 数学证明:MTP acceptance 约 54.9%,44.81 t/s

    所以以后看别人贴 R9700 / Qwen3.8 的速度,最好先看他测的是什么题、有没有开 MTP,而不是只看一个 t/s。


    3. 我现在用的关键参数

    核心启动参数大概是下面这样:

    export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.json
    
    ./llama-server \
      --model /path/to/Qwen3.8-27B-Q4_K_M.gguf \
      --mmproj /path/to/mmproj-Qwen3.8-27B-F16.gguf \
      --ctx-size 131072 \
      --cache-type-k q4_0 \
      --cache-type-v q4_0 \
      --n-gpu-layers 999 \
      --no-mmap \
      --spec-type draft-mtp \
      --spec-draft-n-max 5 \
      --cache-ram 32768 \
      --flash-attn on \
      --parallel 1 \
      --jinja
    

    几个我觉得比较关键的地方。

    ① 双显卡环境最好显式指定 Vulkan ICD

    我的机器同时有 AMD 和 NVIDIA 卡。

    如果直接让 Vulkan 自己探测,偶尔会碰到加载错 ICD 的问题。显式指定:

    VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.json
    

    之后省事很多。

    如果是纯 AMD 单卡机器,未必需要这么做。

    ② 128K 下 KV Cache 用 q4_0

    我现在是:

    --cache-type-k q4_0
    --cache-type-v q4_0
    

    这样 128K Context 可以装下,整套运行时显存大约 20.3 GiB,还能留出十来 GB 余量。

    如果 KV Cache 直接上高精度,32GB 显存会紧张很多。

    ③ MTP 我这里 n-max=5 比较合适

    --spec-type draft-mtp
    --spec-draft-n-max 5
    

    我试过把步数继续往上加,但不是越大越快。

    草稿猜错以后需要重新验证,步数过大反而可能拖慢整体 Decode。至少我这组测试里,5 是比较合适的点。

    ④ Prompt Cache 别留太小

    长对话下,如果 --cache-ram 太小,日志里可能看到 cache skipping,后续请求又重新做 Prefill。

    我最后给到:

    --cache-ram 32768
    

    这主要吃系统内存,不是显存。机器内存够的话可以适当放大。


    4. ReBAR 值得检查

    这是这次折腾里我觉得最值得单独说的一点。

    最开始这台 X99 平台没有把 ReBAR 配好,长 Prompt 的 Prefill 大约在 450 t/s 左右。

    BIOS 开启:

    • Above 4G Decoding
    • Resizable BAR

    并确认系统里 R9700 的 BAR 映射正常后,同一套环境下长文本 Prefill 测到 730.89 t/s。

    从这组结果看,提升大约 62%。

    不过这里我更愿意把它理解成“这台机器上的实测现象”,而不是说所有 R9700 开 ReBAR 都一定能涨 60%。

    老平台、PCIe 拓扑、驱动版本都可能影响结果。

    如果 Prefill 明显偏慢,我建议先查 ReBAR,而不是一上来就怀疑模型或 llama.cpp。


    5. Vulkan、SGLang、vLLM,我最后为什么留 Vulkan

    我前面也折腾过 ROCm。

    当时大概是这个情况:

    路线 我这台机器上的情况
    SGLang / ROCm 可以跑,但大上下文下 Decode 大约 11 t/s,空闲功耗表现也不理想
    vLLM / ROCm 128K 需要继续调 KV Cache 和请求限制,当时 Decode 大约 7~8 t/s
    llama.cpp HIP 可以用,但我测试时稳定性和 MTP 表现不如 Vulkan
    llama.cpp Vulkan 当前最省事,MTP、Flash Attention、128K、mmproj 都能正常用

    这里要特别说明:

    这不是严格的同权重、同量化、同版本横向 benchmark。

    SGLang / vLLM 当时使用的权重格式和运行条件并不完全一样,所以这些数字只能说明“我最后为什么选 Vulkan”,不能拿来证明 Vulkan 理论上一定比 ROCm 快多少。

    后面 ROCm、vLLM、SGLang 对 RDNA4 的支持继续完善以后,结果完全可能变化。


    6. 几个比较容易踩的坑

    ReBAR 没开

    表现:

    • 长 Prompt Prefill 偏慢
    • 视觉输入响应也可能不理想

    先检查 BIOS 的 Above 4G Decoding 和 ReBAR。

    用几十个 token 测 Prefill

    短 Prompt 固定开销占比太高,数据没什么参考意义。

    我现在至少用 2000 tokens 左右的输入来观察 Prefill。

    MTP 步数一味往上加

    n-max=8、10 不一定比 5 快。

    接受率掉下来后,可能越调越慢。

    128K 还坚持高精度 KV Cache

    32GB 显存很容易被吃满。

    如果目标就是单请求 128K,q4_0 KV Cache 是一个比较实用的取舍。

    双卡机器不指定 Vulkan ICD

    AMD + NVIDIA 混插时尤其值得注意。

    遇到 Vulkan 启动异常,可以先确认实际加载的是不是 RADV。


    7. 关于老 X99 / E5 v4 会不会拖后腿

    这也是我一开始比较担心的。

    从目前的监控看,Decode 阶段 GPU 利用率很高,CPU 占用并不高。至少在我这套单请求测试里,E5 v4 还没有表现成明显瓶颈。

    这不代表 CPU 完全不重要。

    高并发、大量预处理、复杂 Agent 工作流或者频繁 CPU↔GPU 数据交换时,老平台还是可能影响整体体验。

    但如果只是单用户本地 LLM 推理,我暂时没有因为 X99 去换平台的打算。


    8. 目前还没测的东西

    这篇主要是单实例、单请求测试。

    还没有认真做:

    • --parallel 4 之类的多并发压力测试
    • 128K 下长时间并发稳定性
    • 接入Hermes的测试
    • 不同 GGUF 量化之间的质量和速度对比

    所以现在更适合把它看成一份 R9700 + llama.cpp Vulkan 的实机配置记录,不是完整 benchmark。


    结论

    如果是 R9700 32GB + Qwen3.8-27B,我目前会推荐:

    Q4_K_M + llama.cpp Vulkan + MTP + q4_0 KV Cache

    我这台机器上可以稳定跑 128K,上下文显存余量也比较充足;普通生成大约在 40~50 t/s,代码这类 MTP 接受率高的任务可以到 50 t/s 以上。

    另外,如果 Prefill 明显低于预期,建议优先检查 Above 4G Decoding / ReBAR。

    :::

    J 1 条回复 最后回复
    3
    • PhoenixRise2026P PhoenixRise2026

      最近在一张 AMD Radeon AI PRO R9700 32GB 上折腾 Qwen3.8-27B,前后试了 ROCm 下的 SGLang、vLLM,以及 llama.cpp 的 HIP / Vulkan 路线。

      最后这台机器上比较稳定、速度也比较理想的方案,是:

      llama.cpp + Mesa RADV Vulkan + Q4_K_M + MTP + 128K Context

      先说结论:如果手里已经有 R9700,现阶段我更建议优先试 llama.cpp Vulkan。至少在我这套环境里,它比我之前折腾的 ROCm 路线省心得多。

      下面的数据只代表这台机器、当前驱动和对应版本下的结果,不建议直接外推到所有 R9700 或所有模型。全程使用Gemini 3.7 flash 配置。


      1. 测试环境

      3c5fd039-4a59-4168-b40c-9e74da4cf18b-image.jpeg
      硬件大致如下:

      • 华南金牌 X99-TF
      • Xeon E5 v4 2697A
      • 128GB DDR4
      • AMD Radeon AI PRO R9700 32GB
      • PCIe 3.0 x16
      • 机器里同时还有一张 NVIDIA 4080s 32G

      软件环境:

      • Ubuntu 24.04
      • Mesa 25.2.x / RADV Vulkan
      • llama.cpp Vulkan 构建
      • Qwen3.8-27B Q4_K_M
      • 视觉模型使用对应的 F16 mmproj

      BIOS 里开启:

      • Above 4G Decoding
      • Resizable BAR

      2. 目前的实测结果

      c7be7696-b82f-415e-a93b-aa2428a49116.png

      场景 实测
      长文本 Prefill,约 2322 tokens 730.89 t/s
      非思考模式,代码生成 53.10 t/s
      思考模式,数学证明 44.81 t/s
      视觉问答生成 35.80 t/s
      视觉问答 TTFT 约 927 ms
      Context 128K
      运行时显存占用 约 20.3 GiB

      其中 53 t/s 并不是所有问题都能稳定达到。

      Qwen3.8 的 MTP 对任务类型比较敏感。代码、JSON、工具调用这类下一 token 比较容易预测的任务,接受率高,速度会明显上去;开放式写作、视觉问答这类任务,接受率下降,速度也会跟着掉。

      我这边两个比较典型的数据:

      • 代码生成:MTP acceptance 约 68.7%,53.10 t/s
      • 数学证明:MTP acceptance 约 54.9%,44.81 t/s

      所以以后看别人贴 R9700 / Qwen3.8 的速度,最好先看他测的是什么题、有没有开 MTP,而不是只看一个 t/s。


      3. 我现在用的关键参数

      核心启动参数大概是下面这样:

      export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.json
      
      ./llama-server \
        --model /path/to/Qwen3.8-27B-Q4_K_M.gguf \
        --mmproj /path/to/mmproj-Qwen3.8-27B-F16.gguf \
        --ctx-size 131072 \
        --cache-type-k q4_0 \
        --cache-type-v q4_0 \
        --n-gpu-layers 999 \
        --no-mmap \
        --spec-type draft-mtp \
        --spec-draft-n-max 5 \
        --cache-ram 32768 \
        --flash-attn on \
        --parallel 1 \
        --jinja
      

      几个我觉得比较关键的地方。

      ① 双显卡环境最好显式指定 Vulkan ICD

      我的机器同时有 AMD 和 NVIDIA 卡。

      如果直接让 Vulkan 自己探测,偶尔会碰到加载错 ICD 的问题。显式指定:

      VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.json
      

      之后省事很多。

      如果是纯 AMD 单卡机器,未必需要这么做。

      ② 128K 下 KV Cache 用 q4_0

      我现在是:

      --cache-type-k q4_0
      --cache-type-v q4_0
      

      这样 128K Context 可以装下,整套运行时显存大约 20.3 GiB,还能留出十来 GB 余量。

      如果 KV Cache 直接上高精度,32GB 显存会紧张很多。

      ③ MTP 我这里 n-max=5 比较合适

      --spec-type draft-mtp
      --spec-draft-n-max 5
      

      我试过把步数继续往上加,但不是越大越快。

      草稿猜错以后需要重新验证,步数过大反而可能拖慢整体 Decode。至少我这组测试里,5 是比较合适的点。

      ④ Prompt Cache 别留太小

      长对话下,如果 --cache-ram 太小,日志里可能看到 cache skipping,后续请求又重新做 Prefill。

      我最后给到:

      --cache-ram 32768
      

      这主要吃系统内存,不是显存。机器内存够的话可以适当放大。


      4. ReBAR 值得检查

      这是这次折腾里我觉得最值得单独说的一点。

      最开始这台 X99 平台没有把 ReBAR 配好,长 Prompt 的 Prefill 大约在 450 t/s 左右。

      BIOS 开启:

      • Above 4G Decoding
      • Resizable BAR

      并确认系统里 R9700 的 BAR 映射正常后,同一套环境下长文本 Prefill 测到 730.89 t/s。

      从这组结果看,提升大约 62%。

      不过这里我更愿意把它理解成“这台机器上的实测现象”,而不是说所有 R9700 开 ReBAR 都一定能涨 60%。

      老平台、PCIe 拓扑、驱动版本都可能影响结果。

      如果 Prefill 明显偏慢,我建议先查 ReBAR,而不是一上来就怀疑模型或 llama.cpp。


      5. Vulkan、SGLang、vLLM,我最后为什么留 Vulkan

      我前面也折腾过 ROCm。

      当时大概是这个情况:

      路线 我这台机器上的情况
      SGLang / ROCm 可以跑,但大上下文下 Decode 大约 11 t/s,空闲功耗表现也不理想
      vLLM / ROCm 128K 需要继续调 KV Cache 和请求限制,当时 Decode 大约 7~8 t/s
      llama.cpp HIP 可以用,但我测试时稳定性和 MTP 表现不如 Vulkan
      llama.cpp Vulkan 当前最省事,MTP、Flash Attention、128K、mmproj 都能正常用

      这里要特别说明:

      这不是严格的同权重、同量化、同版本横向 benchmark。

      SGLang / vLLM 当时使用的权重格式和运行条件并不完全一样,所以这些数字只能说明“我最后为什么选 Vulkan”,不能拿来证明 Vulkan 理论上一定比 ROCm 快多少。

      后面 ROCm、vLLM、SGLang 对 RDNA4 的支持继续完善以后,结果完全可能变化。


      6. 几个比较容易踩的坑

      ReBAR 没开

      表现:

      • 长 Prompt Prefill 偏慢
      • 视觉输入响应也可能不理想

      先检查 BIOS 的 Above 4G Decoding 和 ReBAR。

      用几十个 token 测 Prefill

      短 Prompt 固定开销占比太高,数据没什么参考意义。

      我现在至少用 2000 tokens 左右的输入来观察 Prefill。

      MTP 步数一味往上加

      n-max=8、10 不一定比 5 快。

      接受率掉下来后,可能越调越慢。

      128K 还坚持高精度 KV Cache

      32GB 显存很容易被吃满。

      如果目标就是单请求 128K,q4_0 KV Cache 是一个比较实用的取舍。

      双卡机器不指定 Vulkan ICD

      AMD + NVIDIA 混插时尤其值得注意。

      遇到 Vulkan 启动异常,可以先确认实际加载的是不是 RADV。


      7. 关于老 X99 / E5 v4 会不会拖后腿

      这也是我一开始比较担心的。

      从目前的监控看,Decode 阶段 GPU 利用率很高,CPU 占用并不高。至少在我这套单请求测试里,E5 v4 还没有表现成明显瓶颈。

      这不代表 CPU 完全不重要。

      高并发、大量预处理、复杂 Agent 工作流或者频繁 CPU↔GPU 数据交换时,老平台还是可能影响整体体验。

      但如果只是单用户本地 LLM 推理,我暂时没有因为 X99 去换平台的打算。


      8. 目前还没测的东西

      这篇主要是单实例、单请求测试。

      还没有认真做:

      • --parallel 4 之类的多并发压力测试
      • 128K 下长时间并发稳定性
      • 接入Hermes的测试
      • 不同 GGUF 量化之间的质量和速度对比

      所以现在更适合把它看成一份 R9700 + llama.cpp Vulkan 的实机配置记录,不是完整 benchmark。


      结论

      如果是 R9700 32GB + Qwen3.8-27B,我目前会推荐:

      Q4_K_M + llama.cpp Vulkan + MTP + q4_0 KV Cache

      我这台机器上可以稳定跑 128K,上下文显存余量也比较充足;普通生成大约在 40~50 t/s,代码这类 MTP 接受率高的任务可以到 50 t/s 以上。

      另外,如果 Prefill 明显低于预期,建议优先检查 Above 4G Decoding / ReBAR。

      :::

      J 离线
      J 离线
      johnnybegood
      劳动模范 技术大牛
      编写于 最后由 编辑
      #2

      @PhoenixRise2026 谢谢分享, 请问电脑内存的大小和速度影响大么?

      1 条回复 最后回复
      0
      • PhoenixRise2026P 离线
        PhoenixRise2026P 离线
        PhoenixRise2026
        编写于 最后由 PhoenixRise2026 编辑
        #3

        如果模型能基本完整放进显存,内存速度影响通常不大,Decode 阶段主要还是看显卡和显存带宽。

        内存容量更重要一些,主要影响模型加载、系统文件缓存、Prompt Cache,以及显存不够时的 CPU offload。内存太小会导致加载困难、频繁换页,甚至直接 OOM。

        如果模型需要大量 CPU/GPU 混合推理,那内存带宽就会明显重要起来,情况会不一样。

        1 条回复 最后回复
        0
        • E 离线
          E 离线
          exllm
          德高望重
          编写于 最后由 编辑
          #4

          32G 显存, cache 可以用q8_0, 3.8-27B量化用q4_0很容易在思考阶段死循环,调整repeat-penalty也无法排除, 同样的问题3.6-27B就不会。

          PhoenixRise2026P 1 条回复 最后回复
          1
          • ,terryT terry 固定了此主题
          • E exllm

            32G 显存, cache 可以用q8_0, 3.8-27B量化用q4_0很容易在思考阶段死循环,调整repeat-penalty也无法排除, 同样的问题3.6-27B就不会。

            PhoenixRise2026P 离线
            PhoenixRise2026P 离线
            PhoenixRise2026
            编写于 最后由 编辑
            #5

            @exllm 谢谢提醒,补一个q8_0的测试结果
            15ac13bc-d61a-48a0-9431-9e5740df43f7.png

            1 条回复 最后回复
            1
            • W 离线
              W 离线
              wml-ai
              德高望重 劳动模范
              编写于 最后由 wml-ai 编辑
              #6

              @phoenixrise2026
              我也是 R9700,但是CPU是AMD Ryzen 9700X,Mesa RADV Vulkan升级到26.1.7后,llama-bench测试Qwen3.8-27B-UD-Q4_K_XL,prefill比25.2.X版本有明显提升,decode比ROCm快。

              prompt size Vulkan 旧驱动 25.2.8 Vulkan 新驱动 26.1.7 ROCm
              pp512 881.8 1014.2 (+15.0%) 1206.5
              pp2048 870.1 1004.4(+15.4%) 1182.2
              pp8192 825.7 953.2 (+15.4%) 1124.1
              tg128 28.16 28.41 (+0.9%) 26.43

              另外好奇的是,你的4080s 32GB是魔改卡吗?为什么不是涡轮散热器?

              Windows-Mac-Linux-AI

              1 条回复 最后回复
              0

              你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

              厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

              有了你的建议,这篇帖子会更精彩哦 💗

              注册 登录
              回复
              • 在新帖中回复
              登录后回复
              • 从旧到新
              • 从新到旧
              • 最多赞同


              • 登录

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