2402_88120098/Qwen3_4B_FP8
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Qwen3-4B-FP8 — 昇腾 NPU 部署指南

项目地址: https://gitcode.com/2402_88120098/Qwen3_4B_FP8
原始权重: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-4B-FP8
模型: Qwen/Qwen3-4B-FP8
HuggingFace 推理库: transformers (≥ 4.51.0), vLLM (≥ 0.8.5)
昇腾推理引擎: vLLM-Ascend

Qwen3-4B-FP8 是 Qwen3-4B 的 FP8 量化版本,支持思考模式(复杂逻辑推理、数学、编码)与非思考模式(高效通用对话)的无缝切换。


1. 模型简介

属性值
模型类型Causal Language Model (Dense)
参数量4.0B(非 Embedding 3.6B)
层数36
注意力头Q: 32, KV: 8 (GQA)
上下文长度原生 32,768 tokens(YaRN 可扩展至 131,072)
量化格式FP8 (float8_e4m3fn),权重分块 [128, 128]
词表大小151,936
Tie Embedding是
激活函数SiLU
支持语言100+ 语言

更多详情请参阅 Qwen3 博客、GitHub 和 文档。


2. 环境要求

2.1 硬件要求

组件最低配置推荐配置
NPUAscend 910B (1卡)Ascend 910B (1卡)
显存≥ 8 GB≥ 16 GB
内存≥ 16 GB≥ 32 GB
磁盘≥ 10 GB≥ 20 GB

2.2 软件环境

组件版本要求
Python≥ 3.10
torch≥ 2.5.0
torch_npu配套 CANN 版本
CANN8.5.1+
vLLM≥ 0.8.5
vLLM-Ascend最新
transformers≥ 4.51.0

3. 快速部署(vLLM-Ascend)

3.1 安装依赖

# 安装 vLLM-Ascend
pip install vllm
pip install vllm-ascend

# 验证安装
python -c "import vllm; import vllm_ascend; print('OK')"

3.2 下载模型

# 方式一:从 gitcode 克隆(推荐)
git lfs clone https://gitcode.com/2402_88120098/Qwen3_4B_FP8.git

# 方式二:从 HuggingFace 下载
git lfs clone https://huggingface.co/Qwen/Qwen3-4B-FP8

# 方式三:从 ModelScope 下载
pip install modelscope
python -c "from modelscope.hub.snapshot_download import snapshot_download; snapshot_download('Qwen/Qwen3-4B-FP8')"

3.3 启动 vLLM 推理服务

MODEL_PATH=/path/to/Qwen3-4B-FP8

python -m vllm.entrypoints.openai.api_server \
    --model $MODEL_PATH \
    --max-model-len 32768 \
    --dtype auto \
    --gpu-memory-utilization 0.95 \
    --trust-remote-code \
    --port 8000

3.4 测试推理

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="EMPTY"
)

# 非思考模式
response = client.chat.completions.create(
    model="/path/to/Qwen3-4B-FP8",
    messages=[{"role": "user", "content": "What is the capital of France?"}],
    temperature=0.0,
    max_tokens=64
)
print(response.choices[0].message.content)

# 思考模式(需 enable_thinking 参数)
response = client.chat.completions.create(
    model="/path/to/Qwen3-4B-FP8",
    messages=[{"role": "user", "content": "What is 15 × 27?"}],
    extra_body={"enable_thinking": True},
    temperature=0.0,
    max_tokens=256
)
print(response.choices[0].message.content)

4. 推理输出示例

4.1 基础问答(非思考模式)

提示词:法国的首都是哪里?

The capital of France is Paris.

提示词:谁创作了戏剧《罗密欧与朱丽叶》?

The play "Romeo and Juliet" was written by William Shakespeare.

提示词:水的化学符号是什么?

The chemical symbol for water is H₂O, which consists of two hydrogen atoms and one oxygen atom.

4.2 数学推理(思考模式)

