經過后訓練的模型,例如 Qwen3-30B-A3B,以及它們的預訓練基座模型(如 Qwen3-30B-A3B-Base),現已在 Hugging Face、ModelScope 和 Kaggle 等平臺上開放使用。對于部署,我們推薦使用 SGLang 和 vLLM 等框架;而對于本地使用,像 Ollama、LMStudio、MLX、llama.cpp 和 KTransformers 這樣的工具也非常值得推薦。這些選項確保用戶可以輕松將 Qwen3 集成到他們的工作流程中,無論是用于研究、開發還是生產環境。

我們相信,Qwen3 的發布和開源將極大地推動大型基礎模型的研究與開發。我們的目標是為全球的研究人員、開發者和組織賦能,幫助他們利用這些前沿模型構建創新解決方案。

目前,全球開發者、研究機構和企業均可免費在魔搭社區、HuggingFace等平臺下載模型并商用,也可以通過阿里云百煉調用Qwen3的API服務。個人用戶可立即通過通義APP直接體驗Qwen3,夸克也即將全線接入Qwen3。

核心亮點

多種思考模式

Qwen3 模型支持兩種思考模式:

1. 思考模式:在這種模式下,模型會逐步推理,經過深思熟慮后給出最終答案。這種方法非常適合需要深入思考的復雜問題。

2. 非思考模式:在此模式中,模型提供快速、近乎即時的響應,適用于那些對速度要求高于深度的簡單問題。

這種靈活性使用戶能夠根據具體任務控制模型進行“思考”的程度。例如,復雜的問題可以通過擴展推理步驟來解決,而簡單的問題則可以直接快速作答,無需延遲。至關重要的是,這兩種模式的結合大大增強了模型實現穩定且高效的“思考預算”控制能力。如上文所述,Qwen3 展現出可擴展且平滑的性能提升,這與分配的計算推理預算直接相關。這樣的設計讓用戶能夠更輕松地為不同任務配置特定的預算,在成本效益和推理質量之間實現更優的平衡。

多語言

Qwen3 模型支持 119 種語言和方言。這一廣泛的多語言能力為國際應用開辟了新的可能性,讓全球用戶都能受益于這些模型的強大功能。

增強的 Agent 能力

我們優化了 Qwen3 模型的 Agent 和 代碼能力,同時也加強了對 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 Dense 基礎模型的整體性能與參數更多的Qwen2.5基礎模型相當。例如,Qwen3-1.7B/4B/8B/14B/32B-Base分別與Qwen2.5-3B/7B/14B/32B/72B-Base 表現相當。特別是在 STEM、編碼和推理等領域,Qwen3 Dense 基礎模型的表現甚至超過了更大規模的 Qwen2.5 模型。對于 Qwen3 MoE 基礎模型,它們在僅使用 10% 激活參數的情況下達到了與 Qwen2.5 Dense 基礎模型相似的性能。這帶來了訓練和推理成本的顯著節省。

后訓練

為了開發能夠同時具備思考推理和快速響應能力的混合模型,我們實施了一個四階段的訓練流程。該流程包括:(1)長思維鏈冷啟動,(2)長思維鏈強化學習,(3)思維模式融合,以及(4)通用強化學習。

在第一階段,我們使用多樣的的長思維鏈數據對模型進行了微調,涵蓋了數學、代碼、邏輯推理和 STEM 問題等多種任務和領域。這一過程旨在為模型配備基本的推理能力。第二階段的重點是大規模強化學習,利用基于規則的獎勵來增強模型的探索和鉆研能力。

在第三階段,我們在一份包括長思維鏈數據和常用的指令微調數據的組合數據上對模型進行微調,將非思考模式整合到思考模型中。確保了推理和快速響應能力的無縫結合。最后,在第四階段,我們在包括指令遵循、格式遵循和 Agent 能力等在內的 20 多個通用領域的任務上應用了強化學習,以進一步增強模型的通用能力并糾正不良行為。

開始使用 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 兼容的 API endpoint:

python -m sglang.launch_server --model-path Qwen/Qwen3-30B-A3B --reasoning-parser qwen3
vllm serve Qwen/Qwen3-30B-A3B --enable-reasoning --reasoning-parser deepseek_r1

要禁用思考模式,您可以移除參數 –reasoning-parser(以及 –enable-reasoning)。

如果用于本地開發,您可以通過運行簡單的命令 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="Qwen3-30B-A3B/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}")

Agent 示例

Qwen3 在工具調用能力方面表現出色。我們推薦使用 Qwen-Agent 來充分發揮 Qwen3 的 Agent 能力。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)旅程中的一個重要里程碑。通過擴大預訓練和強化學習的規模,我們實現了更高層次的智能。我們無縫集成了思考模式與非思考模式,為用戶提供了靈活控制思考預算的能力。此外,我們還擴展了對多種語言的支持,幫助全球更多用戶。

展望未來,我們計劃從多個維度提升我們的模型。這包括優化模型架構和訓練方法,以實現幾個關鍵目標:擴展數據規模、增加模型大小、延長上下文長度、拓寬模態范圍,并利用環境反饋推進強化學習以進行長周期推理。我們認為,我們正從專注于訓練模型的時代過渡到以訓練 Agent 為中心的時代。我們的下一代迭代將為大家的工作和生活帶來有意義的進步。

文章轉載自: 通義千問Qwen3,開源!

上一篇:

什么是GGUF格式?大模型文件存儲新標準解析

下一篇:

MCP 協議:為什么 Streamable HTTP 是最佳選擇?
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費