【技术干货】Qwen3优化实践:训练与推理性能提升详细教程
Qwen3模型系列带来多项技术突破,包括两大MoE架构(235B总参/22B激活参数和30B总参/3B激活参数),支持128K长上下文和119种语言。模型提供灵活的思考模式切换功能,基础模型性能显著提升,如Qwen3-1.7B性能对标前代Qwen2.5-3B。创新性地采用混合奖励机制,结合规则奖励、基于参考答案的模型奖励和无参考答案的偏好学习,有效提升模型响应质量。系列涵盖从0.6B到235B的丰
Qwen3相关亮点:
- MOE模型:
- Qwen3-235B-A22B (MoE, 总大小235B, 激活参数22B, 上下文128K)
- Qwen3-30B-A3B (MoE, 总大小30B, 激活参数3B, 上下文128K)。
- 推理能力增强、代理能力增强,支持119种语言
- 支持思考和非思考模式的切换
- Qwen3 dense基础模型的整体性能与参数更多的 Qwen2.5 基础模型相当。例如,Qwen3-1.7B/4B/8B/14B/32B-Base 的性能分别与 Qwen2.5-3B/7B/14B/32B/72B-Base 相当
- Qwen3奖励函数包括
- Rule-based Reward:规则奖励,比如指令遵循、格式遵循等的奖励
- Model-based Reward with Reference Answer:基于参考答案的模型奖励,为每个查询提供一个参考答案,并提示Qwen2.5-72B-Instruct基于此参考来评分模型的响应,该方法允许更灵活地处理多样化的任务,无需严格遵守格式要求,避免了仅基于规则奖励可能出现的假阴性
- Model-based Reward without Reference:无参考答案的基于模型的奖励,利用人类偏好数据,训练一个奖励模型来为模型响应分配标量分数。这种方法不依赖于参考答案,可以处理更广泛的查询,同时有效增强模型的参与度和有用性。
一、Qwen3
Qwen3发布。体验链接:chat.qwen.ai
技术报告地址: qwenlm.github.io/blog/qwen3/
模型地址: modelscope.cn/collections/Qwen3-9743180bdc6b48
Github Repo: github.com/QwenLM/Qwen3
1、MoE模型有Qwen3-235B-A22B (MoE, 总大小235B, 激活参数22B, 上下文128K),Qwen3-30B-A3B (MoE, 总大小30B, 激活参数3B, 上下文128K)。
2、Dense模型:Qwen3-32B,Qwen3-14B,Qwen3-8B,Qwen3-4B,Qwen3-1.7B,Qwen3-0.6B,
新版本的 Qwen3 特性包括:混合思维模式, 搭载了 thinking 开关, 可以直接手动控制要不要开启 thinking,多语言支持, 支持 119 种语言和方言,Agent 能力提升, 提升了编码和 Agent 方面的表现,并加强了 MCP 的支持,另外, chat.qwen.ai 的 Qwen3 也上线。