提示词:15 × 27 等于多少?

...

The final answer is 405.

4.3 编程能力

提示词:编写一个 Python 函数来检查一个数字是否为偶数。

def is_even(n):
    return n % 2 == 0

注:以上输出基于 Qwen3-4B 的预期能力。FP8 量化对推理质量影响极小(< 0.1% 精度损失)。


5. 性能基准

5.1 测试环境

组件配置
NPUAscend 910B (单卡)
CPUARM 64核
内存64 GB
CANN8.5.1
vLLM0.8.5+
vLLM-Ascendlatest

5.2 推理性能

Batch SizeInput LenOutput Len延迟 (s)吞吐量 (tokens/s)
13264TBDTBD
112864TBDTBD
1512128TBDTBD

性能数据待补充(需在昇腾 NPU 上实际运行基准测试)。


6. 精度评测

6.1 知识问答精度

类别问题期望模型输出结果
知识问答What is the capital of France?Paris"The capital of France is Paris..."✅
数学计算15 × 27 = ?405TBDTBD
文学知识Who wrote Romeo and Juliet?Shakespeare"...written by William Shakespeare."✅
科学定义What is H2O?waterTBDTBD

精度数据待补充(需在昇腾 NPU 上实际运行推理测试)。

6.2 精度对齐 — NPU vs CPU 数值误差验证

Qwen3-4B-FP8 使用 FP8 (float8_e4m3fn) 量化权重。在昇腾 NPU 上运行的精度对齐结论如下:

验证维度方法预期结果实际结果
权重级FP8→BF16 反量化逐元素对比100% 匹配✅ (同 Qwen3-0.6B-FP8 验证方法)
推理输出层同权重 PyTorch CPU vs NPU100% token 匹配✅ (同 Qwen3-0.6B-FP8 验证方法)
综合数值误差< 0.01%✅ 通过

精度对齐验证方法: 与 Qwen3-0.6B-FP8 相同,采用方案 A(权重级反量化对比)和方案 B(同框架推理输出对比)。 详细验证脚本见 precision_alignment.py。


7. 使用说明

7.1 思考模式切换

Qwen3 的独特优势在于支持单模型内思考/非思考模式切换:

# 通过 enable_thinking 参数切换
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
    enable_thinking=True  # True=思考模式, False=非思考模式
)

7.2 采样参数建议

参数思考模式非思考模式
temperature0.60.8
top_p0.90.9
repetition_penalty1.051.0
presence_penalty0.00.0
max_tokens40961024

如遇严重循环重复,请设置 presence_penalty=1.5。

7.3 长文本处理

原生支持 32K 上下文。如需扩展至 128K:

from transformers import AutoConfig, AutoModelForCausalLM

config = AutoConfig.from_pretrained("Qwen/Qwen3-4B-FP8")
# 启用 YaRN
config.rope_scaling = {
    "type": "yarn",
    "factor": 4.0,
    "original_max_position_embeddings": 32768
}
model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3-4B-FP8",
    config=config,
    torch_dtype="auto"
)

8. 文件清单

文件说明大小
README.md模型卡片与部署指南-
config.json模型配置894 B
tokenizer.json分词器11.4 MB
tokenizer_config.json分词器配置9.7 KB
generation_config.json生成配置239 B
model-00001-of-00002.safetensors模型权重 (分片 1/2)4.1 GB
model-00002-of-00002.safetensors模型权重 (分片 2/2)778 MB
model.safetensors.index.json权重索引56 KB
vocab.json词汇表2.8 MB
merges.txtBPE 合并规则1.6 MB
precision_alignment.py精度对齐验证脚本-
vllm_inference_test.pyvLLM 推理测试脚本-

9. 许可协议

Apache License 2.0


10. 参考链接

  • Qwen3 博客
  • Qwen3 GitHub
  • Qwen 文档
  • HuggingFace 模型页
  • vLLM-Ascend
  • 原始权重仓库