Qwen3 小结和思考

混合推理

Qwen3 相较于之前的系列,一大亮点是支持了回答模式的切换:同一个模型,能够在每一步交互时选择是否进行深度思考。理想状态下,对于复杂的问题深度思考(e.g.,DeepSeek-R1,QwQ),对于简单问题直接回答(e.g., DeepSeek-V3,Qwen2.5)。这样的能力在工程实践方面无疑是巨大的提升,允许单一模型处理更为全面的任务,不至于陷入思考两分钟来回答“你好”的窘境。那么 Qwen3 在切换回答模式上做到了什么样的程度呢?如果说依赖于切换模型来切换回答模式是 0 分,单一模型完全自主切换回答模式是 100 分,我倾向于 Qwen3 能够得到 60 分:达成了“单一模型切换”,但是还不够自主。
在这里插入图片描述

切换回答模式的来源

Qwen3 官方指南 提到 Qwen3 有两种切换推理能力的方式。硬切换指在 tokenizer.apply_chat_template 中传入 enable_thinking,从而改变模型输入的 Jinja2 模板内容,对于模型本身没有硬性侵入。硬切换的成功表示 Qwen3 做到了“单一模型切换”,仅仅依靠改变模型输入就能够切换回答模式,不涉及参数层面的区分。 以下是不同回答模式下的输入样例 system prompt + user prompt

enable_thinking=False

<|im_start|>system
你是Qwen团队的智能助手。<|im_end|>
<|im_start|>user
今天天气如何。<|im_end|>
<|im_start|>assistant
<think>\n\n</think>

enable_thinking=True

<|im_start|>system
你是Qwen团队的智能助手。<|im_end|>
<|im_start|>user
今天天气如何。<|im_end|>
<|im_start|>assistant

可以看到,enable_thinking=False 实际对模型输入模板提供了一个空白的思考过程,类似于告诉模型“你已经完成了思考,请直接输出结果”。相较于之前在 system prompt 中千辛万苦地强调,Qwen3 针对这一选项在训练时就提供了严格的训练。在 Stage 3 中,Qwen3 进行了思维模式的融合,将“非思考模式整合到思考模型中”。可以猜测,在模型训练中,是否开启思考模式仅改变了 中间包裹的 tokens,不影响输出特征的统一性。

而软切换对于输入的改动更轻微:仅仅在 user prompt 或者 system prompt 结尾加入 /think/no_think,而无需感知任何调用模型的方式。相较于模版层面的强致改动,软切换似乎更接近对于“自主切换”的想象。这一指令遵循的训练大概率发生在 Stage 4 的通用强化学习中,使模型遵循输入中的固定特征。

由此可以对 Qwen3 的混合推理来源给出一个简单的总结和猜测:针对两类输入的格式(i.e., 模版中是否强制加入 \n\n 以及结尾处是否加入 /think/no_think)在训练中学习特定的输出内容。如果进一步将模型输出文本的能力抽象出来,就像是在做一个有明确输入特征的二分类任务,尽管这个任务的完整输出特征非常复杂(大段文本)。

To Think or Not to Think?

Qwen3 的混合推理在效率上有了巨大突破,一个模型就能覆盖 DeepSeek-R1 + V3 的能力范围。但不难发现,Qwen3 切换回答模式的能力仍然依赖输入的明确特征。无论是模版中加入的 \n\n,还是结尾处加入的 /think/no_think,本质都依赖模型的配置者/使用者对于问题的前置判断。而在大模型不断进化的时代,模型所具有的广域知识必然远超绝大部分个人,换言之模型通常来说是那个更适合判断问题是否需要深度思考的角色。在一个问题以普通的文本形式输入大模型后,模型应该自主选择是否需要深度思考并且作答,这也许才是对“自主思考”的终极期许。当然,使用者总是应该保留开启或关闭深度思考的权利。

我认为“自主思考”在训练阶段的挑战主要来源于样本的不一致性。当前的训练流程中,基座模型通过长思维链的冷启动和 RL 获得显著的思考能力,然后通过微调获得非思考模式的即答能力。处理数据时,只需要在训练数据中采样并加入空白的思考过程即可,这一过程能够通过简单的规则进行批量增强。而“获得即答能力”这一步的方式实际上是学习在某些情况下空白思考,而非自行选择不进行思考。这有点类似于填写方案模版和自主设计方案的区别。基于当前的训练模式,想要模型在推理时自行生成 ,就需要在训练时学习包含这一类特征的样本,对于训练数据和训练流程的要求就更高。此时的思考模式就不再向下兼容非思考模式(i.e.,{空思考内容}是{思考内容}的子集),而象征着截然不同的数据格式和模型能力。