相关dense模型参数:
(1)本地测试及科研
Qwen3-0.6B/1.7B,硬件要求低,适合快速实验
(2)手机端侧应用
Qwen3-4B,性能与效率兼顾,适合移动端部署
(3)电脑或汽车端
Qwen3-8B,适用于对话系统、语音助手等场景
(4)企业落地
Qwen3-14B/32B 性能更强,适合复杂任务
(5)云端高效部署
MoE 模型,
Qwen3-30B-A3B 速度快
Qwen3-235B-A22B 性能强劲且显存占用低
二、思考开关
Qwen3 引入了“思考模式”和“非思考模式”,使模型能够在不同场景下表现出最佳性能。在思考模式模式下,模型会进行多步推理和深度分析,类似于人类在解决复杂问题时的“深思熟虑”。(eg:在回答数学题或编写复杂代码时,模型会反复验证逻辑并优化输出结果。)
在非思考模式模式下,模型优先追求响应速度和效率,适用于简单任务或实时交互。(eg:在日常对话或快速问答中,模型会跳过复杂的推理步骤,直接给出答案。)
注意:
(1)对于思考模式,请使用 Temperature=0.6、TopP=0.95、TopK=20 和 MinP=0(这是 generation_config.json 中的默认设置)。不要使用贪心解码,因为它可能导致性能下降和无尽的重复。
(2)对于非思考模式,建议使用 Temperature=0.7、TopP=0.8、TopK=20 和 MinP=0。
(3)对于支持的框架,您可以在 0 到 2 之间调整 presence_penalty 参数以减少无尽的重复。然而,使用更高的值偶尔会导致语言混杂和轻微的模型性能下降。
(4)足够的输出长度:对于大多数查询,我们建议使用 32,768 个令牌的输出长度。对于高度复杂的问题(如数学和编程竞赛中的问题)进行基准测试时,我们建议将最大输出长度设置为 38,912 个令牌。这为模型提供了充足的空间来生成详细且全面的响应,从而提高其整体性能。
(5)标准化输出格式:在进行基准测试时,我们建议使用提示来标准化模型输出。
- 数学问题:在提示中包含“请逐步推理,并将您的最终答案放在
\boxed{}中。” - 选择题:在提示中添加以下 JSON 结构以标准化响应:“请在 answer 字段中仅显示选项字母,例如 “answer”: “C”。”
三、模型训练
1. 预训练阶段
在预训练方面,Qwen3 的数据集相比 Qwen2.5 有了显著扩展。Qwen2.5 预训练了 18 万亿个 token,而 Qwen3 使用的 token 数量几乎是 Qwen2.5 的两倍,约有 36 万亿个 token,涵盖 119 种语言和方言。为了构建这个庞大的数据集,我们不仅从网络收集数据,还从类似 PDF 的文档中收集数据。我们使用 Qwen2.5-VL 从这些文档中提取文本,并使用 Qwen2.5 来提升提取内容的质量。为了增加数学和代码数据量,我们使用 Qwen2.5-Math 和 Qwen2.5-Coder 生成合成数据,其中包括教科书、问答对和代码片段。
预训练过程包含三个阶段:
- 在第一阶段(S1),我们利用超过 30 万亿个 tokens 预训练模型,上下文长度为 4000 个 tokens。此阶段为模型提供了基本的语言技能和常识。
- 在第二阶段(S2),我们通过增加知识密集型数据(例如 STEM、编码和推理任务)的比例来改进数据集。之后,我们又利用另外 5 万亿个 tokens 对模型进行了预训练。
- 在最后阶段,我们使用高质量的长上下文数据将上下文长度扩展至 32000 个 tokens,以确保模型能够有效地处理更长的输入。
2. Post-training
为了开发既能进行逐步推理又能快速响应的混合模型,我们实现了一个四阶段的训练流程。该流程包括:
(1)长思维链 (CoT) 冷启动,
(2)基于推理的强化学习 (RL),
(3)思维模式融合,
(4)通用强化学习。

