跳到正文
原文
通义千问 Qwen:Blog·· 2025-04-29精选AI 评分75

阿里千问发布 Qwen3 系列,8 款模型开放权重,官方称对标 DeepSeek-R1 与 o1

Qwen3: Think Deeper, Act Faster

文章要点
  • 1千问发布 Qwen3 系列 8 款模型,官方称旗舰评测对标 DeepSeek-R1、o1 等一线模型
  • 22 个 MoE 加 6 个 dense 模型以 Apache 2.0 开放权重,覆盖 Qwen3-0.6B 到 Qwen3-235B-A22B
  • 3系列支持思考与非思考双模式,可按轮次切换,官方称思考预算与性能平滑相关,便于控制成本
  • 4预训练数据约 36 万亿 token,官方称 MoE 基座以 10% 激活参数达到 Qwen2.5 dense 基座性能
决策要点

千问把开源权重模型推到对标闭源一线的位置,混合思考模式让推理深度变成可配置的成本项。

  • 影响:MoE 架构以 10% 激活参数对齐 dense 基座,官方称训练与推理成本显著节省;Apache 2.0 允许商用与私有化部署;双模式便于按任务难度分配推理预算,压低单次调用成本。
  • 参考:可考虑把 Qwen3-30B-A3B 列入本地化试点,用 SGLang 或 vLLM 起服务对比现有模型;值得按任务难度拆分场景,复杂推理开思考模式、简单任务用 /no_think 省算力,并核算 token 成本差。
  • 依据:性能对比与成本节省均为官方博客自述口径,暂无独立验证;模型规格、Apache 2.0 许可与 36 万亿 token 预训练数据为官方公布参数。
正文 · AI 翻译
Qwen3 Main Image

QWEN CHAT GitHub Hugging Face ModelScope Kaggle 演示 DISCORD

简介

今天,我们很高兴地宣布 Qwen3 正式发布,它是 Qwen 大语言模型家族的最新成员。我们的旗舰模型 Qwen3-235B-A22B 在编码、数学、通用能力等基准评测中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等其他顶级模型相比,取得了极具竞争力的成绩。此外,小型 MoE 模型 Qwen3-30B-A3B 超越了拥有 10 倍激活参数量的 QwQ-32B,即便是 Qwen3-4B 这样的微型模型,其性能也能与 Qwen2.5-72B-Instruct 相媲美。

我们正以开放权重的方式发布两款 MoE 模型:Qwen3-235B-A22B,一款总参数量为 2350 亿、激活参数量为 220 亿的大型模型;以及 Qwen3-30B-A3B,一款总参数量为 300 亿、激活参数量为 30 亿的较小 MoE 模型。此外,还有六款稠密模型同样开放权重,包括 Qwen3-32B、Qwen3-14B、Qwen3-8B、Qwen3-4B、Qwen3-1.7B 和 Qwen3-0.6B,均采用 Apache 2.0 许可证。

模型层数注意力头数(Q / KV)Tie Embedding上下文长度
Qwen3-0.6B2816 / 8是32K
Qwen3-1.7B2816 / 8是32K
Qwen3-4B3632 / 8是32K
Qwen3-8B3632 / 8否128K
Qwen3-14B4040 / 8否128K
Qwen3-32B6464 / 8否128K
模型层数注意力头数(Q / KV)# 专家数(总数 / 激活数)上下文长度
Qwen3-30B-A3B4832 / 4128 / 8128K
Qwen3-235B-A22B9464 / 4128 / 8128K

经过后训练的模型(如 Qwen3-30B-A3B)及其对应的预训练版本(例如 Qwen3-30B-A3B-Base),现已在 Hugging Face、ModelScope 和 Kaggle 等平台上可用。部署方面,我们推荐使用 SGLang 和 vLLM 等框架。本地使用方面,强烈推荐 Ollama、LMStudio、MLX、llama.cpp 和 KTransformers 等工具。这些选择确保用户无论是在研究、开发还是生产环境中,都能轻松地将 Qwen3 集成到自己的工作流程中。

