Q
Qwen/Qwen3-30B-A3B-Instruct-2507
模型介绍模型推理文件和版本分析
下载使用量0

Qwen3-30B-A3B-Instruct-2507

Chat

主要亮点

我们推出了Qwen3-30B-A3B非思考模式的更新版本,命名为Qwen3-30B-A3B-Instruct-2507,主要增强功能如下:

  • 通用能力显著提升,包括指令遵循、逻辑推理、文本理解、数学、科学、编码和工具使用。
  • 多语言长尾知识覆盖范围大幅扩展。
  • 在主观和开放式任务中与用户偏好的对齐度明显提高,能够提供更有帮助的响应和更高质量的文本生成。
  • 256K长上下文理解能力增强。

image/jpeg

模型概述

Qwen3-30B-A3B-Instruct-2507具有以下特点:

  • 类型:因果语言模型
  • 训练阶段:预训练和后训练
  • 参数数量:总计305亿,激活33亿
  • 参数数量(非嵌入):299亿
  • 层数:48
  • 注意力头数(GQA):Q头32个,KV头4个
  • 专家数量:128
  • 激活专家数量:8
  • 上下文长度:原生支持262,144 tokens

注意:此模型仅支持非思考模式,不会在输出中生成</think>superscript:块。同时,不再需要指定enable_thinking=False。

有关基准测试评估、硬件要求和推理性能等更多详细信息,请参阅我们的博客、GitHub和文档。

性能表现

Deepseek-V3-0324GPT-4o-0327Gemini-2.5-Flash Non-ThinkingQwen3-235B-A22B Non-ThinkingQwen3-30B-A3B Non-ThinkingQwen3-30B-A3B-Instruct-2507
知识能力
MMLU-Pro81.279.881.175.269.178.4
MMLU-Redux90.491.390.689.284.189.3
GPQA68.466.978.362.954.870.4
SuperGPQA57.351.054.648.242.253.4
推理能力
AIME2546.626.761.624.721.661.3
HMMT2527.57.945.810.012.043.0
ZebraLogic83.452.657.937.733.290.0
LiveBench 2024112566.963.769.162.559.469.0
编码能力
LiveCodeBench v6 (25.02-25.05)45.235.840.132.929.043.2
MultiPL-E82.282.777.779.374.683.8
Aider-Polyglot55.145.344.059.624.435.6
对齐能力
IFEval82.383.984.383.283.784.7
Arena-Hard v2*45.661.958.352.024.869.0
Creative Writing v381.684.984.680.468.186.0
WritingBench74.575.580.577.072.285.5
智能体能力
BFCL-v364.766.566.168.058.665.1
TAU1-Retail49.660.3#65.265.238.359.1
TAU1-Airline32.042.8#48.032.018.040.0
TAU2-Retail71.166.7#64.364.931.657.0
TAU2-Airline36.042.0#42.536.018.038.0
TAU2-Telecom34.029.8#16.924.618.412.3
多语言能力
MultiIF66.570.469.470.270.867.9
MMLU-ProX75.876.278.373.265.172.0
INCLUDE80.182.183.875.667.871.9
PolyMATH32.225.541.927.023.343.1

*:为保证可复现性,我们报告由GPT-4.1评估的胜率。

#:由于无法访问GPT-4o-0327的原生函数调用API,结果使用GPT-4o-20241120生成。

快速开始

Qwen3-MoE 的代码已集成到最新版的 Hugging Face transformers 中,建议您使用最新版本的 transformers。

若使用 transformers<4.51.0,您将遇到以下错误:

KeyError: 'qwen3_moe'

以下包含一个代码片段,展示了如何使用模型根据给定输入生成内容。

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "Qwen/Qwen3-30B-A3B-Instruct-2507"

# 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,
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)

