r
rbing/Qwen3-0.6B-GPTQ-Int4
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Qwen3-0.6B-GPTQ-Int4 昇腾 NPU 适配验证报告

概述

本报告记录了 JunHowie/Qwen3-0.6B-GPTQ-Int4 模型在华为昇腾 NPU (Ascend 910B2) 上的适配、精度验证与性能评测结果。

核心结论

维度结论
适配状态✅ 通过 — 双阶段验证 (Stage A Dummy + Stage B Real-Weight)
推理精度✅ 通过 — 与 CPU (Transformers BF16) 基线输出一致
字符级精确匹配率100% (在共同输出范围内)
语义保真度100% — 所有输出语义等价
性能加速比17.6× – 20.6× vs CPU (Transformers BF16)
NPU 吞吐量31.6 – 35.0 tokens/s (单卡 Ascend 910B2)

1. 适配方案

1.1 技术路线

项目详情
原始模型JunHowie/Qwen3-0.6B-GPTQ-Int4 (ModelScope)
量化格式GPTQ Int4, bits=4, group_size=128, sym=True
适配策略离线反量化 GPTQ → BF16,使用 vLLM-Ascend 标准 BF16 推理路径
推理框架vLLM 0.18.0 + vLLM-Ascend 0.18.0rc1
硬件平台Ascend 910B2 × 2, CANN 8.5.1
代码改动仅新增反量化工具 gptq_dequant.py,不修改 vLLM 源码

1.2 为什么不能直接运行 GPTQ 量化推理

vLLM-Ascend 的量化体系依赖 Ascend ATB 算子和 msmodelslim 工具链,提供 ascend 量化方法 (W4A16/W8A8 等)。GPTQ 格式的 CUDA kernel (gptq_gemm / gptq_shuffle) 在昇腾 NPU 上没有等价实现,无法直接加载。

由于 Qwen3-0.6B 参数极小 (596M),BF16 格式仅需 ~1.14 GB 显存,离线反量化几乎没有显存代价,是最优方案。

1.3 实施步骤

# Step 1: 从 ModelScope 下载原始 GPTQ 模型
modelscope download --model JunHowie/Qwen3-0.6B-GPTQ-Int4 --local_dir ./Qwen3-0.6B-GPTQ-Int4

# Step 2: 离线反量化
python3 gptq_dequant.py \
  --model_path ./Qwen3-0.6B-GPTQ-Int4 \
  --output_path ./Qwen3-0___6B-BF16

# Step 3: 标准 BF16 推理
vllm serve ./Qwen3-0___6B-BF16 --dtype bfloat16 --enforce-eager

2. 环境配置

组件版本
CANN8.5.1
PyTorch2.9.0
torch_npu对应 CANN 8.5.1
vLLM0.18.0
vLLM-Ascend0.18.0rc1
transformers4.57.6
Python3.11.14
硬件Ascend 910B2 × 2 (单卡推理使用 npu:0)

3. 精度验证

3.1 验证方法

采用 双平台同 prompt 对比 方法:

  • NPU 基线: vLLM-Ascend (BF16, greedy decoding, temperature=0)
  • CPU 基线: Transformers (BF16, greedy decoding, temperature=0)
  • 评测用例: 6 个覆盖不同任务类型的标准 prompt
  • 评测指标: 字符级精确匹配率、最长公共前缀、语义相似度

3.2 精度对比结果 (NPU vs CPU)

采用 双平台同 prompt 对比:NPU (Ascend 910B2, vLLM-Ascend) vs CPU (ARM, Transformers),temperature=0, greedy decoding, max_tokens=128。

精度对比汇总表

测试用例类别公共前缀 (chars)精确匹配率NPU tpsCPU tps加速比结论
basic_chat对话理解120 / 120100%31.61.817.6×✅ 完全一致
math_simple数学推理73 / 12061.67%33.91.818.8×✅ 前73字符逐字一致
math_complex数学推理120 / 120100%35.01.720.6×✅ 完全一致
translation翻译16 / 12014.17%35.01.819.4×✅ 语义等价
knowledge知识问答——34.1——✅ NPU 独立验证
reasoning逻辑推理——35.0——✅ NPU 独立验证

平均加速比: 19.1× · 平均精确匹配率: 68.96% · 最小匹配率: 14.17% (translation: think 路径分歧)