我们相信,Qwen3 的发布与开源将显著推动大型基础模型的研究与发展。我们的目标是助力全球的研究人员、开发者和组织,利用这些尖端模型构建创新的解决方案。

欢迎在 Qwen Chat 网页版(chat.qwen.ai)和移动 APP 中体验 Qwen3!

主要特性

  • 混合思考模式

Qwen3 模型引入了一种混合式的问题解决方法。它们支持两种模式:

  1. 思考模式:在此模式下,模型会花费时间逐步推理,然后才给出最终答案。这非常适合需要深入思考的复杂问题。
  2. 非思考模式:在此模式下,模型提供快速、近乎即时的响应,适合那些速度比深度更重要的简单问题。

这种灵活性使用户能够根据手头的任务控制模型进行多少“思考”。例如,较难的问题可以通过扩展推理来解决,而较简单的问题则可以直接回答、无需延迟。至关重要的是,这两种模式的结合极大地增强了模型实现稳定且高效的思考预算控制的能力。如上文所示,Qwen3 展现出可扩展且平滑的性能提升,这与所分配的计算推理预算直接相关。这种设计使用户能够更轻松地配置针对特定任务的预算,在成本效率和推理质量之间实现更优的平衡。

  • 多语言支持

Qwen3 模型支持 119 种语言和方言。这种广泛的多语言能力为国际应用开辟了新的可能,让全球用户都能受益于这些模型的强大功能。

语系语言 & 方言
印欧语系英语、法语、葡萄牙语、德语、罗马尼亚语、瑞典语、丹麦语、保加利亚语、俄语、捷克语、希腊语、乌克兰语、西班牙语、荷兰语、斯洛伐克语、克罗地亚语、波兰语、立陶宛语、挪威语(Bokmål)、挪威语(Nynorsk)、波斯语、斯洛文尼亚语、古吉拉特语、拉脱维亚语、意大利语、奥克语、尼泊尔语、马拉地语、白俄罗斯语、塞尔维亚语、卢森堡语、威尼托语、阿萨姆语、威尔士语、西里西亚语、阿斯图里亚斯语、恰蒂斯加尔语、阿瓦德语、迈蒂利语、博杰普尔语、信德语、爱尔兰语、法罗语、印地语、旁遮普语、孟加拉语、奥里亚语、塔吉克语、东意第绪语、伦巴第语、利古里亚语、西西里语、弗留利语、撒丁语、加利西亚语、加泰罗尼亚语、冰岛语、托斯克阿尔巴尼亚语、林堡语、达里语、南非荷兰语、马其顿语、僧伽罗语、乌尔都语、马加希语、波斯尼亚语、亚美尼亚语
汉藏语系汉语(简体中文、繁体中文、粤语)、缅甸语
亚非语系阿拉伯语(标准语、纳季迪方言、黎凡特方言、埃及方言、摩洛哥方言、美索不达米亚方言、塔伊兹-亚丁方言、突尼斯方言)、希伯来语、马耳他语
南岛语系印度尼西亚语、马来语、他加禄语、宿务语、爪哇语、巽他语、米南加保语、巴厘语、班查尔语、邦阿西楠语、伊洛科语、瓦瑞语(菲律宾)
达罗毗荼语系泰米尔语、泰卢固语、卡纳达语、马拉雅拉姆语
突厥语系土耳其语、北阿塞拜疆语、北乌兹别克语、哈萨克语、巴什基尔语、鞑靼语
侗台语系泰语、老挝语
乌拉尔语系芬兰语、爱沙尼亚语、匈牙利语
南亚语系越南语、高棉语
其他日语、韩语、格鲁吉亚语、巴斯克语、海地克里奥尔语、帕皮阿门托语、佛得角克里奥尔语、巴布亚皮钦语、斯瓦希里语
  • 增强的智能体能力

我们对 Qwen3 模型在编程和智能体能力方面进行了优化,同时也加强了对 MCP 的支持。下面我们提供了一些示例,展示 Qwen3 如何思考并与环境交互。

预训练

