AI个人学习
和实操指南
讯飞绘镜

Qwen3 发布:深入思考与快速响应并存的新一代大语言模型

本文于 2025-05-05 17:17 更新,部分内容具有时效性,如有失效,请留言

大型语言模型领域迎来了新成员。近日, Qwen 系列大语言模型发布了其最新版本 Qwen3。据开发团队介绍,其旗舰模型 Qwen3-235B-A22B 在编码、数学及通用能力等基准测试中,展现出与 DeepSeek-R1 , o1 , o3-mini , Grok-3 及 Gemini-2.5-Pro 等业界顶尖模型相匹敌的性能。这些竞品的选择,反映了 Qwen3 旨在与当前性能标杆直接对话的定位。

Qwen3 发布:深入思考与快速响应并存的新一代大语言模型-1


值得关注的是,小型混合专家( MoE )模型 Qwen3-30B-A3B 据称在性能上超越了参数量更大的 QwQ-32B(尽管其激活参数仅为后者的十分之一),而即便是参数量较小的 Qwen3-4B 模型,其性能也号称能与 Qwen2.5-72B-Instruct 相媲美。这显示出模型架构优化和训练方法改进带来的显著效率提升。

Qwen3 发布:深入思考与快速响应并存的新一代大语言模型-2

此次发布的一大亮点是开放了两个 MoE 模型的权重:Qwen3-235B-A22B(总参数 2350 亿,激活参数 220 亿)和 Qwen3-30B-A3B(总参数 300 亿,激活参数 30 亿)。MoE 是一种允许模型在推理时仅激活部分“专家”网络的技术,能在保持强大性能的同时显著降低计算需求,这对于推动大模型在更广泛场景下的部署具有重要意义。

同时,遵循 Apache 2.0 许可证,团队还开放了六个密集(Dense)模型的权重,参数规模覆盖从 6 亿到 320 亿不等,具体包括 Qwen3-32B, Qwen3-14B, Qwen3-8B, Qwen3-4B, Qwen3-1.7B, 和 Qwen3-0.6B。

模型技术规格概览(密集模型):

Models Layers Heads (Q / KV) Tie Embedding Context Length
Qwen3-0.6B 28 16 / 8 Yes 32K
Qwen3-1.7B 28 16 / 8 Yes 32K
Qwen3-4B 36 32 / 8 Yes 32K
Qwen3-8B 36 32 / 8 No 128K
Qwen3-14B 40 40 / 8 No 128K
Qwen3-32B 64 64 / 8 No 128K

模型技术规格概览(MoE 模型):

Models Layers Heads (Q / KV) # Experts (Total / Activated) Context Length
Qwen3-30B-A3B 48 32 / 4 128 / 8 128K
Qwen3-235B-A22B 94 64 / 4 128 / 8 128K

这些模型及其预训练版本(如 Qwen3-30B-A3B-Base)已在 Hugging Face, ModelScope, Kaggle 等主流平台上线。对于模型部署,推荐使用 SGLang 和 vLLM 等框架。本地使用场景下,Ollama, LMStudio, MLX, llama.cpp, 和 KTransformers 等工具提供了便捷的接入方式。

开发者可以通过 Qwen Chat Web 和移动应用体验 Qwen3 的能力。

 

核心特性解析