对于数据格式的问题,一个简单的解决方案显然是继续保留 \n\n 作为非思考模式的输出格式,只要模型学会自行输出这部分内容即可。但是数据质量上的问题极具挑战性,因为这需要定义“什么样的问题需要思考,什么样的问题不需要”。这听上去像是一个哲学命题。在预测领域,难样本挖掘是一个经久不衰的话题。完成一份博士论文显然需要大量的思考(和实践),解决一道高等数学题也需要打草稿(并且树枝各类结论和公式)。那么解决一道 100 以内的加减乘除呢?数一数 strawberry 里面有几个 r 呢?甚至连 1+1=? 这样的问题实际也是基于 Peano Axioms 推导才能回答。但我们显然不希望一位优秀的博士生从推导 1+1=2 开始解一道高数题。

以下是一个基于 Qwen3-14B 的简单实验

输入问题耗时
enable_thinking=False1+1=?1.4s
enable_thinking=True1+1=?17.2s
enable_thinking=True计算函数f(x)=x^2+3x-5在区间[0,1]上的定积分,然后求出这个区间内的平均值。1min 27.9s

所以理想的模型推理能力应该是一个连续分布而非 0-1 分布,就像现在的解码器总是倾向于使用 softmax 而非 hardmax。对于一个问题,模型总应该尝试思考,但对于 1+1=? 这样的问题可能只需要 10 tokens,而面对一道高数题则需要思考 32,768 tokens,对于一份博士论文需要思考 131,072 tokens 然后转交给 Agent。事实上,现在的模型在思考长度上已经有了相当程度的弹性,但还不够好。人们对于回答 1+1=2 的预期时间很可能不是 17s,所以才有了对于混合推理能力的需求,即“用户前置判断问题的复杂度,并自主选择模型能力”。大家也许都同意了模型的推理能力对于回答质量一定是最优解,但目前的研究仍在探索模型的上线,而非其实际落地的效率。

工程落地

在业界的项目上,论效率 Qwen3 ~ QwQ+Qwen2.5,毕竟单一模型就能提供深度思考和即答能力,相较之前占用的部署资源接近减半。然而 Qwen3 需要手动切换回答模式的弊端仍然存在,即开发者需要在调用模型之前手动预设好固定的回答模式。理想状态下,这个设置应当随着用户的问题改变,当用户说“你好”时模型应该快速给出热情的回复,而用户问“怎样才能减肥”时模型需要调用很多的工具搜索,甚至进行反问。如果在调用时总是固定 enable_thinking,那么 Qwen3 就会降级成 QwQ 或 Qwen2.5,所带来的提升就仅仅是模型内部能力的提升了。

一个简单可行的方法是前置加入一个二分类模型,用以判断用户的输入问题是否需要深度思考,从而针对单个问题选取合适的回答模式。训练这个模型的数据需要开发者进行一定的人工标注,或是调用 GPT-4o 等强大模型进行批量标注。难点在于模型的选型:这个模型的精确度必须很高,否则会妨碍后续链路的质量(对复杂问题的思考不足,缺少工具调用或是回答错误);这个模型的耗时必须很短,否则会大幅拉长链路的耗时(花费 10s 判断无需深度思考,然后花费 2s 给出即答的结果)。这显然是大模型业界的一大终极难题,毕竟谁能拒绝一个又快又准的模型呢?如果牺牲模型规模,那就势必对训练数据和模型结构提出对应的挑战。此外,这个方法的后续维护成本会很高,因为随着后续链路的更新,二分类模型需要覆盖的输入问题内容也会不断扩大。导致一次次的重训练。

另一个方法是对 Qwen3 模型本身进行后训练,从而优化模型对于不同难度的问题作出不同长度思考的能力。限制 Qwen3 进行精细的思考长度控制的因素可能是因为在训练中难以对具体问题定义思考长度,即“这个问题有多难”。但是对于业界普遍的垂类大模型开发而言,给出垂类中的问题难度定义是具备一定可行性的。一旦问题的难度可以得到定义和量化,就能够生产并标注出足够的数据,通过微调或 RL 来调整模型的思考能力。难点显然在于执行步骤的难度颇高,定义问题的复杂度、基于定义标注数据、设计 RL 奖励和目标,都是需要大量思考和试错的。优势也很明显,即无需加入额外的模型组件,且后续的更新中能够以连续而非离散的方式控制模型思考,无需引入额外的重训练。

可以预见的是,模型后训练的成本会比较高昂且周期较长,可能会在研发期间就见到具备自适应思考长度的自主思考模型的发布。

多轮对话

Qwen3 的官方指南中悄无声息地移除了一个提示:不要使用 system prompt,而是将所有信息写入 user prompt,否则会损害模型性能。这个提示对于模型的能力显然无伤大雅,但对于那些强依赖多轮上下文信息的项目称得上是重大利好。基于 Qwen3 开发的项目,终于可以偷懒地直接拼接历史对话从而轻松获得完整的上下文,而不必费尽心机地设计各类输入特征,也无需担心模型对于全局设定的不遵守。

使用指南

