阿里推出全新推理模型(因果语言模型),仅1/20参数媲美DeepSeek R1

阿里Qwen 团队正式发布了他们最新的研究成果——QwQ-32B大语言模型!这款模型不仅名字萌萌哒(QwQ),实力更是不容小觑!😎
QwQ-32B 已在 Hugging Face 和 ModelScope 开源,采用了 Apache 2.0 开源协议。大家可通过 Qwen Chat 直接进行体验!在这里插入图片描述

Qwen 团队却用320亿参数的 QwQ-32B,硬刚拥有6710亿参数的 DeepSeek-R1,并且在多项评测中取得了媲美甚至超越后者的惊人成绩!背后究竟是什么黑科技?答案就是——强化学习(Reinforcement Learning,RL)!

划重点:强化学习,大模型的新引擎!💪

Qwen 团队在博文中提到,他们深入探索了强化学习(RL)在提升大语言模型智能方面的巨大潜力。QwQ-32B 的成功发布,有力地证明了RL 是提升模型性能的强大引擎!

多项基准评测硬刚 DeepSeek-R1
官方给出基准评测结果,涵盖了数学推理、代码能力和通用问题解决等多个方面:
在这里插入图片描述
从数据中我们可以清晰地看到,在AIME24和IFEval等关键基准测试中,QwQ-32B 的表现甚至略微超过了参数量巨大的 DeepSeek-R1!而在其他基准测试中,也基本与 DeepSeek-R1 持平,远超其他对比模型。

这意味着 QwQ-32B 在仅有 DeepSeek-R1 约 1/20 参数量的情况下,用强化学习,实现了性能上的惊人跨越!

实例对比:我身高1.73米,拿着一根5.5米长的竹竿,能否通过高4米、宽3米的门?

这个问题目前只有腾讯元宝/问小白里的deepseek回答可以通过
在这里插入图片描述
在这里插入图片描述

技术揭秘:

冷启动+结果导向的强化学习策略

Qwen 团队在博文中也简单介绍了 QwQ-32B 背后的强化学习方法。他们采用了冷启动(cold-start checkpoint)的方式,并实施了结果导向(outcome-based rewards)的强化学习策略。

• 冷启动:从一个预训练模型的检查点开始训练。

• 结果导向:在初始阶段,主要针对数学和代码任务进行 RL 训练。

• 数学问题:使用准确率验证器(accuracy verifier)来确保答案的正确性。

• 代码生成:使用代码执行服务器(code execution server)来评估生成的代码是否能够成功运行。

• 通用奖励模型和规则验证器:后续阶段,会逐步引入更通用的奖励模型和规则验证器,提升模型在其他通用能力方面的表现。

这种策略的核心在于不依赖传统的奖励模型,而是直接根据任务结果(答案是否正确,代码是否运行成功)来指导模型的学习,更加高效和直接。

冷启动的基础上开展了大规模强化学习。在初始阶段,特别针对数学和编程任务进行了 RL 训练。与依赖传统的奖励模型(rewardmodel)不同,通过校验生成答案的正确性来为数学问题提供反馈,并通过代码执行服务器评估生成的代码是否成功通过测试用例来提供代码的反馈。随着训练轮次的推进,这两个领域中的性能均表现出持续的提升。在第一阶段的RL 过后,增加了另一个针对通用能力的 RL。此阶段使用通用奖励模型和一些基于规则的验证器进行训练。发现,通过少量步骤的通用RL,可以提升其他通用能力,同时在数学和编程任务上的性能没有显著下降。

特点:

类型:因果语言模型

训练阶段:预训练与后训练(监督微调和强化学习)

架构:带 RoPE、SwiGLU、RMSNorm 和注意力 QKV 偏置的 Transformer

参数数量:325 亿

非嵌入参数数量:310 亿

层数:64

注意力头数量(GQA):Q 为 40,KV 为 8

上下文长度:完整支持 131,072 个标记

环境要求

Qwen2.5 的代码已集成到最新版的 Hugging Facetransformers中,建议使用最新版本的transformers

如果你使用的是transformers<4.37.0,可能会遇到以下错误:

KeyError: 'qwen2'

快速入门

API调用

from openai import OpenAI
import os

# Initialize OpenAI client
client = 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-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)

reasoning_content = ""
content = ""

is_answering = False

completion = 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 usage
    if not chunk.choices:
        print("\nUsage:")
        print(chunk.usage)
    else:
        delta = chunk.choices[0].delta
        # Print reasoning content
        if hasattr(delta, 'reasoning_content') and delta.reasoning_content is not None:
            print(delta.reasoning_content, end='', flush=True)
            reasoning_content += delta.reasoning_content
        else:
            if delta.content != "" and is_answering is False:
                print("\n" + "=" * 20 + "content" + "=" * 20 + "\n")
                is_answering = True
            # Print content
            print(delta.content, end='', flush=True)
            content += delta.content