Qwen3 引入了若干值得关注的特性:

  • 混合思维模式 (Hybrid Thinking Modes)Qwen3 支持两种解决问题的模式:
    1. 思考模式 (Thinking Mode): 模型会进行逐步推理,展示思考过程,然后给出最终答案。这适用于需要深度分析的复杂问题。
    2. 非思考模式 (Non-Thinking Mode): 模型提供快速、近乎即时的响应,适合对速度要求高、问题相对简单的场景。

    这种设计赋予了用户根据任务需求控制模型“思考深度”的灵活性。更重要的是,这种混合模式使得模型能够实现稳定且高效的“思考预算”控制。如下图所示,Qwen3 的性能表现出与分配的计算推理预算直接相关的可扩展性和平滑改进。用户可以更容易地为特定任务配置预算,从而在成本效益和推理质量之间找到更优的平衡点。这为大模型在实际应用中的成本管理提供了新的思路。

    Qwen3 发布:深入思考与快速响应并存的新一代大语言模型-3

  • 广泛的多语言支持Qwen3 模型支持多达 119 种语言和方言。这种广泛的多语言能力为国际化应用开辟了新可能,有助于全球用户利用这些模型。
    Language Family Languages & Dialects
    Indo-European English, French, Portuguese, German, Romanian, Swedish, Danish, Bulgarian, Russian, Czech, Greek, Ukrainian, Spanish, Dutch, Slovak, Croatian, Polish, Lithuanian, Norwegian Bokmål, Norwegian Nynorsk, Persian, Slovenian, Gujarati, Latvian, Italian, Occitan, Nepali, Marathi, Belarusian, Serbian, Luxembourgish, Venetian, Assamese, Welsh, Silesian, Asturian, Chhattisgarhi, Awadhi, Maithili, Bhojpuri, Sindhi, Irish, Faroese, Hindi, Punjabi, Bengali, Oriya, Tajik, Eastern Yiddish, Lombard, Ligurian, Sicilian, Friulian, Sardinian, Galician, Catalan, Icelandic, Tosk Albanian, Limburgish, Dari, Afrikaans, Macedonian, Sinhala, Urdu, Magahi, Bosnian, Armenian
    Sino-Tibetan Chinese (Simplified Chinese, Traditional Chinese, Cantonese), Burmese
    Afro-Asiatic Arabic (Standard, Najdi, Levantine, Egyptian, Moroccan, Mesopotamian, Ta’izzi-Adeni, Tunisian), Hebrew, Maltese
    Austronesian Indonesian, Malay, Tagalog, Cebuano, Javanese, Sundanese, Minangkabau, Balinese, Banjar, Pangasinan, Iloko, Waray (Philippines)
    Dravidian Tamil, Telugu, Kannada, Malayalam
    Turkic Turkish, North Azerbaijani, Northern Uzbek, Kazakh, Bashkir, Tatar
    Tai-Kadai Thai, Lao
    Uralic Finnish, Estonian, Hungarian
    Austroasiatic Vietnamese, Khmer
    Other Japanese, Korean, Georgian, Basque, Haitian, Papiamento, Kabuverdianu, Tok Pisin, Swahili
  • 增强的智能代理能力 (Agentic Capabilities)Qwen3 模型针对编码和作为智能代理(Agent)执行任务的能力进行了优化。同时,团队还加强了对 MCP(可能指 Multi-Agent Collaboration Platform,多智能体协作平台)的支持。下面的视频链接展示了 Qwen3 如何进行思考并与环境(如调用工具)进行交互。视频演示链接:https://qianwen-res.oss-accelerate-overseas.aliyuncs.com/mcp.mov

 

训练细节:数据、阶段与优化

Qwen3 的预训练数据量相较于 Qwen2.5 有了显著提升。Qwen2.5 使用了 18 万亿 token,而 Qwen3 的预训练数据量接近其两倍,达到了约 36 万亿 token,覆盖 119 种语言和方言。

数据来源不仅包括网页,还涵盖了类 PDF 文档。团队利用 Qwen2.5-VL 模型从这些文档中提取文本,并使用 Qwen2.5 提升提取内容的质量。为了增加数学和代码数据的比例,还利用 Qwen2.5-Math 和 Qwen2.5-Coder 生成了合成数据,如教科书、问答对和代码片段。

预训练过程分为三个阶段:

  1. S1 阶段: 在超过 30 万亿 token 上进行预训练,上下文长度为 4K token。此阶段旨在赋予模型基础的语言技能和通用知识。
  2. S2 阶段: 增加知识密集型数据(如 STEM、编码、推理任务)的比例,对数据集进行优化,并在额外的 5 万亿 token 上继续预训练。
  3. S3 阶段: 使用高质量的长上下文数据,将模型的上下文长度扩展至 32K token(部分模型甚至达到 128K),确保模型能有效处理长输入。

Qwen3 发布:深入思考与快速响应并存的新一代大语言模型-4

得益于模型架构的改进、训练数据的增加以及更有效的训练方法,Qwen3 密集基础模型的整体性能达到了参数量更大的 Qwen2.5 基础模型的水平。例如,Qwen3-1.7B/4B/8B/14B/32B-Base 分别与 Qwen2.5-3B/7B/14B/32B/72B-Base 表现相当。特别是在 STEM、编码和推理等领域,Qwen3 密集基础模型甚至优于更大参数的 Qwen2.5 模型。

对于 Qwen3-MoE 基础模型,它们在仅使用约 10% 激活参数的情况下,实现了与 Qwen2.5 密集基础模型相似的性能,这意味着在训练和推理成本上都有显著节省。

 

后训练(Post-training)流程

Qwen3 发布:深入思考与快速响应并存的新一代大语言模型-5

为了开发出兼具逐步推理和快速响应能力的混合模式模型,Qwen 团队实施了一个四阶段的后训练流程:

  1. 长思维链(Long CoT)冷启动: 使用覆盖数学、编码、逻辑推理、STEM 等多样化任务和领域的长思维链数据对模型进行微调,旨在建立基础的推理能力。
  2. 基于推理的强化学习 (Reasoning-based RL): 扩大强化学习的计算资源投入,利用基于规则的奖励(Rule-based Rewards)来增强模型的探索和利用能力,进一步提升推理性能。
  3. 思考模式融合: 将非思考能力整合进思考模型中。通过在长 CoT 数据和通用指令微调数据的混合体上进行微调(这些数据由第二阶段增强后的思考模型生成),实现推理能力和快速响应能力的融合。
  4. 通用强化学习 (General RL): 在超过 20 个通用领域任务上应用强化学习,进一步加强模型的通用能力(如指令遵循、格式遵循、Agent 能力等),并纠正不良行为。

 