以下内容均总结自 Qwen3 Huggingface

  1. Qwen3 能够在 thinking 和 no-thinking 之前无缝切换,有以下两种方式
  • 硬切换:在 tokenizer.apply_chat_template 中设置 enable_thinking

    • enable_thinking=True
      

      时,思考过程会被包裹在 中间。

    • enable_thinking=False
      

      时,模型会直接输出结果,其中不出现

  • 软切换:即使enable_thinking=False,用户依然可以在 system prompt 或 user prompt 中加入 think/no_think 以切换思考模式。对于多轮对话而言,模型会遵循最近的指令。

为了维护 API 一致性,当 enable_thinking=False 时,无论用户使用何种软切换,输出部分都会包括 和 的标签,但使用 /no_think 时思考内容可能为空。当 enable_thinking=True 时,软切换则会失效,输出部分总是不包括任何 或 。

\2. Qwen3 原生支持 32,768 个 tokens。如果对话的总长度(即输入 + 输出)远超出上限,推荐使用 RoPE scaling,并且研究团队已经验证了使用 YaRN 时模型处理 131,072 个 tokens 的表现(transformers、vLLM 均可生效)

开源框架大多实现了静态 YaRN,这会导致 scaling factor 不会随着输入长度而改变,对于较短的输入会产生有害的效果。因此,建议仅在超长上下文有必要的情况下使用 rope_scaling,并且进行适当的修改。例如,上下文长度通常为 65,536 时,推荐设置 factor=2.0
config.json 中,max_position_embeddings 默认为 40,960,包括 32,768 个输出 tokens 和 8192 个输入 tokens。

\3. 超参设置

  • enable_thinking=True:推荐使用 temperature=0.6, top_p=0.95, top_k=20, min_p=0。**不要使用 greedy decoding**!
  • enable_thinking=False:推荐使用 temperature=0.7, top_p=0.8, top_k=20, min_p=0。
  • 对于支持 Qwen3 的框架,可以设置 presence_penalty 处于 [0,2] 之间以调整效果,但较高的值可能会导致偶发的语言混合和效果下降。

\4. 输出长度:对于大部分任务,推荐输出长度设置为 32,768 个 tokens。如果问题非常复杂(例如数学、编程等),则推荐设置为 38,912 个 tokens。

\5. 输出格式:对于 benchmarking 任务,建议在 prompt 中明确提及模型的标准化输出。例如在数学问题中,加入“Please reason step by step, and put your final answer within \boxed{}.”。这一点在有明确输出结果的项目中可以借鉴。

\6. 多轮对话:在多轮会话中,仅加入模型的正式输出部分,无需加入任何思考内容。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

### Qwen3 KTransformer 的特性与功能 #### 关于 Qwen3 Qwen3 是通义千问系列中的一个重要版本,主要针对复杂任务高性能需求进行了优化。其核心特点在于强大的上下文理解生成能力,适用于多种应用场景,例如对话理解、代码生成以及复杂的多模态任务。以下是 Qwen3 的一些关键特性优势: - **大规模参数量**:Qwen3 基于超大模型训练而成,具备更高的计算能力更广泛的领域适应性[^2]。 - **增强的推理能力**:相较于早期版本,Qwen3 在逻辑推理方面表现更为突出,尤其适合解决涉及多层次思考的任务[^3]。 - **支持多语言环境**:除了中文外,还覆盖了数十种国际语言,满足全球化业务需求[^4]。 ```python from qwen import QwenModel model = QwenModel(model_name="qwen3") response = model.generate(prompt="解释一下量子力学的基础概念。") print(response) ``` #### 关于 KTransformer KTransformer 是一种基于 Transformer 架构改进而来的高效神经网络模型,旨在通过引入知识图谱来提升自然语言处理的效果。它的设计目标是在保持原有性能的同时降低资源消耗并提高特定领域的适用度。具体来说: - **融合外部知识库**:KTransformer 可以动态接入预定义的知识图谱,在文本编码阶段就考虑到了实体关系信息,从而增强了语义表示的质量[^5]。 - **轻量化部署方案**:相比传统的大规模 transformer 模型,KTransformer 提供了一套更加紧凑高效的实现方式,便于移动端或其他受限设备上的实际运用[^6]。 - **定制化微调机制**:允许开发者根据自己的特殊要求调整内部结构或者初始化权重,进一步提升了灵活性针对性[^7]。 ```python import torch from ktransformer import KnowledgeEnhancedEncoder, load_knowledge_graph kg_embeddings = load_knowledge_graph(&#39;path/to/kg&#39;) encoder = KnowledgeEnhancedEncoder(kg=kg_embeddings) input_ids = torch.tensor([[101, 2023,...]]) outputs = encoder(input_ids=input_ids) print(outputs.last_hidden_state.shape) ``` #### 总结对比 虽然两者都属于先进的 AI 技术成果,但它们的应用侧重点有所不同。Qwen3 更加注重通用智能的表现力;而 KTransformer 则强调如何有效利用额外的知识源改善 NLP 效果。因此,在选择使用哪一个工具时应该依据具体的项目背景个人偏好来做决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值