小模型,大能量:QwQ-32B 以 1/20 参数硬刚满血 DeepSeek-R1

近期,AI 领域涌现出令人瞩目的进展,尤其是在大型语言模型 (LLM) 的推理能力提升方面。其中,强化学习 (Reinforcement Learning, RL) 正逐渐成为突破传统模型性能瓶颈的关键技术。不少研究已证实,RL 能够显著增强模型的推理能力。例如,DeepSeek R1 模型通过整合冷启动数据和多阶段训练,实现了深度思考和复杂推理,达到了当时的领先水平。

在这一背景下,阿里云推出了 QwQ-32B 模型,再次引发业界关注。这款拥有 320 亿参数的模型,在性能上媲美 DeepSeek-R1 模型,而后者参数量高达 6710 亿(激活参数量为 370 亿)。 QwQ-32B 的卓越表现,有力地证明了强化学习在提升基于海量世界知识预训练的强大基础模型智能水平方面的有效性。



更值得一提的是,阿里云还将 Agent (智能代理) 相关能力融入到 QwQ-32B 的推理模型中,使其不仅能够进行批判性思考,还能利用工具,并根据环境反馈调整推理过程。这些技术进步,充分展示了 RL 技术的变革潜力,也为通向通用人工智能 (AGI) 的道路, 铺平了道路。

目前,QwQ-32B 已在 Hugging Face 和 ModelScope 平台以 Apache 2.0 开源协议发布,用户可以通过 Qwen Chat 体验。

小模型,大能量:QwQ-32B 以 320 亿参数比肩 6710 亿参数 DeepSeek-R1-1

模型介绍 (Introduction)

QwQ 是 “千问” (Qwen) 系列模型的推理模型,与传统的指令微调模型相比,QwQ 模型具备更强的思考和推理能力,在下游任务中表现出显著的性能提升,尤其是在解决复杂难题时。QwQ-32B 作为中等规模的推理模型,其性能足以与 DeepSeek-R1、o1-mini 等先进的推理模型相媲美。

模型特点:

  • 类型: 自回归语言模型 (Causal Language Models)

  • 训练阶段: 预训练 (Pretraining) & 后训练 (Post-training,包括监督微调 Supervised Finetuning 和强化学习 Reinforcement Learning)

  • 架构: Transformers 结构,采用 RoPE 位置编码,SwiGLU 激活函数,RMSNorm 归一化,以及 Attention QKV bias 注意力机制偏置

  • 参数规模: 325 亿(32.5B)

  • 非嵌入层参数规模: 310 亿(31.0B)

  • 层数: 64

  • 注意力头数 (GQA): Query 端 40 个,Key/Value 端 8 个

  • 上下文长度: 完整 131,072 tokens

注意: 为了获得最佳使用体验,请务必参考 使用指南 后再部署 QwQ 模型。

用户可以通过 Demo 进行体验,或通过 QwenChat 访问 QwQ 模型,记得打开Thinking (QwQ)。

更多详细信息,请参考 GitHub 仓库 以及 官方文档

 

性能表现 (Performance)

QwQ-32B 模型在一系列基准测试中进行了评估,旨在全面考察其在数学推理、代码编写以及通用问题解决等方面的能力。下图展示了 QwQ-32B 与包括 DeepSeek-R1-Distilled-Qwen-32B、DeepSeek-R1-Distilled-Llama-70B、o1-mini 以及原始 DeepSeek-R1 在内的其他领先模型的性能对比。

小模型,大能量:QwQ-32B 以 320 亿参数比肩 6710 亿参数 DeepSeek-R1-1

从结果来看,QwQ-32B 在多个关键 benchmark 上都展现出了与顶级模型相近甚至更优的性能。尤其值得关注的是,在与参数量远超自身的 DeepSeek-R1 对比中,QwQ-32B 依然能够保持竞争力,这进一步印证了强化学习在提升模型效能方面的巨大潜力。

 

强化学习 (Reinforcement Learning)

QwQ-32B 的卓越性能,很大程度上归功于其背后采用的强化学习 (RL) 技术。 简单来说,强化学习是一种通过奖励或惩罚机制,引导模型学习在特定环境中做出最优决策的方法。 与传统的监督学习不同,强化学习不依赖于大量的标注数据,而是通过与环境的交互,不断试错和学习,最终掌握完成任务所需的策略。

在 QwQ-32B 的训练过程中,阿里云的研究团队从一个冷启动的 Checkpoint 开始,实施了基于结果奖励的强化学习扩展方法。在初始阶段,他们主要针对数学和代码任务进行 RL 扩展。与依赖传统奖励模型不同,研究团队采用了针对数学问题的准确性验证器 (Accuracy Verifier),以确保最终答案的正确性;并使用代码执行服务器 (Code Execution Server) 来评估生成的代码是否成功通过预定义的测试用例。

随着训练的深入,模型在数学和代码领域的性能都呈现出持续提升的趋势。在第一阶段之后,研究团队又增加了针对通用能力的 RL 训练阶段。 这一阶段的训练,采用了来自通用奖励模型和一些基于规则的验证器的奖励信号。实验结果表明,通过少量步骤的 RL 训练,即可有效提升模型在指令遵循、人类偏好对齐以及 Agent 性能等方面的通用能力,且不会对数学和代码能力造成明显的性能下降。

 