使用 Qwen3 进行开发

以下是在不同框架中使用 Qwen3 的简要指南。首先是在 Hugging Face transformers 库中使用 Qwen3-30B-A3B 的标准示例:

from modelscope import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen3-30B-A3B"
# 加载 tokenizer 和模型
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
# 准备模型输入
prompt = "给我简要介绍一下大型语言模型。"
messages = [
{"role": "user", "content": prompt}
]
# apply_chat_template 用于构建符合 Qwen 对话格式的输入
# enable_thinking=True 启用思考模式 (默认为 True)
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=True # 在思考模式和非思考模式间切换,默认为 True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
# 进行文本生成
generated_ids = model.generate(
**model_inputs,
max_new_tokens=32768 # 设置最大生成 token 数
)
# 提取生成的内容部分 (去除输入部分)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
# 解析思考内容 (如果存在)
# 寻找 '</think>' 对应的 token id (151668)
try:
# rindex 从后往前查找 151668
index = len(output_ids) - output_ids[::-1].index(151668)
except ValueError:
# 如果没有找到 '</think>',说明没有思考内容
index = 0
# 分别解码思考内容和最终回复内容
thinking_content = tokenizer.decode(output_ids[:index], skip_special_tokens=True).strip("\n")
content = tokenizer.decode(output_ids[index:], skip_special_tokens=True).strip("\n")
print("思考内容:", thinking_content)
print("最终回复:", content)

若要禁用思考模式,只需将 enable_thinking 参数设置为 False:

text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=False  # 默认为 True
)

对于模型部署,可以使用 sglang>=0.4.6.post1 或 vllm>=0.8.4 创建与 OpenAI API 兼容的端点:

  • 使用 SGLang:
    python -m sglang.launch_server --model-path Qwen/Qwen3-30B-A3B --reasoning-parser qwen3
    
  • 使用 vLLM:
    vllm serve Qwen/Qwen3-30B-A3B --enable-reasoning --reasoning-parser deepseek_r1
    

    (注:原文此处使用 deepseek_r1 解析器,开发者需确认其与 Qwen3 的兼容性)

在本地开发环境中,可以使用 ollama,通过简单的命令 ollama run qwen3:30b-a3b 即可与模型交互。此外,LMStudio, llama.cpp 和 ktransformers 等工具也支持在本地构建和运行 Qwen3。

高级用法:动态切换思维模式

Qwen3 提供了一种“软切换”机制,允许用户在 enable_thinking=True 时动态控制模型的行为。具体来说,可以在用户提问或系统消息中添加 /think 或 /no_think 标签,来逐轮切换模型的思维模式。在多轮对话中,模型会遵循最近一次的指令。

以下是一个多轮对话示例:

from transformers import AutoModelForCausalLM, AutoTokenizer
class QwenChatbot:
def __init__(self, model_name="Qwen/Qwen3-30B-A3B"):
self.tokenizer = AutoTokenizer.from_pretrained(model_name)
# 注意:实际运行时需要确保有足够的 GPU 显存加载模型
# device_map="auto" 可能需要根据实际硬件调整
self.model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto", # 自动选择合适的精度
device_map="auto"   # 自动分配模型到可用设备
)
self.history = [] # 用于存储对话历史
def generate_response(self, user_input):
# 将当前用户输入加入历史记录
messages = self.history + [{"role": "user", "content": user_input}]
# 使用 apply_chat_template 构建输入
# 注意:这里没有显式设置 enable_thinking,会使用模型的默认行为或最近的 /think /no_think 指令
text = self.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
inputs = self.tokenizer(text, return_tensors="pt").to(self.model.device)
# 生成回复
response_ids = self.model.generate(
**inputs,
max_new_tokens=32768 # 设置最大生成 token 数
)[0][len(inputs.input_ids[0]):].tolist() # 提取生成内容
# 解码回复文本
response = self.tokenizer.decode(response_ids, skip_special_tokens=True).strip()
# 更新对话历史
self.history.append({"role": "user", "content": user_input})
# 注意:此处仅添加解码后的纯文本回复,未处理思考内容
# 如果需要保留或展示思考过程,需要像之前的例子一样解析 output_ids
self.history.append({"role": "assistant", "content": response})
# 返回解码后的回复文本
return response
# 示例用法
if __name__ == "__main__":
# 确保在有足够资源的机器上运行
try:
chatbot = QwenChatbot()
# 第一次输入 (默认启用思考模式)
user_input_1 = "strawberries 这个单词里有多少个 'r'?"
print(f"用户: {user_input_1}")
response_1 = chatbot.generate_response(user_input_1)
print(f"助手: {response_1}")
print("----------------------")
# 第二次输入,使用 /no_think 禁用思考模式
user_input_2 = "那么,blueberries 这个单词里有多少个 'r'? /no_think"
print(f"用户: {user_input_2}")
response_2 = chatbot.generate_response(user_input_2)
print(f"助手: {response_2}")
print("----------------------")
# 第三次输入,使用 /think 再次启用思考模式
user_input_3 = "真的吗?请再想想。 /think"
print(f"用户: {user_input_3}")
response_3 = chatbot.generate_response(user_input_3)
print(f"助手: {response_3}")
except Exception as e:
print(f"运行出错: {e}")
print("请确保已安装所需依赖,并拥有足够的计算资源(如 GPU 显存)。")

