license: mit
tags:
- 千问
- QwQ
- FP8
- vLLM
base_model: Qwen/QwQ-32B
library_name: transformers
QwQ-32B-FP8动态量化版
模型概述
- 模型架构: Qwen2ForCausalLM
- 模型优化:
- 发布日期: 2025年3月6日
- 版本: 1.0
- 开发团队: Neural Magic
本模型是Qwen/QwQ-32B的量化版本。
量化优化
通过对Qwen/QwQ-32B模型的权重和激活值进行FP8量化获得本模型。该优化将每个参数从16位降至8位,使磁盘存储和GPU内存需求减少约50%。
仅对transformer模块中的线性算子进行量化。权重采用逐通道对称量化方案,激活值采用逐token对称量化方案。量化过程使用LLM压缩器实现。
通过vLLM部署
如下示例所示,可使用vLLM后端高效部署本模型:
from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
gpu数量 = 1
模型名称 = "neuralmagic/QwQ-32B-FP8-dynamic"
tokenizer = AutoTokenizer.from_pretrained(模型名称)
采样参数 = SamplingParams(temperature=0.6, max_tokens=256, stop_token_ids=[tokenizer.eos_token_id])
llm = LLM(model=模型名称, tensor_parallel_size=gpu数量, trust_remote_code=True)
对话列表 = [
[{"role": "user", "content": "你是谁?请用海盗口吻回答!"}],
]
提示词ID = [tokenizer.apply_chat_template(对话, add_generation_prompt=True) for 对话 in 对话列表]
输出结果 = llm.generate(prompt_token_ids=提示词ID, sampling_params=采样参数)
生成文本 = [输出.outputs[0].text for 输出 in 输出结果]
print(生成文本)
vLLM还支持OpenAI兼容的服务部署,详见官方文档。
创建过程
通过运行以下代码片段,使用llm-compressor创建本模型:
from transformers import AutoModelForCausalLM, AutoTokenizer
from llmcompressor.modifiers.quantization import QuantizationModifier
from llmcompressor.transformers import oneshot
import os
模型路径 = "Qwen/QwQ-32B"
模型名称 = 模型路径.split("/")[-1]
模型 = AutoModelForCausalLM.from_pretrained(
模型路径,
torch_dtype="auto",
)
tokenizer = AutoTokenizer.from_pretrained(模型路径)
量化方案 = QuantizationModifier(
targets="Linear",
scheme="FP8_DYNAMIC",
ignore=["lm_head"],
)
oneshot(
model=模型,
recipe=量化方案,
)
保存路径 = 模型名称 + "-FP8-dynamic"
模型.save_pretrained(保存路径)
tokenizer.save_pretrained(保存路径)
print(f"模型与分词器已保存至: {保存路径}")
精度表现
类别 |
指标 |
Qwen/QwQ-32B |
neuralmagic/QwQ-32B-FP8-dynamic |
精度保持率 |
推理能力 |
AIME 2024 (pass@1) |
78.66 |
79.40 |
100.94% |
MATH-500 (pass@1) |
97.39 |
97.44 |
100.05% |
GPQA钻石级 (pass@1) |
64.72 |
63.21 |
97.66% |
平均得分 |
80.25 |
80.05 |
99.75% |