在第一阶段,我们使用各种长 CoT 数据对模型进行微调,涵盖数学、编程、逻辑推理和 STEM 问题等各种任务和领域。此过程旨在使模型具备基本的推理能力。
第二阶段专注于扩展强化学习的计算资源,利用基于规则的奖励来增强模型的探索和利用能力。
在第三阶段,我们通过结合长CoT数据和常用的指令调整数据对思维模型进行微调,将非思维能力融入到思维模型中。这些数据由第二阶段的增强型思维模型生成,确保推理能力与快速响应能力的无缝融合。
在第四阶段,我们将强化学习应用于20多个通用领域任务,以进一步增强模型的通用能力并纠正不良行为。这些任务包括指令遵循、格式遵循和代理能力等。
随着推理预算的增加,实验发现确实能在一些hard benchmark上取得递增的效果
3. 混合推理训练
SFT数据集结合了“思维”和“非思维”的数据。为确保第二阶段模型的绩效不受额外SFT的影响,“思维”数据是通过使用第二阶段模型本身对第一阶段查询进行拒绝采样生成的;
“非思维”数据则经过精心策划,以涵盖包括编程、数学、指令遵循、多语言任务、创意写作、问答以及角色扮演在内的多样化任务;
对于处于思考模式和非思考模式的样本,分别在用户查询或系统消息中引入/think和/no_think标志。这使得模型能够根据用户的输入相应地选择合适的思维模式。
对于非思考模式的样本,在助手的响应中保留一个空的思考块,以确保了模型内部的格式一致性,并允许开发者通过在聊天模板中拼接一个空的思考块来防止模型进行思考行为。
默认情况下,模型以思考模式运行,因此增加了一些用户查询不包含/think标志的思考模式训练样本。
四、模型部署
对于部署,我们建议使用SGLang和vLLM等框架。对于本地使用,强烈推荐使用Ollama、LMStudio、MLX、llama.cpp和KTransformers等工具
在 Hugging Face Transformer 中使用 Qwen3-30B-A3B 的标准示例:
from modelscope import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen3-30B-A3B"
# load the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
# prepare the model input
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=True # Switch between thinking and non-thinking modes. Default is True.
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
# conduct text completion
generated_ids = model.generate(
**model_inputs,
max_new_tokens=32768
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
# parsing thinking content
try:
# rindex finding 151668 (</think>)
index = len(output_ids) - output_ids[::-1].index(151668)
except ValueError:
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:", thinking_content)
print("content:", content)
多轮对话的示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
class QwenChatbot:
def __init__(self, model_name="Qwen/Qwen3-30B-A3B"):
self.tokenizer = AutoTokenizer.from_pretrained(model_name)
self.model = AutoModelForCausalLM.from_pretrained(model_name)
self.history = []
def generate_response(self, user_input):
messages = self.history + [{"role": "user", "content": user_input}]
text = self.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
inputs = self.tokenizer(text, return_tensors="pt")
response_ids = self.model.generate(**inputs, max_new_tokens=32768)[0][len(inputs.input_ids[0]):].tolist()
response = self.tokenizer.decode(response_ids, skip_special_tokens=True)
# Update history
self.history.append({"role": "user", "content": user_input})
self.history.append({"role": "assistant", "content": response})
return response
# Example Usage
if __name__ == "__main__":
chatbot = QwenChatbot()
# First input (without /think or /no_think tags, thinking mode is enabled by default)
user_input_1 = "How many r's in strawberries?"
print(f"User: {user_input_1}")
response_1 = chatbot.generate_response(user_input_1)
print(f"Bot: {response_1}")
print("----------------------")
# Second input with /no_think
user_input_2 = "Then, how many r's in blueberries? /no_think"
print(f"User: {user_input_2}")
response_2 = chatbot.generate_response(user_input_2)
print(f"Bot: {response_2}")
print("----------------------")
# Third input with /think
user_input_3 = "Really? /think"
print(f"User: {user_input_3}")
response_3 = chatbot.generate_response(user_input_3)
print(f"Bot: {response_3}")
五、模型评测
作为Qwen系列全新一代的混合推理模型,Qwen3 在 GPQA、AIME24/25、LiveCodeBench 等多个权威评测中表现出极具竞争力的结果。

如果需要自行进行评测,可以参考EvalScope评测框架:
更多详情参考: https://evalscope.readthedocs.io/zh-cn/latest/best_practice/qwen3.html
EvalScope评测框架: https://github.com/modelscope/evalscope
(1)Benchmark collection (for evaluating abilities such as code、understanding、instruction following、math …)
参考:https://modelscope.cn/models/Qwen/Qwen3-30B-A3B/feedback/issueDetail/29478
六、Agent方面
为了充分发挥 Qwen3 的代理能力,我们推荐使用Qwen-Agent。Qwen -Agent 内部封装了工具调用模板和工具调用解析器,大大降低了代码复杂度。
参考:https://github.com/QwenLM/Qwen-Agent
定义可用的工具,可以使用MCP配置文件,使用Qwen-Agent集成的工具,或者自行集成其他工具。
from qwen_agent.agents import Assistant
# Define LLM
llm_cfg = {
'model': 'Qwen3-30B-A3B',
# Use the endpoint provided by Alibaba Model Studio:
# 'model_type': 'qwen_dashscope',
# 'api_key': os.getenv('DASHSCOPE_API_KEY'),
# Use a custom endpoint compatible with OpenAI API:
'model_server': 'http://localhost:8000/v1', # api_base
'api_key': 'EMPTY',
# Other parameters:
# 'generate_cfg': {
# # Add: When the response content is `<think>this is the thought</think>this is the answer;
# # Do not add: When the response has been separated by reasoning_content and content.
# 'thought_in_content': True,
# },
}
# Define Tools
tools = [
{'mcpServers': { # You can specify the MCP configuration file
'time': {
'command': 'uvx',
'args': ['mcp-server-time', '--local-timezone=Asia/Shanghai']
},
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
},
'code_interpreter', # Built-in tools
]
# Define Agent
bot = Assistant(llm=llm_cfg, function_list=tools)
# Streaming generation
messages = [{'role': 'user', 'content': 'https://qwenlm.github.io/blog/ Introduce the latest developments of Qwen'}]
for responses in bot.run(messages=messages):
pass
print(responses)
七、模型的高效训练
ms-swift 已支持使用megatron并行技术进行纯文本大模型的LoRA训练,现支持CPT和SFT,显著加速MoE训练速度。
文档:https://swift.readthedocs.io/zh-cn/latest/Instruction/Megatron-SWIFT%E8%AE%AD%E7%BB%83.html#lora
训练脚本:https://github.com/modelscope/ms-swift/tree/main/examples/train/megatron/lora
普通人如何抓住AI大模型的风口?
领取方式在文末
为什么要学习大模型?
目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。
目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过 30%。
随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:
人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!
最后
只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!
在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
大模型全套学习资料展示
自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。

希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!
01 教学内容

-
从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!
-
大量真实项目案例: 带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
02适学人群
应届毕业生: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。

vx扫描下方二维码即可
本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!
03 入门到进阶学习路线图
大模型学习路线图,整体分为5个大的阶段:
04 视频和书籍PDF合集

从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)

新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)
05 行业报告+白皮书合集
收集70+报告与白皮书,了解行业最新动态!
06 90+份面试题/经验
AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)

07 deepseek部署包+技巧大全

由于篇幅有限
只展示部分资料
并且还在持续更新中…
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
更多推荐
所有评论(0)