跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • 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. 随便聊聊
  4. 在 Proxmox VE 虚拟机 上,用AMD 官方 MXFP4 版与社区实测 INT4(AutoRound)版,vLLM 部署 Qwen3.8-27B 量化模型的选择。

在 Proxmox VE 虚拟机 上,用AMD 官方 MXFP4 版与社区实测 INT4(AutoRound)版,vLLM 部署 Qwen3.8-27B 量化模型的选择。

已定时 已固定 已锁定 已移动 随便聊聊
ai-pro-r9700vllmqwen-27b
1 帖子 1 发布者 156 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Magic629M
    Magic629M
    Magic629
    体面乡绅 硕果累累
    发表于 最后由 编辑
    #1

    AMD R9700 单卡部署 vLLM + Qwen3.8-27B 教程(一)


    场景:在 Proxmox VE 虚拟机 102(Ubuntu 24.04 + AMD Radeon AI PRO R9700 直通)上,用 vLLM 部署 Qwen3.8-27B 量化模型,提供 OpenAI 兼容的本地大模型 API 服务。


    1. 环境

    项目 值
    虚拟机 102(Ubuntu 24.04,kernel 7.0.0-31-generic)
    GPU AMD Radeon AI PRO R9700(gfx1201 / RDNA4,32GB)
    ROCm 10.0(宿主机已装)
    Docker 29.1.3
    vLLM 镜像 stilldeadcode/vllm-radiance:0.9.3(vLLM 0.27.1,ROCm 7.14)
    模型 devan-carlin/Qwen3.8-27B-int4-AutoRound(INT4 多模态)
    最终显存占用 17.65 GiB

    2. 方案与选型


    2.1 AMD 官方方案

    • AMD 官方为 R9700 主推 OpenClaw(本地 AI 智能体平台),官方 ROCm 文档推 vLLM 做推理服务。
    • Qwen3.8-27B 是原生视觉语言模型(image-text-to-text,支持图片和视频理解),AMD 提供 Day-0 支持。

    2.2 为什么不用 AMD 官方 MXFP4 版?

    AMD 官方发布了 amd/Qwen3.8-27B-Quark-AWQ-MXFP4 量化版,但社区实测发现:

    1. 其 MTP 头是 BF16 未量化,vLLM 加载时会报错(asserts on a half-width parameter),需要额外脚本预处理。
    2. 社区实测 INT4(AutoRound)版质量反而更好,且无需预处理。

    结论:单卡 32GB 场景,选用 INT4(AutoRound) 量化版更稳、质量更好。

    2.3 显存计算(27B 参数 vs 32GB)

    格式 权重体积 32GB 单卡
    FP16/BF16 ~54GB 装不下
    FP8 ~27GB+开销 极紧张
    INT4 / MXFP4 ~14GB+开销≈17.7GB 轻松

    3. 准备

    3.1 扩容磁盘(模型 + 镜像约需 30GB+)

    sudo lvextend -L +100G /dev/ubuntu-vg/ubuntu-lv
    sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
    df -h /    # 确认扩容
    

    3.2 安装 Docker

    sudo apt-get install -y docker.io
    docker --version
    

    3.3 安装 huggingface_hub(用于下载模型)

    sudo apt-get install -y python3-pip
    # 注意 --ignore-installed 解决 typing_extensions 冲突
    sudo pip3 install --break-system-packages --ignore-installed typing_extensions huggingface_hub
    hf --version   # 或 python3 -c "import huggingface_hub; print(huggingface_hub.__version__)"
    

    4. 拉取 vLLM 镜像

    先查最新标签:

    wget -qO- "https://hub.docker.com/v2/repositories/stilldeadcode/vllm-radiance/tags?page_size=10" \
      | python3 -c "import sys,json; [print(t['name']) for t in json.load(sys.stdin)['results']]"
    

    拉取(后台,约 13.7GB):

    nohup bash -c 'echo "密码" | sudo -S -p "" docker pull stilldeadcode/vllm-radiance:0.9.3' \
      > /tmp/docker-pull.log 2>&1 &
    

    说明:stilldeadcode/vllm-radiance 是社区维护、专为 R9700(gfx1201)打包的 vLLM 镜像,内置了 RDNA4 专属内核 + AITER + Triton。官方 rocm/vllm 对 Radeon gfx1201 支持不全。


    5. 下载模型

    mkdir -p ~/models
    # 国内可走 hf-mirror 加速
    export HF_ENDPOINT=https://hf-mirror.com
    nohup hf download devan-carlin/Qwen3.8-27B-int4-AutoRound \
      --local-dir ~/models/qwen3.8-27b-autoround > /tmp/model-download.log 2>&1 &
    

    下载完成后(约 18GB,8 个 safetensors 分片):

    ls ~/models/qwen3.8-27b-autoround/*.safetensors | wc -l   # 应为 8
    du -sh ~/models/qwen3.8-27b-autoround                      # 约 18G
    

    6. 模型 config.json 补丁(注意)

    不补丁会静默出错:原 checkpoint 的 quantization_config.quant_method 是 auto-round,vLLM 会忽略量化、以未量化方式加载(54GB → 32GB 卡直接 OOM),且不报错。

    cd ~/models/qwen3.8-27b-autoround
    cp -n config.json config.json.autoround-orig   # 备份原文件
    
    python3 -c "
    import json
    p = 'config.json'
    c = json.load(open(p))
    q = c['quantization_config']
    q['quant_method'] = 'auto_gptq'
    q.setdefault('desc_act', False)
    q.setdefault('lm_head', False)
    q.setdefault('modules_in_block_to_quantize', [
        'self_attn.q_proj', 'self_attn.k_proj', 'self_attn.v_proj', 'self_attn.o_proj',
        'mlp.gate_proj', 'mlp.up_proj', 'mlp.down_proj',
        'linear_attn.in_proj_qkv', 'linear_attn.in_proj_z', 'linear_attn.out_proj',
    ])
    json.dump(c, open(p, 'w'), indent=2)
    print('补丁已应用')
    "
    

    验证:

    python3 -c "import json; q=json.load(open('config.json'))['quantization_config']; print(q['quant_method'], len(q.get('modules_in_block_to_quantize',[])))"
    # 输出: auto_gptq 10
    

    7. 内核补丁准备

    必须挂载内核补丁:GPTQ 格式的 AutoRound checkpoint 有「对称零点」问题,官方内核会崩溃(assert zp.shape == ...)。

    克隆 launcher 仓库获取内核补丁文件:

    cd /tmp
    git clone --depth 1 https://github.com/zzpanic/qwen3.6-vllm-gfx1201-launchers.git launchers
    ls launchers/patches/rdna_hybrid_w4a16.py   # 确认文件存在
    

    8. 启动 vLLM 服务

    8.1 准备缓存目录

    mkdir -p ~/.cache/vllm
    

    8.2 完整启动命令(本机为例)

    cat > /tmp/run-vllm.sh << 'EOF'
    #!/bin/bash
    sudo docker run --rm --name vllm102 \
      --device /dev/kfd --device /dev/dri \
      --group-add 44 --group-add 992 \
      --shm-size 4g --cap-add SYS_PTRACE --security-opt seccomp=unconfined \
      -v /home/Magic629/models/qwen3.8-27b-autoround:/model:ro \
      -v /tmp/launchers/patches/rdna_hybrid_w4a16.py:/opt/vllm/lib/python3.12/site-packages/vllm/model_executor/kernels/linear/mixed_precision/rdna_hybrid_w4a16.py:ro \
      -v /home/Magic629/.cache/vllm:/cache \
      -p 8000:8000 \
      -e HIP_VISIBLE_DEVICES=0 \
      -e VLLM_ROCM_USE_AITER=1 -e VLLM_ROCM_USE_AITER_UNIFIED_ATTENTION=1 \
      -e VLLM_ROCM_USE_AITER_MHA=0 -e VLLM_ROCM_USE_AITER_MLA=0 -e VLLM_ROCM_USE_AITER_MOE=0 \
      -e VLLM_ROCM_USE_AITER_LINEAR=0 -e VLLM_ROCM_USE_AITER_FP8BMM=0 -e VLLM_ROCM_USE_AITER_FP4BMM=0 -e VLLM_ROCM_USE_AITER_RMSNORM=0 \
      -e RADIANCE_PRESHUFFLE=1 -e RADIANCE_ATTN_TUNE=1 -e RADIANCE_GDN_WMMA=1 \
      -e RADIANCE_VIT_FLASH=1 -e RADIANCE_FUSE_RMS_QUANT=1 -e RADIANCE_DYNAMIC_DRAFT=1 \
      -e RADIANCE_SKINNY_GEMM=all \
      -e VLLM_CACHE_ROOT=/cache/vllm -e TORCHINDUCTOR_CACHE_DIR=/cache/inductor \
      -e TRITON_CACHE_DIR=/cache/triton -e AITER_ROOT_DIR=/cache/aiter \
      -e TRITON_CACHE_AUTOTUNING=1 \
      stilldeadcode/vllm-radiance:0.9.3 \
      /model \
      --served-model-name qwen3.8-27b-int4 \
      --quantization auto_gptq \
      --kv-cache-dtype fp8 \
      --tensor-parallel-size 1 \
      --gpu-memory-utilization 0.97 \
      --max-model-len 204800 \
      --max-num-seqs 2 \
      --max-num-batched-tokens 4854 \
      --attention-backend R4D \
      --enable-prefix-caching --mamba-cache-mode align \
      --reasoning-parser qwen3 \
      --tool-call-parser qwen3_xml --enable-auto-tool-choice \
      --trust-remote-code \
      --host 0.0.0.0 --port 8000
    EOF
    chmod +x /tmp/run-vllm.sh
    

    8.3 后台启动

    nohup bash -c 'echo "密码" | sudo -S -p "" bash /tmp/run-vllm.sh' > /tmp/vllm-run.log 2>&1 &
    

    8.4 关键参数说明

    参数 含义
    --group-add 44 992 44=video 组、992=render 组(数字 GID,避免名称解析失败)
    --device /dev/kfd /dev/dri 显卡计算接口 + 渲染节点
    --quantization auto_gptq 必须与 config.json 补丁后一致
    --tensor-parallel-size 1 单卡
    --kv-cache-dtype fp8 KV 缓存用 FP8
    --max-model-len 204800 上下文长度 200K
    --attention-backend R4D RDNA4 专用注意力内核

    9. 验证推理

    9.1 确认启动成功(日志)

    tail -20 /tmp/vllm-run.log
    # 关键日志:
    #   "Model loading took 17.65 GiB memory"        ← INT4 正确加载
    #   "Application startup complete."              ← 服务就绪
    

    9.2 发送测试请求

    python3 - << 'PYEOF'
    import urllib.request, json, time
    data = {
        "model": "qwen3.8-27b-int4",
        "messages": [{"role": "user", "content": "用一句话介绍你自己"}],
        "max_tokens": 200,
        "temperature": 0.6
    }
    req = urllib.request.Request("http://127.0.0.1:8000/v1/chat/completions",
        data=json.dumps(data).encode(), headers={"Content-Type": "application/json"})
    t0 = time.time()
    r = json.loads(urllib.request.urlopen(req, timeout=180).read().decode())
    print(r["choices"][0]["message"]["content"])
    print("速度 %.1f tok/s" % (r["usage"]["completion_tokens"] / (time.time()-t0)))
    PYEOF
    

    9.3 实测结果

    • 显存占用:17.65 GiB
    • 推理速度:26.3 tok/s(基线,未开投机解码)
    • API:http://192.168.67.202:8000/v1(Ubuntu24.04推理机IP)

    10. 常见问题

    坑 现象 解决
    config.json 未补丁 静默以未量化加载 → OOM 改 quant_method=auto_gptq + 量化模块列表
    内核补丁未挂载 GPTQ 对称零点 assert 崩溃 挂载 rdna_hybrid_w4a16.py
    --group-add render 报错 "Unable to find group render" 用数字 GID:--group-add 44 --group-add 992
    huggingface_hub 装不上 typing_extensions RECORD 错误 pip install --ignore-installed
    首次启动 OOM torch.compile 冷启动 +2.28GiB 重跑一次即可(缓存已生成)
    huggingface.co 不通 国内网络 加 HF_ENDPOINT=https://hf-mirror.com
    
    **后续可选优化**:
    1. 开启投机解码(DFlash2 草稿模型),速度可再提升 1.5~2 倍
    2. 测试多模态(图片输入)
    3. 接入 OpenClaw / Ollama 作为后端
    1 条回复 最后回复
    1

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

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

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

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


    • 登录

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