transformers 本地加载

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "Qwen/QwQ-32B"

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

prompt = "单词 'strawberry' 中有几个字母 'r'?"
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)

使用指南

为了达到最佳性能,建议以下设置:

• 确保深思熟虑的输出:确保模型以"<think>"开头,以避免生成空洞的思考内容,这可能会降低输出质量。如果你使用apply_chat_template并设置add_generation_prompt=True,这已经自动实现,但可能会导致响应缺少开头的<think>标签。这是正常现象。

采样参数

• 使用温度参数 Temperature=0.6TopP=0.95,而不是贪婪解码,以避免无尽重复并增强多样性。

• 对于复杂的推理任务(如数学或编程),设置 TopK=40

对于其他类型的问题,使用 TopK=20。

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

数学问题:在提示词中加入"请逐步推理,并将最终答案放在\boxed{}中。"

选择题:在提示词中加入以下 JSON 结构以标准化回答:“请在answer字段中显示你的选择,仅使用选项字母,例如,\"answer\": \"C\"。”

处理长输入:对于超过 32,768 个标记的输入,启用YaRN以提升模型对长序列信息的捕捉能力。

如果你需要支持的框架,可以在config.json中添加以下内容以启用 YaRN

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

目前,vLLM 仅支持静态 YaRN,这意味着缩放因子无论输入长度如何都保持不变,可能会对较短文本的性能产生影响。建议仅在需要处理长上下文时添加rope_scaling配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/983049.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电脑总显示串口正在被占用处理方法

1.现象 在嵌入式开发过程中&#xff0c;有很多情况下要使用串口调试&#xff0c;其中485/422/232转usb串口是非常常见的做法。 根据协议&#xff0c;接口芯片不同&#xff0c;需要安装对应的驱动程序&#xff0c;比如ch340&#xff0c;cp2102&#xff0c;CDM212364等驱动。可…

记录片《遇见大连》

目录标题 遇见大连1、项目基本信息2、内容特色与创作理念 一、蓝色的浪漫星空摄影师“修船诗人”荧光海爱情 | “有一座城叫大连”风光摄影师银沙滩 | 潜水 | 赵大千&#xff1a;海洋生物科普乌蟒岛 | 海鸟野外攀岩 | 积极乐观赶海萨克斯熊洞街风电场 遇见大连 1、项目基本信息…

双足机器狗开发:Rider - Pi

双足机器狗开发:Rider - Pi https://github.com/YahboomTechnology/Rider-Pi-Robot 项目介绍 Rider - Pi是一款为开发者、教育工作者和机器人爱好者设计的桌面双轮腿式机器人,它基于树莓派CM4核心模块构建,具备多种先进功能和特点: 硬件特性 核心模块:采用树莓派CM4核…

BUUCTF——[GYCTF2020]FlaskApp1 SSTI模板注入/PIN学习

目录 一、网页功能探索 二、SSTI注入 三、方法一 四、方法二 使用PIN码 &#xff08;1&#xff09;服务器运行flask登录所需的用户名 &#xff08;2&#xff09;modename &#xff08;3&#xff09;flask库下app.py的绝对路径 &#xff08;4&#xff09;当前网络的mac地…

ESP32S3N16R8驱动ST7701S屏幕(vscode+PlatfoemIO)

1.开发板配置 本人开发板使用ESP32S3-wroom1-n16r8最小系统板 由于基于vscode与PlatformIO框架开发&#xff0c;无espidf框架&#xff0c;因此无法直接烧录程序&#xff0c;配置开发板参数如下&#xff1a; 在platformio.ini文件中&#xff0c;配置使用esp32-s3-devkitc-1开发…

掌握Kubernetes Network Policy,构建安全的容器网络

在 Kubernetes 集群中&#xff0c;默认情况下&#xff0c;所有 Pod 之间都是可以相互通信的&#xff0c;这在某些场景下可能会带来安全隐患。为了实现更精细的网络访问控制&#xff0c;Kubernetes 提供了 Network Policy 机制。Network Policy 允许我们定义一组规则&#xff0c…

清华北大推出的 DeepSeek 教程(附 PDF 下载链接)

清华和北大分别都有关于DeepSeek的分享文档&#xff0c;内容非常全面&#xff0c;从原理和具体的应用&#xff0c;大家可以认真看看。 北大 DeepSeek 系列 1&#xff1a;提示词工程和落地场景.pdf  北大 DeepSeek 系列 2&#xff1a;DeepSeek 与 AIGC 应用.pdf  清华 Deep…

【GoTeams】-4:为项目引入etcd