# conduct text completion
generated_ids = model.generate(
    **model_inputs,
    max_new_tokens=16384
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist() 

content = tokenizer.decode(output_ids, skip_special_tokens=True)

print("content:", content)

在部署方面,您可以使用sglang>=0.4.6.post1或vllm>=0.8.5来创建兼容OpenAI的API端点:

  • SGLang:
    python -m sglang.launch_server --model-path Qwen/Qwen3-30B-A3B-Instruct-2507 --context-length 262144
  • vLLM:
    vllm serve Qwen/Qwen3-30B-A3B-Instruct-2507 --max-model-len 262144

注意:如果遇到内存不足(OOM)问题,请考虑将上下文长度减少到更小的值,例如32,768。

在本地使用方面,Ollama、LMStudio、MLX-LM、llama.cpp和KTransformers等应用程序也已支持Qwen3。

智能体使用

Qwen3在工具调用能力方面表现出色。我们建议使用Qwen-Agent以充分发挥Qwen3的智能体能力。Qwen-Agent在内部封装了工具调用模板和工具调用解析器,大大降低了编码复杂度。

要定义可用工具,您可以使用MCP配置文件,使用Qwen-Agent的集成工具,或自行集成其他工具。

from qwen_agent.agents import Assistant

# Define LLM
llm_cfg = {
    'model': 'Qwen3-30B-A3B-Instruct-2507',

    # Use a custom endpoint compatible with OpenAI API:
    'model_server': 'http://localhost:8000/v1',  # api_base
    'api_key': 'EMPTY',
}

# 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)

超长文本处理

为支持超长上下文处理(最长可达100万token),我们集成了两项关键技术:

  • Dual Chunk Attention(DCA,双分块注意力机制):一种长度外推方法,可将长序列分割为可管理的分块,同时保持全局连贯性。
  • MInference:一种稀疏注意力机制,通过聚焦关键token交互来降低计算开销。

这些创新共同显著提升了256K token以上序列的生成质量和推理效率。在接近100万token的序列上,该系统相比标准注意力实现可实现高达3倍的速度提升。

完整技术细节,请参见Qwen2.5-1M技术报告。

如何启用100万token上下文

[!NOTE] 若要有效处理100万token上下文,用户需配备约240 GB的总GPU内存。这部分内存将用于存储模型权重、KV缓存以及满足峰值激活内存需求。

步骤1:更新配置文件

下载模型并将您的config.json内容替换为config_1m.json,后者包含了长度外推和稀疏注意力的相关配置。

export MODELNAME=Qwen3-30B-A3B-Instruct-2507
huggingface-cli download Qwen/${MODELNAME} --local-dir ${MODELNAME}
mv ${MODELNAME}/config.json ${MODELNAME}/config.json.bak
mv ${MODELNAME}/config_1m.json ${MODELNAME}/config.json

步骤 2:启动模型服务

更新配置后,请使用 vLLM 或 SGLang 来部署模型。

选项 1:使用 vLLM

如需运行支持 1M 上下文的 Qwen:

pip install -U vllm \
    --torch-backend=auto \
    --extra-index-url https://wheels.vllm.ai/nightly

然后启用双块闪存注意力启动服务器:

VLLM_ATTENTION_BACKEND=DUAL_CHUNK_FLASH_ATTN VLLM_USE_V1=0 \
vllm serve ./Qwen3-30B-A3B-Instruct-2507 \
  --tensor-parallel-size 4 \
  --max-model-len 1010000 \
  --enable-chunked-prefill \
  --max-num-batched-tokens 131072 \
  --enforce-eager \
  --max-num-seqs 1 \
  --gpu-memory-utilization 0.85
关键参数
参数用途
VLLM_ATTENTION_BACKEND=DUAL_CHUNK_FLASH_ATTN启用自定义注意力内核以提高长上下文效率
--max-model-len 1010000将最大上下文长度设置为约 100 万 tokens
--enable-chunked-prefill允许对极长输入进行分块预填充(避免内存溢出)
--max-num-batched-tokens 131072控制预填充期间的批大小;平衡吞吐量和内存
--enforce-eager禁用 CUDA 图捕获(双分块注意力需要)
--max-num-seqs 1由于极高的内存占用,限制并发序列数
--gpu-memory-utilization 0.85设置用于模型执行器的 GPU 内存比例

选项 2:使用 SGLang

首先,克隆并安装专用分支:

git clone https://github.com/sgl-project/sglang.git
cd sglang
pip install -e "python[all]"

使用 DCA 支持启动服务器:

python3 -m sglang.launch_server \
    --model-path ./Qwen3-30B-A3B-Instruct-2507 \
    --context-length 1010000 \
    --mem-frac 0.75 \
    --attention-backend dual_chunk_flash_attn \
    --tp 4 \
    --chunked-prefill-size 131072
关键参数
参数用途
--attention-backend dual_chunk_flash_attn激活双分块闪存注意力
--context-length 1010000定义最大输入长度
--mem-frac 0.75用于静态分配的内存比例(模型权重和KV缓存内存池)。如果遇到内存不足错误,请使用较小的值。
--tp 4张量并行大小(与模型分片匹配)
--chunked-prefill-size 131072用于处理长输入而不发生内存溢出的预填充分块大小

故障排除:

  1. 遇到错误:“The model's max sequence length (xxxxx) is larger than the maximum number of tokens that can be stored in the KV cache.”(模型的最大序列长度(xxxxx)大于可存储在KV缓存中的最大令牌数。)或 “RuntimeError: Not enough memory. Please try to increase --mem-fraction-static.”(运行时错误:内存不足。请尝试增加 --mem-fraction-static。)

    为KV缓存预留的显存不足。

    • vLLM:考虑减小 max_model_len 或增加 tensor_parallel_size 与 gpu_memory_utilization。或者,您可以减小 max_num_batched_tokens,但这可能会显著降低推理速度。
    • SGLang:考虑减小 context-length 或增加 tp 与 mem-frac。或者,您可以减小 chunked-prefill-size,但这可能会显著降低推理速度。
  2. 遇到错误:“torch.OutOfMemoryError: CUDA out of memory.”(torch内存不足错误:CUDA内存不足。)

    为激活权重预留的显存不足。您可以尝试降低 gpu_memory_utilization 或 mem-frac,但请注意这可能会减少可用于KV缓存的显存。

  3. 遇到错误:“Input prompt (xxxxx tokens) + lookahead slots (0) is too long and exceeds the capacity of the block manager.”(输入提示(xxxxx个令牌)+ 前瞻槽位(0)过长,超出了块管理器的容量。)或 “The input (xxx tokens) is longer than the model's context length (xxx tokens).”(输入(xxx个令牌)长于模型的上下文长度(xxx个令牌)。)

    输入过长。考虑使用较短的序列或增加 max_model_len 或 context-length。

长上下文性能

我们在 RULER 基准测试的100万版本上对模型进行了测试。

模型名称平均准确率4千8千16千32千64千96千128千192千256千384千512千640千768千896千1000千
Qwen3-30B-A3B (Non-Thinking)72.097.196.195.092.282.679.776.970.266.361.955.452.651.552.050.9
Qwen3-30B-A3B-Instruct-2507 (Full Attention)86.898.096.796.997.293.491.089.189.882.583.678.479.777.675.772.8
Qwen3-30B-A3B-Instruct-2507 (Sparse Attention)86.898.097.196.395.193.692.588.187.782.985.780.780.076.975.572.2
  • 所有模型均在启用双分块注意力(Dual Chunk Attention)的情况下进行评估。
  • 由于评估耗时,我们对每个长度使用260个样本(13个子任务,每个子任务20个样本)。

最佳实践

为实现最佳性能,我们建议采用以下设置:

  1. 采样参数:

    • 建议使用 Temperature=0.7、TopP=0.8、TopK=20 和 MinP=0。
    • 在支持的框架中,可将 presence_penalty 参数调整为 0 到 2 之间,以减少无意义的重复。但需注意,较高的参数值偶尔可能导致语言混杂,并略微降低模型性能。
  2. 充足的输出长度:对于大多数查询,建议使用 16,384 个 token 的输出长度,这对于指令模型而言已足够。

  3. 标准化输出格式:在进行基准测试时,建议通过提示词标准化模型输出。

    • 数学问题:在提示词中包含“请逐步推理,并将最终答案放在 \boxed{} 内。”
    • 多项选择题:在提示词中添加以下 JSON 结构以标准化响应:“请在 answer 字段中仅用选项字母展示您的选择,例如:"answer": "C"。”

引用

如果您觉得我们的工作有帮助,欢迎引用。

@misc{qwen3technicalreport,
      title={Qwen3 Technical Report}, 
      author={Qwen Team},
      year={2025},
      eprint={2505.09388},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2505.09388}, 
}