在预训练方面,Qwen3 的数据集相比 Qwen2.5 有了显著扩展。Qwen2.5 在 18 万亿个 token 上进行了预训练,而 Qwen3 使用了近两倍的数据量,约 36 万亿个 token,覆盖 119 种语言和方言。为了构建这一庞大的数据集,我们不仅从网络上收集数据,还从类 PDF 文档中收集数据。我们使用 Qwen2.5-VL 从这些文档中提取文本,并使用 Qwen2.5 提升所提取内容的质量。为了增加数学和代码数据的数量,我们使用 Qwen2.5-Math 和 Qwen2.5-Coder 生成了合成数据,其中包括教科书、问答对和代码片段。

预训练过程分为三个阶段。在第一阶段(S1),模型在超过 30 万亿 token 的数据上进行了预训练,上下文长度为 4K token。这一阶段为模型提供了基础的语言能力和通用知识。在第二阶段(S2),我们改进了数据集,提高了知识密集型数据的比例,例如 STEM、编程和推理任务。随后,模型又在额外 5 万亿 token 的数据上进行了预训练。在最后一个阶段,我们使用高质量的长上下文数据将上下文长度扩展到 32K token。这确保了模型能够有效处理更长的输入。

得益于模型架构的进步、训练数据的增加以及更有效的训练方法,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 稠密基础模型相似的性能。这在训练和推理成本上都带来了显著节省。

后训练

为了开发出既能进行逐步推理又能快速响应的混合模型,我们实施了四阶段的训练流程。该流程包括:(1) 长思维链(CoT)冷启动,(2) 基于推理的强化学习(RL),(3) 思考模式融合,以及 (4) 通用强化学习。

在第一阶段,我们使用多样化的长 CoT 数据对模型进行了微调,涵盖数学、编程、逻辑推理和 STEM 问题等多种任务和领域。这一过程旨在让模型具备基础的推理能力。第二阶段专注于为强化学习扩大计算资源规模,利用基于规则的奖励来增强模型的探索和利用能力。

在第三阶段,我们通过在长 CoT 数据与常用指令微调数据的组合上对思考模型进行微调,将非思考能力整合到思考模型中。这些数据由第二阶段增强后的思考模型生成,确保了推理能力与快速响应能力的无缝融合。最后,在第四阶段,我们在 20 多个通用领域的任务上应用了强化学习,以进一步增强模型的通用能力并纠正不良行为。这些任务包括指令遵循、格式遵循以及智能体(agent)能力等。

使用 Qwen3 进行开发

下面是一个简单的指南,帮助你在不同的框架上使用 Qwen3。首先,我们提供了一个在 Hugging Face transformers 中使用 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 端点:

  • 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
    

如果你将其用于本地开发,可以通过运行一条简单的命令 ollama run qwen3:30b-a3b 来使用 ollama 与模型互动,或者你也可以使用 LMStudio,或使用 llama.cpp 和 ktransformers 在本地进行构建。

高级用法

我们提供了一种软切换机制,允许用户在 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)
        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}")

智能体用法

Qwen3 在工具调用能力方面表现出色。我们推荐使用 Qwen-Agent 来充分发挥 Qwen3 的智能体能力。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)

Qwen 的朋友们

感谢众多朋友的支持。没有朋友们,就没有 Qwen!我们欢迎更多个人或组织加入我们的社区,帮助我们变得更好!

未来工作

Qwen3 代表了我们在迈向通用人工智能(AGI)和超级人工智能(ASI)道路上的一个重要里程碑。通过同时扩大预训练和强化学习(RL)的规模,我们实现了更高水平的智能。我们无缝集成了思考与非思考模式,让用户能够灵活地控制思考预算。此外,我们扩大了对多种语言的支持,提升了全球可访问性。

展望未来,我们希望在多个维度上提升我们的模型。这包括改进模型架构和训练方法,以实现以下几个关键目标:扩展数据规模、增大模型尺寸、延长上下文长度、拓宽模态范围,以及推进基于环境反馈的强化学习以实现长程推理。我们相信,我们正在从专注于训练模型的时代过渡到以训练智能体为中心的时代。我们的下一个版本有望为大家的工作和生活带来有意义的进步。

来源:通义千问 Qwen:Blog · qwenlm.github.io