本文目录 1. 书接上回2. 引入etcddiscoverystruct{}{} resolverserver 3. 将服务注册到etcd中4. 梳理下etcd调用逻辑 1. 书接上回 本节是为项目引入etcd这个环节&#xff0c;然后我们来看看具体该怎么实现。 首先来谈谈为什么要引入服务发现&#xff1f; 动态服务注册与发现…

ReferenceError: assignment to undeclared variable xxx

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

如何在WPS中接入DeepSeek并使用OfficeAI助手(超细!成功版本)

目录 第一步&#xff1a;下载并安装OfficeAI助手 第二步&#xff1a;申请API Key 第三步:两种方式导入WPS 第一种:本地大模型Ollama 第二种APIKey接入 第四步&#xff1a;探索OfficeAI的创作功能 工作进展汇报 PPT大纲设计 第五步&#xff1a;我的使用体验(体验建议) …

fiddler everywhere 绿色永久版

目录&#xff1a; 1. 下载并安装 FiddlerEverywhere v5.16.02. 下载并安装 FiddlerEverywherePatcher 补丁3. 修改 FiddlerEverywhere 版本号4. 再打开 FiddlerEverywhere 即可正常使用 亲测有效&#xff01;&#xff01;&#xff01;以 Windows 10 FiddlerEverywhere v5.16.0 …

100天精通Python(爬虫篇)——第115天:爬虫在线小工具_Curl转python爬虫代码工具(快速构建初始爬虫代码)

文章目录 一、curl是什么&#xff1f;二、爬虫在线小工具&#xff08;牛逼puls&#xff09;三、实战操作 一、curl是什么&#xff1f; 基本概念&#xff1a;curl 支持多种协议&#xff0c;如 HTTP、HTTPS、FTP、SFTP 等&#xff0c;可用于从服务器获取数据或向服务器发送数据&a…

如何使用MyBatis进行多表查询

前言 在实际开发中&#xff0c;对数据库的操作通常会涉及多张表&#xff0c;MyBatis提供了关联映射&#xff0c;这些关联映射可以很好地处理表与表&#xff0c;对象与对象之间的的关联关系。 一对一查询 步骤&#xff1a; 先确定表的一对一关系确定好实体类&#xff0c;添加关…

【数据分析】转录组基因表达的KEGG通路富集分析教程

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍差异分析(limma)KEGG富集分析(enrichKEGG)可视化加载R包数据下载导入数据基因差异分析火山图KEGG通路富集分析可视化通路结果另一个案例总结系统信息参考介绍 KEGG富集分析,可…

实现Django和Transformers 构建智能客服大模型(模拟订单系统)

一、环境安装准备 #git拉取 bert-base-chinese 文件#创建 虚拟运行环境python -m venv myicrplatenv#刷新source myicrplatenv/bin/activate#python Django 集成nacospip install nacos-sdk-python#安装 Djangopip3 install Django5.1#安装 pymysql settings.py 里面需要 # 强制…

实战案例分享:Android WLAN Hal层移植(MTK+QCA6696)

本文将详细介绍基于MTK平台&#xff0c;适配高通&#xff08;Qualcomm&#xff09;QCA6696芯片的Android WLAN HAL层的移植过程&#xff0c;包括HIDL接口定义、Wi-Fi驱动移植以及wpa_supplicant适配过程&#xff0c;涵盖STA与AP模式的常见问题与解决方法。 1. HIDL接口简介 HID…

ubuntu22.04机器人开发环境配置

1. ros2环境配置&#xff08;humble&#xff09; #配置源 # https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update && sudo apt install curl -y# …

1. 树莓派上配置机器人环境(具身智能机器人套件)

1. 安装树莓派系统 镜像下载地址&#xff08;windows/Mac/Ubuntu)&#xff0c;安装Pi5. 2. 环境配置&#xff08;登录Pi系统&#xff09; 2.1 启用 SSH From the Preferences menu, launch Raspberry Pi Configuration. Navigate to the Interfaces tab. Select Enable…

【从零开始学习计算机科学】数字逻辑(九)有限状态机

【从零开始学习计算机科学】数字逻辑(九)有限状态机 有限状态机状态机的表示方法有限状态机的Verilog描述有限状态机 有限状态机(简称状态机)相当于一个控制器,它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,通过预先设计的顺序在各状态之间进行转换,状…

springboot-bug

spring boot :3.2.6该版本不与mybatis框架兼容&#xff0c;所以使用该版本时&#xff0c;请注意JDBC框架&#xff0c;要不然你会疑问&#xff0c;明明自己映射是对的&#xff0c;实体类是对的&#xff0c;各种东西都配好了&#xff0c;但就是报错&#xff0c;这是因为SpringBoo…