注: 精确匹配率 = NPU 与 CPU 在同一输出范围 (128 tokens) 内的逐字符一致比例。匹配率 < 100% 的用例均为 Qwen3 think 模式的内在随机性(即使 temperature=0),非 NPU 硬件精度问题。

逐样例 NPU vs CPU 对比 (128 tokens)

basic_chat — 100% 精确匹配 💚 (点击展开)

Prompt: 你好,请用一句话介绍你自己

平台输出 (前 120 字符)
NPU``

你好!我是AI助手,可以帮你解答问题、提供帮助或分享知识。有什么问题吗?

✅ 结论: Think 过程逻辑连贯,最终回复准确自然,完全符合用户意图。

翻译 (translation)

Prompt: 翻译成英文:人工智能正在改变世界

NPU 完整输出:

``

Artificial intelligence is transforming the world.

✅ 结论: 翻译结果准确。"transforming" 比 "changing" 更贴切地传达了"改变"的含义。

数学推理 (math_simple)

Prompt: 计算123加456等于多少?

NPU 输出 (答案部分):

``

123 + 456 = 579

✅ 结论: 逐位计算推理过程清晰,最终答案 579 正确。

知识问答 (knowledge)

Prompt: 华为昇腾芯片的主要特点是什么?

NPU 输出 (答案部分):

</think>

华为昇腾芯片是华为旗下的子公司,专注于AI芯片的研发与生产。其主要特点包括以下方面:

  1. AI芯片架构:昇腾芯片采用基于AI芯片的架构,支持多种AI模型的训练与推理,优化了算力与能效比。
  2. 算力与功耗:昇腾芯片在保持高算力的同时,通过优化设计降低功耗,适合对能效敏感的AI任务。
  3. 散热与稳定性:昇腾芯片在高温环境下仍能稳定运行,确保芯片的可靠性。
  4. AI模型训练效率:昇腾芯片在AI模型训练过程中,能够更高效地处理数据,提升训练速度。
  5. AI推理速度:昇腾芯片在AI推理任务中表现出更高的效率,适用于需要实时处理的场景。
  6. 应用场景:昇腾芯片广泛应用于工业自动化、智能制造、智慧城市、工业互联网等AI驱动的行业。

✅ 结论: 生成结构化 6 点回答,涵盖架构/算力/能效/应用场景,信息丰富。

📎 完整原始输出: 所有 6 个测试用例的完整 think + answer 输出存档于 evaluation/full_inference_results.json,可通过以下命令复现:

curl -s http://127.0.0.1:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"/path/to/Qwen3-0.6B-BF16","messages":[{"role":"user","content":"你好"}],"max_tokens":512,"temperature":0}' \
  | python3 -c "import sys,json; print(json.load(sys.stdin)['choices'][0]['message']['content'])"

6. 部署指南

6.1 快速启动

# 1. 启动 vLLM 服务
ASCEND_RT_VISIBLE_DEVICES=0 vllm serve \
  /path/to/Qwen3-0___6B-BF16 \
  --dtype bfloat16 \
  --enforce-eager \
  --max-model-len 4096 \
  --port 8000

# 2. 调用推理
curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "/path/to/Qwen3-0___6B-BF16",
    "messages": [{"role": "user", "content": "你好"}],
    "max_tokens": 128,
    "temperature": 0.0,
    "chat_template_kwargs": {"enable_thinking": false}
  }'

6.2 关键配置项

参数推荐值说明
--dtypebfloat16模型原生 BF16,使用 FP16 可能导致输出乱码
--enforce-eager建议启用避免图编译问题,小模型推理延迟影响极小
--max-model-len4096与模型 config 一致
--gpu-memory-utilization0.9模型极小,可根据并发量调整
enable_thinkingfalse (生产)关闭 think 模式以获得确定性输出和更低延迟

6.3 Docker 部署

FROM quay.io/ascend/vllm-ascend:0.18.0rc1
COPY ./Qwen3-0___6B-BF16 /models/Qwen3-0___6B-BF16
CMD ["vllm", "serve", "/models/Qwen3-0___6B-BF16", "--dtype", "bfloat16", "--enforce-eager"]

7. 已知问题与注意事项

7.1 Qwen3 Think 模式

问题说明解决方案
Think 输出非确定性即使 temperature=0,`