使用指南 (Usage Guidelines)

为了获得最佳性能,建议采用以下设置:

  1. 强制模型进行思考输出: 确保模型以 <think>\n 开头,以避免生成空的思考内容,这可能会降低输出质量。如果使用 apply_chat_template 并设置 add_generation_prompt=True,则此项已自动实现。但需要注意的是,这可能会导致响应在开头缺少 <think> 标签,属于正常现象。

  2. 采样参数:

    • 使用 Temperature=0.6 和 TopP=0.95 代替贪婪解码 (Greedy decoding),以避免无休止的重复。

    • 使用 TopK 在 20 到 40 之间,以过滤掉罕见的 Token 出现,同时保持生成输出的多样性。

  3. 标准化输出格式: 在进行基准测试时,建议使用 Prompt 提示来标准化模型输出。

    • 数学问题: 在 Prompt 中加入 “Please reason step by step, and put your final answer within \boxed{}. ” (请逐步推理,并将最终答案放在 \boxed{} 中)。

    • 多项选择题: 在 Prompt 中添加以下 JSON 结构,以标准化响应: “Please show your choice in the answer field with only the choice letter, e.g.,\"answer\": \"C\". ” (请在 answer 字段中显示您的选择,仅包含选择字母,例如,\"answer\": \"C\")。

  4. 处理长输入: 对于超过 32,768 个 Tokens 的输入,启用 YaRN 技术,以提高模型有效捕获长序列信息的能力。

对于支持的框架,可以将以下内容添加到 config.json 文件中以启用 YaRN:

复制复制复制复制

复制

{...,"rope_scaling": {"factor": 4.0,"original_max_position_embeddings": 32768,"type": "yarn"}}

在部署方面,建议使用 vLLM。如果不熟悉 vLLM,请参考 官方文档 以获取使用方法。目前,vLLM 仅支持静态 YARN,这意味着缩放因子在输入长度变化时保持恒定,这可能会影响模型在处理较短文本时的性能。因此,建议仅在需要处理长上下文时添加 rope_scaling 配置。

如何使用 QwQ-32B (Use QwQ-32B)

以下简要示例,展示了如何通过 Hugging Face Transformers 和阿里云 DashScope API 使用 QwQ-32B 模型。

通过 Hugging Face Transformers:

复制复制复制

复制

from transformers import AutoModelForCausalLM, AutoTokenizermodel_name = "Qwen/QwQ-32B"model = AutoModelForCausalLM.from_pretrained(model_name,torch_dtype="auto",device_map="auto")tokenizer = AutoTokenizer.from_pretrained(model_name)prompt = "How many r's are in the word \"strawberry\""messages = [{"role": "user", "content": prompt}]text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True)model_inputs = tokenizer([text], return_tensors="pt").to(model.device)generated_ids = model.generate(**model_inputs,max_new_tokens=32768)generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)]response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]print(response)

通过阿里云 DashScope API:

复制复制

复制

from openai import OpenAIimport os# Initialize OpenAI clientclient = OpenAI(# If the environment variable is not configured, replace with your API Key: api_key="sk-xxx"# How to get an API Key:https://help.aliyun.com/zh/model-studio/developer-reference/get-api-keyapi_key=os.getenv("DASHSCOPE_API_KEY"),base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")reasoning_content = ""content = ""is_answering = Falsecompletion = client.chat.completions.create(model="qwq-32b",messages=[{"role": "user", "content": "Which is larger, 9.9 or 9.11?"}],stream=True,# Uncomment the following line to return token usage in the last chunk# stream_options={#     "include_usage": True# })print("\n" + "=" * 20 + "reasoning content" + "=" * 20 + "\n")for chunk in completion:# If chunk.choices is empty, print usageif not chunk.choices:print("\nUsage:")print(chunk.usage)else:delta = chunk.choices[0].delta# Print reasoning contentif hasattr(delta, 'reasoning_content') and delta.reasoning_content is not None:print(delta.reasoning_content, end='', flush=True)reasoning_content += delta.reasoning_contentelse:if delta.content != "" and is_answering is False:print("\n" + "=" * 20 + "content" + "=" * 20 + "\n")is_answering = True# Print contentprint(delta.content, end='', flush=True)content += delta.content

 

未来展望 (Future Work)

QwQ-32B 的发布,标志着 “千问” (Qwen) 系列模型在扩展强化学习 (RL) 以增强推理能力方面迈出了初步但关键的一步。 通过这一探索,阿里云不仅见证了强化学习扩展应用的巨大潜力,也认识到预训练语言模型内部蕴藏着尚未被充分挖掘的巨大潜力。

展望 “千问” 下一代模型的研发,阿里云充满信心。他们相信,通过结合更强大的基础模型,以及由规模化计算资源驱动的强化学习技术,将有望加速实现通用人工智能 (AGI) 的最终目标。此外,阿里云还在积极探索将 Agent 与 RL 进行深度融合,以实现更长程的推理能力,并致力于在推理时通过规模化扩展来释放更大的智能。



标签: QwQ-32B, 阿里

添加新评论 »