[ 打印 ]
2025年4月29日凌晨,阿里宣布开源新一代通义千问模型Qwen3系列,迅速引发国内外关注。Qwen3的发布不仅标志着阿里在AI技术上的又一次飞跃,也为开发者和企业带来了更高效、更灵活的AI解决方案。
本次Qwen3发布,包含混合专家(MoE)模型和稠密(Dense)模型两种架构。

本次发布的旗舰模型是Qwen3-235B-A22B(后缀235B指的是模型大小235B,A22B指的是激活参数22B),在代码、数学、通用能力等基准测试中,与DeepSeek-R1、o1、o3-mini、Grok-3和Gemini-2.5-Pro等顶级模型相比,表现出极具竞争力的结果,性能上已经全面超越了DeepSeek-R1、OpenAI-o1等顶级模型,登顶全球最强开源模型宝座。

此外,小型MoE模型Qwen3-30B-A3B的激活参数数量仅QwQ-32B的十分之一,但性能测试上却更胜一筹,甚至是Qwen3-4B这样的小模型,也能取得媲美Qwen2.5-72B-Instruct的性能。

阿里巴巴明确表示,Qwen3是其迈向通用人工智能(AGI)和超级人工智能(ASI)征程中的重要里程碑。和以往不同,此次阿里发布了一些列不同尺度的Qwen3模型,从移动设备端运行到企业端大型应用都进行了覆盖,构建了一个庞大的AI生态系统。这表明阿里正全力投入AI领域,意图将Qwen打造成基础性平台,全面对标DeepSeek、Llama等业界标杆。
思考模式:在这种模式下,模型能够进行更为细致的推理和分析,提供更为详尽的解答,适用于需要深入理解或解决复杂问题的场景,如逻辑推理、数学推理等。
非思考模式:在此模式中,模型提供快速、近乎即时的响应,适用于大多数任务,一般侧重于语言生成、上下文理解和自然语言处理,而不强调深度推理能力。

两种思维模式的结合,使用户能够根据具体问题的复杂程度,来控制模型的“思考”的思考方式,做到效果、成本、时间上的平衡。
Qwen3模型支持高达119种语言及方言,包括粤语等,相比上一代Qwen2.5的50种语言覆盖,实现了数量上的翻倍超越。这一广泛的多语言支持能力,意味着Qwen3有极大潜力创建风靡全球的国际应用,让全球用户都能受益于Qwen3模型的强大功能。

本次Qwen3的更新,优化了模型的Agent和代码能力,同时也加强了对模型上下文协议(MCP)的支持,使得模型能够更好地理解何时需要调用外部工具(如API、数据库、搜索引擎),如何构建请求,以及如何理解和利用返回的结果。
为了方便开发者构建Agent应用,阿里推荐使用Qwen-Agent框架。该框架封装了工具调用的模板和解析器,可以大大简化开发流程。下面这个示例,很好地展示了Qwen3是如何思考并与环境交互的。

与Qwen2.5相比,Qwen3预训练数据集规模几乎是上一代两倍,约36万亿个token,涵盖了119种语言和方言。这些数据,一方面是来自于互联网信息的收集,另一方面则是通过Qwen2.5-VL从各PDF文件中提取,再通过Qwen2.5改进数据的质量。此外,为了补充数学和编程领域的训练数据,Qwen2.5-Math和Qwen2.5-Coder也被用来生成合成数据。

Qwen3预训练有3个阶段,逐步提升模型的能力。
第一阶段,模型在30万tokens的数据上预训练,使用4K的上下文长度,这一阶段主要是帮助模型建立基本的语言技能和常识理解。
第二阶段,增强了STEM领域(科学、技术、工程、数学)和编程任务的训练,增加了5万亿tokens的数据量,进一步提升模型的推理能力。
第三阶段,通过加入高质量的长文本数据,扩展了上下文长度到32K,让Qwen3能够处理更长的输入,例如长篇文章或复杂的对话。
为了开发能够同时具备思考推理和快速响应能力的混合模型,Qwen3设计了一个四阶段后训练流程。
第一阶段,长链推理冷启动。通过微调多样化的推理数据,让模型具备了处理复杂任务的基本能力,包括数学、编程和逻辑推理等任务。
第二阶段,长思维链强化学习。利用强化学习进一步提升模型的推理能力,让模型能够在面对复杂任务时更加高效地寻找最佳答案。
第三阶段,思维模式融合。允许模型在面对不同任务时,灵活切换“思考模式”和“非思考模式”。思考模式下,模型逐步推理,适合复杂问题;而非思考模式下,模型则能快速作出响应,适合日常对话和简单问题。
第四阶段,通用强化学习。对20多个常见任务的强化学习微调,确保了Qwen3能够在不同应用场景下灵活应对,包括指令跟随、格式化输出和智能代理能力等。

目前,Qwen3已同步上线魔搭社区、HuggingFace、GitHub,并可在线体验。阿里官方网页版体验:https://chat.qwen.ai/


阿里官方发布的Qwen3参数文件,已同步上传至魔搭社区、HuggingFace和Ollama,全球开发者、研究机构和企业均可免费下载模型并商用,也可以通过阿里云百炼调用Qwen3的API服务。
魔搭社区:https://modelscope.cn/models?name=Qwen3
HuggingFace:https://huggingface.co/collections/Qwen
Ollama:https://ollama.com/library/qwen3
阿里提供了一个在HuggingFacetransformers中使用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)
要禁用思考模式,只需对参数 enable_thinking 进行如下修改。
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=False # True is the default value for enable_thinking.
)
对于部署,可以使用sglang>=0.4.6.post1或vllm>=0.8.4来创建一个与OpenAI API兼容的API endpoint。要禁用思考模式,您可以移除参数--reasoning-parser(以及--enable-reasoning)。
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
Qwen3在工具调用能力方面表现出色。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)