Agent 用法:工具调用

Qwen3 在工具调用能力方面表现出色。推荐使用 Qwen-Agent 框架 (https://github.com/QwenLM/Qwen-Agent) 来充分利用 Qwen3 的 Agent 能力。Qwen-Agent 内部封装了工具调用的模板和解析器,可以简化开发复杂度。

可以通过 MCP 配置文件、使用 Qwen-Agent 的集成工具或自行集成其他工具来定义可用的工具集。

import os
from qwen_agent.agents import Assistant
# 定义 LLM 配置
llm_cfg = {
'model': 'Qwen3-30B-A3B', # 指定使用的 Qwen3 模型
# 如果使用阿里云 ModelScope 提供的 DashScope API:
# 'model_type': 'qwen_dashscope',
# 'api_key': os.getenv('DASHSCOPE_API_KEY'), # 需要设置环境变量
# 如果使用兼容 OpenAI API 的自定义端点 (例如 VLLM 或 SGLang 部署的):
'model_server': 'http://localhost:8000/v1',  # 替换为你的 API 地址
'api_key': 'EMPTY', # 对于本地部署或不需要 key 的情况
# 可选:其他生成参数配置
# 'generate_cfg': {
#         # 如果模型的原始输出将思考过程 <think>...</think> 包含在最终内容里,设为 True
#         # 如果 VLLM/SGLang 等框架已分离 reasoning_content 和 content,则设为 False 或不设置
#         'thought_in_content': False,
#     },
}
# 定义工具列表
tools = [
{'mcpServers': {  # 可以指定 MCP 配置文件或直接定义服务
'time': { # 定义一个名为 'time' 的工具
'command': 'uvx', # 使用 uvx 启动
# 启动参数,运行 mcp-server-time,并设置时区
'args': ['mcp-server-time', '--local-timezone=Asia/Shanghai']
},
"fetch": { # 定义一个名为 'fetch' 的工具,用于访问网页
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
},
'code_interpreter',  # 使用 Qwen-Agent 内置的代码解释器工具
# 可以继续添加其他自定义或内置工具
]
# 初始化 Agent
# 需要确保 uvx 和相应的 mcp-server-* 已安装并配置好
bot = Assistant(llm=llm_cfg, function_list=tools)
# 流式生成调用示例
messages = [{'role': 'user', 'content': '访问 https://qwenlm.github.io/blog/ 页面,并介绍一下 Qwen 的最新进展。'}]
responses = None # 初始化 responses 变量
# bot.run 返回一个生成器,用于流式输出
for responses in bot.run(messages=messages):
# 可以在这里处理中间步骤的输出,例如工具调用和观察结果
# print(responses) # 打印每个中间步骤或最终回复
pass # 循环结束后,responses 将包含最终的完整回复
# 打印最终的回复内容
if responses:
print(responses)
else:
print("未能获取到回复。")

(注:运行 Agent 示例需要安装 qwen-agent 库及相关依赖,并确保 uvx 和 mcp-server-* 工具可用)

未来展望

Qwen3 被视为迈向通用人工智能(AGI)和超级人工智能(ASI)过程中的一个重要里程碑。通过扩大预训练和强化学习的规模,模型实现了更高水平的智能。混合思维模式的融合为用户提供了控制思考预算的灵活性,而广泛的语言支持则增强了全球可及性。

展望未来,Qwen 团队计划在多个维度上继续提升模型能力,包括优化模型架构和训练方法,以实现数据扩展、增大模型尺寸、延长上下文长度、拓宽模态支持,并通过环境反馈推进强化学习以实现长时程推理。团队认为,行业正从训练“模型”的时代转向训练“智能体”(Agents)的时代。其下一代迭代产品有望为工作和生活带来更有意义的进步。

未经允许不得转载:首席AI分享圈 » Qwen3 发布:深入思考与快速响应并存的新一代大语言模型
zh_CN简体中文