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

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
品牌标识

抡锤者

  1. 主页
  2. LLM讨论区
  3. 7900 XTX + ROCm 7.14 (TheRock) HSA_XNACK=1 小记:从源码编译 ROCm 的 payoff

7900 XTX + ROCm 7.14 (TheRock) HSA_XNACK=1 小记:从源码编译 ROCm 的 payoff

已定时 已固定 已锁定 已移动 LLM讨论区
1 帖子 1 发布者 104 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • A 离线
    A 离线
    abaalei
    技术大牛 劳动模范
    编写于 最后由 编辑
    #1

    硬件环境:X99 双路 E5-2682 v4 + 讯景 RX 7900 XTX 24GB
    模型:Qwen3.6-27B-Uncensored-HauhauCS-Balanced-MTP-Q4_K_P (16.7GB, 65层)
    原系统:ROCm 7.2.0 + llama.cpp v9672


    前情

    之前看到 Reddit 用户 W61k3r 提到从源码编译 ROCm(TheRock 分支)后,HSA_XNACK=1 能带来性能提升。我们在 ROCm 7.2.0 上试过 HSA_XNACK=1——llama-bench 确实有 +39% prefill,但 llama-server 直接崩溃。

    想想也合理,HSA_XNACK=1(XNACK = eXception on Non-ACKnowledged page)是 ROCm 5.x 时代为 MI200 引入的 SVM 页错误处理特性,7.2 的时候可能还不稳定。所以要试就得升级(升级?降级好不好) ROCm。

    编译 TheRock

    AMD 官方把源码 ROCm 叫 TheRock(rocm/therock 分支),不走 .deb 或 .run 安装。

    # 核心命令:只编 gfx1100(7900 XTX),关掉 MI300 / HPC 冗余
    cmake -DCMAKE_INSTALL_PREFIX=/opt/rocm-7.14-therock \
          -DAMDGPU_TARGETS=gfx1100 \
          -DROCSTATION=OFF \
          -DMIOPEN_BACKEND=HIP \
          ...
    
    make -j16 && make install
    
    项目 数值
    版本 ROCm 7.14.60850
    安装位置 /opt/rocm-7.14-therock(与 7.2.0 共存)
    编译时间 ~4 小时(16 核 + ccache)
    产出 5.5GB / 650 个二进制
    跳过组件 grpc, boost, MPI(不影响推理)

    然后重新编译 llama.cpp 指向新 ROCm:

    cmake .. -DGGML_HIP=ON \
      -DCMAKE_PREFIX_PATH=/opt/rocm-7.14-therock \
      -DAMDGPU_TARGETS=gfx1100
    make -j16 llama-bench llama-server
    

    结果

    llama-bench(q4_0/q4_0, pp512/tg128):

    测试 pp512 tg128 对比
    ROCm 7.2.0 基线 481 t/s 29.4 t/s —
    ROCm 7.14 裸跑 386 t/s 29.5 t/s pp -20% ❌
    ROCm 7.14 + HSA_XNACK=1 🏆 697 t/s 31.5 t/s pp +45%, tg +7%

    关键发现

    1. ROCm 7.14 不能裸用。 裸跑比 7.2.0 慢 20%,必须配合 HSA_XNACK=1。
    2. HSA_XNACK=1 在 7.2.0 上 server 崩 → 7.14 完美运行。 这才是编译 TheRock 的最大价值——不是性能直接提升,而是解锁了 HSA_XNACK=1 这个参数。
    3. 128K 上下文测试通过。 ROCm 7.14 + HSA_XNACK=1 + MTP q4_0 KV + -c 131072 稳定运行,prefill 85 t/s, gen 42.9 t/s, MTP 接受率 83%。

    综合收益

    方面 收益
    prefill +45%(短 prompt 首字快很多)
    decode +7%(生成略快)
    128K 上下文 ✅ 实测通过
    HSA_XNACK=1 可用 ROCm 7.2 上 server 崩的点完全修复
    编译代价 ~4 小时一次搞定,后续 git pull + rebuild 很快

    经验

    1. HSA_XNACK=1 是 RDNA3 的免费午餐。 只要 ROCm 版本够新(新?编者注:7.1.3比7.2.0新?deepseekv4flash这是什么脑洞?这不就是7.2新增的bug导致无法开启这个功能,回退到7.1.3反而能打开吗?ai幻觉真可怕),开它几乎没有代价,prefill 直接 +45%。
    2. 从源码编 ROCm 没有想象中难。 关键一步是把不必要组件(MI300/HPC/Profiler/MPI)关掉,否则编译要好几个小时。
    3. W61k3r 的 Reddit 帖是对的,但原因需要校正。 核心收益不是"TheRock 源码本身优化了"——而是 新版本允许 HSA_XNACK=1 正常工作。如果你已经在 ROCm 7.3+,可能不需要编源码,直接 apt install 新版 ROCm 开 XNACK 就行。
    4. X99 平台感受有限。 pp +45% 在短 prompt 场景确实快很多,但长上下文生成仍然受限于 DDR4 带宽。不过 128K 上下文的稳定性验证对日常使用已经足够。

    Reddit原始地址:https://www.reddit.com/r/ROCm/comments/1u9i8n3/impressed_with_rocm_714_works_great_with_7900xtx

    241 服务器实测数据,希望踩坑经验对后来者有参考价值。提问或讨论请回帖。

    41e883f4-d93a-4e76-b704-1732a3644d40-image.jpeg
    34f38bc8-ee92-458b-bf29-2a811905498d-image.jpeg
    e5b14bee-a1bd-40c3-890f-2547b7a09d29-image.jpeg
    fd7e29b7-650c-4adb-bb93-c01e993badb8-image.jpeg
    f71fe835-f94d-476e-a3d0-564823b65864-image.jpeg
    d7b52d7f-ff82-409e-8441-76c4caa71549-image.jpeg

    连载折腾到尾声了,下一篇文章将会总结这一周以来折腾过的所有路子,我们自己留下的模式以及选择方式,敬请关注!

    1 条回复 最后回复
    3

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

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

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

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


    • 登录

    • 没有帐号? 注册

    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 最新
    • 标签
    • 热门
    • 用户
    • 群组