跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • 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
  1. 主页
  2. 版块
  3. LLM讨论区
  4. 自制给R9700用的paiton/vLLM专用去审查的极速27B-W3A4权重,MMLU-Pro从 56.7 拉到 57.86

自制给R9700用的paiton/vLLM专用去审查的极速27B-W3A4权重,MMLU-Pro从 56.7 拉到 57.86

已定时 已固定 已锁定 已移动 LLM讨论区
r9700vllm量化
2 帖子 1 发布者 240 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • fcmeF
    fcmeF
    fcme
    王侯将相
    编写于 最后由 fcme 编辑
    #1

    把去审查的 27B 塞进官方 3-bit 栈:MMLU-Pro 从 56.7 拉到 57.86,同题追平官方权重

    质量对比

    一、背景与结论

    经过最近的高强度折腾,手上这台R9700跑的Paiton 的 官方27B(W3A4)速度飞起也很稳,还能八路并发,但它有个毛病:你不让它说的它不说。但是这个框架又只认官方特殊的定制3-bit——想两条都要,只能自己做一套 3-bit的权重了,在这里分享给卡友,可以直接拿去用。

    结论先放这:

    • 格式逆向成功,打包器做到字节级往返(解包→重量化→重打包,6/6 张量完全一致);
    • 先做 abliteration 再量化,顺序反了会白干(下面解释);
    • 同样的 2,800 道 MMLU-Pro 随机题:官方 57.82%,自建 RTN 56.68%,自建 GPTQ 57.86%;
    • BetterBench 单流加权 155.0 vs 官方 174.3(89%),8 并发 436.8 vs 458.9(95%)——差的不是权重,是我这台虚拟机。

    二、为什么不能直接改 3-bit 权重

    abliteration 是 rank-1 编辑:从 o_proj/down_proj 里把拒绝方向减掉。听着很简单,但 3-bit 是分组量化,步长 0.0067,权重 σ 只有 0.0106——一个步长就是 0.62 个 σ。

    实测 λ=1 的编辑,每个元素只挪 0.03–0.05 个步长,重新四舍五入之后一个码都不变。也就是说:量化后的模型和原模型是同一个模型,你改了个寂寞。

    所以顺序只能是:bf16 阶段去审查 → 再量化。这也是为什么社区的去审查模型都发 Q4/Q5,没人发 Q3。

    三、格式:paiton-w3rot-v1

    官方没文档,从分片头反推:

    • 旋转站点右乘 block-diagonal Hadamard-128(W·H128),激活侧要同步旋转,不然 Hessian 算错;
    • 3-bit 对称、group=128、q∈[-4,3] 存成 u=q+4,scale 是有符号 bf16(一半是负数);
    • dense LSB-first 位流打进 int32;
    • in_proj_a/b 是 bf16 的 weight_rot_h128;manifest 里 side.source_sha256_by_layer 校验的是源 bf16 的字节,不是分片哈希——这个坑我踩过一次,加载器直接拒载。

    四、32G 显存下的 GPTQ

    27B bf16 是 54 GB,一张 32G 卡装不下,更别说还要留显存给 Hessian。做法:

    • 用 bitsandbytes NF4 4-bit 加载 abliterated 权重跑校准(4-bit 的激活误差对 Hessian 估计可以忽略);
    • attention 必须用 eager:这套 ROCm 上 sdpa 跑 16×2048 会直接 invalid argument,不是 OOM,报错很误导;
    • 8×2048 × 4 批 = 65,536 token(WikiText-103 + 中文维基);
    • Hessian 按 128 列分组存块对角(136 个 128×128),量化时组内做 GPTQ 列级误差补偿,组 scale 还是原来的 14 候选搜索。

    五、折腾经过

    • 第一版想用全 Hessian,8 个 down_proj 的 H 就要 10 GB,加上模型直接 OOM;
    • 16 序列一批也 OOM(30.5 GB 已分配),降到 8 序列才稳;
    • 把 Hessian 放 CPU 上算——device 不匹配,白跑一次 3 分钟加载;
    • sdpa 的 invalid argument 查了半天,最后发现换 eager 就好;
    • 块对角 H 是妥协:全 H 能再抠一点,但显存不够,先这样。

    六、结果

    同题同口径(2,800 题,14 类 × 200,seed 42,0-shot,温度 0):

    权重 MMLU-Pro
    官方 W3A4 57.82%
    自建 RTN 56.68%
    自建 GPTQ 57.86%

    其余:GSM8K 93.10%(1,319 题)、HumanEval 90.24%(164 题)、Needle@61,440 160/160。

    速度(BetterBench 20 passes,单流中位数):

    速度对比

    单流加权 155.0 vs 174.3,8 并发 436.8 vs 458.9。差距是宿主:这台是 KVM 虚拟机 + 2019 年的 Xeon Gold 6252,每步 host 侧的调度/采样开销比裸金属高;同机换官方权重测出来速度一模一样,所以不是权重或格式的问题。

    七、一个被证伪的结论

    官方 README 写 MMLU-Pro 59.71,我第一版 RTN 只有 54.6,看着差了 5 分,一度以为是自己量化太糙。后来把官方权重复现到同一套题干上——官方自己也只有 57.82。

    那 5 分里,真正属于量化的只有 1.18 分,剩下全是口径(BetterBench full vs 0-shot 同题)。教训:跨口径比分数,比不出东西。

    八、复现

    python3 scripts/build_gptq2.py --src /path/to/abliterated-bf16 --out ./out \
            --calib calib.txt --batches 4 --nseq 8
    python3 scripts/gen_manifest.py ./out /path/to/official/w3rot-manifest.json /path/to/abliterated-bf16
    

    模型在盘上的话,构建大约 10 分钟。

    • Fork 仓库(脚本 + 结果):https://github.com/halonc/paiton-vllm-plugin-27b-w3a4-abliterated
    • 权重:https://huggingface.co/halonc/Qwen3.8-27B-W3Rot-INT3-Paiton-RDNA4-abliterated
    • 图文版:https://blog-eudc.infocused.cc/qwen38-27b-w3a4-abliterated/

    说明

    块对角 Hessian 不是全 Hessian;没做 scale 蒸馏;abliteration 拆的是拒绝回路,不是政治立场;只在一张卡上验证过。权重 Apache-2.0,派生自 huihui 的 abliterated 检查和 unsloth 的 NVFP4 基座,仅供研究与自用。

    个人的 repo,欢迎指教。

    个人的repo,欢迎指教
    https://github.com/halonc/R9700-Strata-Qwen3.8-Flash-Next-Tuning
    https://github.com/halonc/AMD-R9700-rdna4-SGlang-Maxx

    1 条回复 最后回复
    3
    • fcmeF
      fcmeF
      fcme
      王侯将相
      编写于 最后由 编辑
      #2

      发个帖子mark一下,做笔记了

      个人的repo,欢迎指教
      https://github.com/halonc/R9700-Strata-Qwen3.8-Flash-Next-Tuning
      https://github.com/halonc/AMD-R9700-rdna4-SGlang-Maxx

      1 条回复 最后回复
      1

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

      厌倦了每次访问都刷到同样的帖子?您注册账号后,您下次访问时都将自动回到上次浏览的位置,并可选择接收新回复的通知(通过电子邮件或推送通知)。您还可以收藏帖子、为帖子点赞,以此向其他社区成员表达您的感谢。

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

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


      • 登录

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