HuggingFace镜像/Qwen3.8-27B-FP8
模型介绍
文件和版本
分析

Qwen3.8-27B-FP8

[!Note]
本仓库包含后训练模型的 FP8 量化权重和配置文件,格式为 Hugging Face Transformers 格式。

这些产物兼容 Hugging Face Transformers、vLLM、SGLang、TokenSpeed 等框架。

量化方法采用块大小为 128 的细粒度 FP8 量化,其性能指标与原始模型几乎完全一致。

[!Tip]
对于需要托管式、可扩展推理服务且无需自行维护基础设施的用户,官方 Qwen API 服务由 Qwen Cloud 提供。

特别是,Qwen3.8-27B 将以托管版本的形式提供,并附带更多生产级功能,例如默认支持 100 万上下文长度、官方内置工具等。更多信息请参阅 Qwen3.8-27B 概览。该服务即将上线,敬请期待。

继 Qwen3.5 和 Qwen3.6 系列获得社区的广泛采用之后,我们很荣幸地推出 Qwen3.8——这是迄今为止 Qwen 开源模型家族中能力最强的一代。

基于 Qwen3.5 的架构基础,Qwen3.8 在编程、专业工作、科研以及长周期智能体任务方面均实现了显著的性能提升。Qwen3.8-27B 将这些进步浓缩到一个紧凑且易于部署的稠密模型中:它是一个原生视觉语言模型,能够理解图像和视频,支持灵活的思维控制,旨在以更高的可靠性完成复杂的多步骤任务。

Qwen3.8 亮点

Qwen3.8-27B 具备以下增强特性:

  • 核心能力:在编程、专业工作、科研及长周期智能体任务方面实现全面改进。
  • 智能体执行:更强的自主规划能力和更优的环境反馈处理能力,实现更可靠的端到端任务完成。
  • 下游兼容性:更广泛地支持主流评估框架和开发工具,使集成到现有技术栈更加便捷。
  • 灵活的思维控制:思考模式默认开启,可针对每次请求单独关闭;推理深度可通过 reasoning_effort 进行调节,历史消息中的推理上下文可通过 preserve_thinking 进行保留。
  • 视觉语言理解:原生支持图像和视频理解,涵盖从 STEM 图表、文档到小时级视频的多种场景。

模型概述

  • 类型:具备视觉编码器的因果语言模型
  • 训练阶段:预训练与后训练
  • 语言模型
    • 参数量:270亿
    • 隐藏层维度:5120
    • 词元嵌入维度:248,320(已填充)
    • 层数:64
    • 隐藏层布局:16 × (3 × (门控DeltaNet → 前馈网络) → 1 × (门控注意力 → 前馈网络))
    • 门控DeltaNet:
      • 线性注意力头数量:V为48,QK为16
      • 注意力头维度:128
    • 门控注意力:
      • 注意力头数量:Q为24,KV为4
      • 注意力头维度:256
      • 旋转位置嵌入维度:64
    • 前馈网络:
      • 中间层维度:17,408
    • 语言模型输出维度:248,320(已填充)
    • MTP(多词元预测):采用多步训练
  • 上下文长度:原生支持262,144,可扩展至1,000,000词元。

基准测试结果

文本性能

.vl-table th{font-size:15px!important;line-height:1.2} .vl-table td:not(.benchmark-cell):not([colspan]){font-size:15px;line-height:1.2;vertical-align:middle} .vl-table .benchmark-cell{padding:12px 10px 12px 18px!important;vertical-align:middle} .vl-table .benchmark-capability{font-size:15px;font-weight:600;line-height:1.22;color:#171717} .vl-table .benchmark-name{margin-top:4px;font-size:11px;font-weight:400;line-height:1.2;color:#6B6B6B} .vl-table .metric-stack{display:flex;flex-direction:column;gap:7px;padding:3px 0} .vl-table .metric-label{font-size:10px;font-weight:400;line-height:1.1;color:#777} .vl-table .metric-value{margin-top:2px;font-size:15px;line-height:1.15;color:#171717}
Qwen3.8-27BQwen3.6-27BQwen3.7-PlusMuse Glimmer-30BOpus4.6 Max
编程
智能体终端编程
Terminal Bench 2.1 (Terminus)
73.063.464.051.778.2
智能体编程
SWE-bench Pro
61.753.557.651.253.4
仓库级代码生成
NL2Repo-Bench
42.336.241.1--47.6
智能体编程
DeepSWE 1.1
42.213.314.2----
软件工程
QwenSWEBench
79.049.359.2--63.8
智能体
长周期办公任务
CoWorkBench
70.761.065.1--68.2
专业岗位任务
JobBench
33.421.827.6----
前沿智能体任务
Agents' Last Exam
Pass@1
20.4
得分
42.9
Pass@1
10.6
得分
27.3
Pass@1
13.2
得分
33.6
----
通用能力
指令遵循
IFBench
79.569.179.177.062.5
科学推理
GPQA Diamond
89.287.890.383.591.3
多学科推理
HLE
30.824.034.722.040.0
竞赛级编程
LiveCodeBench v6
90.383.989.6--88.8
  1. SWE-bench Pro:除 Opus4.6 Max 使用官方公布分数外,其余模型均使用 Claude Code 评测框架,设置 temp=1.0、top_p=0.95 及 256K 上下文窗口进行评测。已修正存在问题的任务,并基于修正后的基准对所有基线模型重新评测。
  2. NL2Repo-Bench:使用 Claude Code 评测框架评估。为防止奖励作弊,我们禁用了尝试访问特定仓库的 Bash 命令,例如 pip download、pip install 和 git clone。
  3. DeepSWE 1.1:使用 Claude Code 评测框架评估,设置 temp=1.0、top_p=0.95 及 256K 上下文窗口。
  4. QwenSWEBench:用于评估模型软件工程能力的内部编程基准。使用 Claude Code 评测框架评估,报告 avg@3,设置 8 小时超时、max_tokens=32,768、temperature=1.0 及 256K 上下文窗口。
  5. CoWorkBench:用于评估计算机科学、金融、法律、医学及其他生产力领域长周期任务的内部协作基准。
  6. HLE:由 GPT-4o 进行评判。
  7. 每行最佳结果以粗体标注。
  8. 空单元格(--)表示结果尚未获得或不适用。

视觉语言性能

Qwen3.8-27BQwen3.6-27BQwen3.7-PlusMuse Glimmer-30BOpus4.6 Max
代理式多模态智能
计算机操作
OSWorld-Verified
84.363.973.365.972.7
浏览器操作
WebArena-Verified
64.848.855.3----
移动设备操作
AndroidWorld
81.970.381.0--62.0
应用还原
RecreationBench
47.129.830.2----
多模态工具调用
ClawEval-MM
Pass@3
57.4
平均
56.9
Pass@3
42.6
平均
50.4
Pass@3
57.4
平均
60.1
--
Pass@3
52.5
平均
54.7
多模态软件工程
SWE-MM
38.625.730.0--27.1
可视化网页开发
Vision2Web
62.945.042.1----
通用多模态智能
视觉数学问题求解
MathVision
无思维链
90.0
带思维链
94.6
无思维链
85.1
无思维链
90.3
--
无思维链
65.5
通用视觉推理
BabyVision
无思维链
65.7
带思维链
85.6
无思维链
28.9
无思维链
64.7
带思维链
70.4
--
无思维链
12.6
科学图表分析
CharXiv (RQ)
不含CI
83.7
含CI
90.2
不含CI
78.4
不含CI
85.8
含CI
85.9
78.8
不含CI
66.0
文档智能
OmniDocBench 1.5
91.189.491.475.886.6
真实世界感知
RealWorldQA
85.984.186.9--73.9
具身智能
ERQA
65.562.569.8--40.8
  1. MathVision、BabyVision 和 CharXiv (RQ):在两种设置均可用的情况下,单元格分别报告“不含 CI”和“含 CI”的结果;否则,仅显示可用的设置。经人工复核后,MathVision 和 CharXiv (RQ) 中少量错误的标准答案标注已得到修正,这些基准测试中的所有报告分数均基于修正后的标注计算得出。
  2. MathVision:Qwen3.8-27B 使用固定提示词进行评估:“请逐步推理,并将最终答案放入 \boxed{} 中。”对于其余模型,我们报告两种提示词变体中得分较高的结果——一种包含 \boxed{} 格式要求,另一种不包含。
  3. WebArena-Verified:分数使用官方 WebArena-Verified 评分器在 OSWorld 框架下计算得出。
  4. RecreationBench:一个内部的长时序应用复刻基准测试,旨在评估混合代理在五个平台上的能力:桌面端(Ubuntu、macOS 和 Windows)、移动端(Android)以及 Web 端。
  5. ClawEval-MM:分数以“Pass@3 / 平均分”的形式报告。Pass@3 是指在三次试验中至少一次通过的任务百分比;平均分是三次试验中基准测试得分的平均值。
  6. Vision2Web:分数取前端、网页和网站三个类别的平均值。评估使用 Claude Code 框架,并由 gpt-5.4-2026-03-05 进行评判。
  7. SWE-MM:分数在 Claude Code 框架上使用 SWE-bench Multimodal 的公开开发集进行评估,并采用了 Claude Opus 4.7 系统卡片附录 8.3 中所述的修改。
  8. 空单元格 (--) 表示结果尚不可用或不适用。

快速开始

为简化集成流程,我们建议通过 API 使用 Qwen3.8。

部署 Qwen3.8

[!重要]
不同框架的推理效率和吞吐量差异显著。
建议使用最新版本的框架,以确保最佳性能和兼容性。
对于生产环境负载或高吞吐量场景,推荐使用专用推理引擎,如 SGLang、vLLM 或 TokenSpeed。

Qwen3.8 可部署于主流推理框架,例如:

  • SGLang:Qwen3.8 Cookbook
  • vLLM:Qwen3.8 Recipe
  • TokenSpeed:Qwen3.8 Recipe

API 使用

[!重要]
Qwen3.8 模型默认以思考模式运行,在生成最终回复之前,会先产生由 <think>\n...</think>\n\n 标记的思考内容。
如需禁用思考内容并直接获得回复,请参阅此处的示例。

[!提示]
我们建议在生成时使用以下采样参数组合:

  • 思考模式:temperature=1.0,top_p=0.95,top_k=20,min_p=0.0,presence_penalty=0.0,repetition_penalty=1.0
  • 指令(或非思考)模式:temperature=0.7,top_p=0.80,top_k=20,min_p=0.0,presence_penalty=1.5,repetition_penalty=1.0

请注意,不同推理框架对采样参数的支持程度有所差异。

Qwen3.8 官方支持 reasoning_effort 参数,可用于调整推理深度并控制成本:

  • xhigh(默认):适用于需要深入分析的复杂任务
    • medium:兼顾准确性与速度
    • low:面向速度和成本优化的高效推理

此外,preserve_thinking 默认对所有工作负载启用,以提供最佳的开箱即用体验。如需禁用保留思考功能,请参阅此处的示例。

[!提示]
在多轮智能体任务中,较低的推理强度并不总是能减少整体任务完成时间。虽然它可以加快单轮响应速度,但也可能导致分析不足、更多失败和重复重试,从而增加总延迟和令牌消耗。

聊天补全 API

聊天补全 API 可与大多数推理框架配合使用,也支持Qwen Cloud。
在开始之前,请确保已安装 OpenAI Python SDK,并已配置 API 密钥和 API 基础 URL,例如:

pip install -U openai

# Set the following accordingly
export OPENAI_BASE_URL='your-base-url'
export OPENAI_API_KEY='your-api-key'
纯文本输入
from openai import OpenAI
# Configured by environment variables
client = OpenAI()

messages = [{"role": "user", "content": "Write a Python function to merge two sorted linked lists."}]

completion = client.chat.completions.create(
    model="Qwen/Qwen3.8-27B-FP8",
    messages=messages,
    extra_body={
        "chat_template_kwargs": {
            "enable_thinking": True,  # on by default
            "preserve_thinking": True, # on by default
        },
    },
    reasoning_effort="xhigh",  # xhigh by default; supported levels are xhigh, medium, and low
    stream=True,
    stream_options={"include_usage": True},
)

reasoning_content = ""
answer_content = ""
is_answering = False
print("\n" + "=" * 20 + "Reasoning" + "=" * 20 + "\n")

for chunk in completion:
    if not chunk.choices:
        print("\nUsage:")
        print(chunk.usage)
        continue

    delta = chunk.choices[0].delta

    if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
        if not is_answering:
            print(delta.reasoning_content, end="", flush=True)
        reasoning_content += delta.reasoning_content
    elif hasattr(delta, "reasoning") and delta.reasoning is not None:
        if not is_answering:
            print(delta.reasoning, end="", flush=True)
        reasoning_content += delta.reasoning

    if hasattr(delta, "content") and delta.content:
        if not is_answering:
            print("\n" + "=" * 20 + "Answer" + "=" * 20 + "\n")
            is_answering = True
        print(delta.content, end="", flush=True)
        answer_content += delta.content

messages.append({
    "role": "assistant",
    "content": answer_content,
    "reasoning_content": reasoning_content,
    "reasoning": reasoning_content,
})
图像输入
from openai import OpenAI
# Configured by environment variables
client = OpenAI()

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image_url",
                "image_url": {
                    "url": "https://qianwen-res.oss-accelerate.aliyuncs.com/Qwen3.5/demo/CI_Demo/mathv-1327.jpg"
                }
            },
            {
                "type": "text",
                "text": "The centres of the four illustrated circles are in the corners of the square. The two big circles touch each other and also the two little circles. With which factor do you have to multiply the radii of the little circles to obtain the radius of the big circles?\nChoices:\n(A) $\\frac{2}{9}$\n(B) $\\sqrt{5}$\n(C) $0.8 \\cdot \\pi$\n(D) 2.5\n(E) $1+\\sqrt{2}$"
            }
        ]
    }
]

chat_response = client.chat.completions.create(
    model="Qwen/Qwen3.8-27B-FP8",
    messages=messages,
)
print("Chat response:", chat_response)
视频输入
from openai import OpenAI
# Configured by environment variables
client = OpenAI()

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "video_url",
                "video_url": {
                    "url": "https://qianwen-res.oss-accelerate.aliyuncs.com/Qwen3.5/demo/video/N1cdUjctpG8.mp4"
                }
            },
            {
                "type": "text",
                "text": "How many porcelain jars were discovered in the niches located in the primary chamber of the tomb?"
            }
        ]
    }
]

chat_response = client.chat.completions.create(
    model="Qwen/Qwen3.8-27B",
    messages=messages,
)

# When vLLM is launched with `--media-io-kwargs '{"video": {"num_frames": -1}}'`,
# video frame sampling can be configured via `extra_body` (e.g., by setting `fps`).
# This feature is currently supported only in vLLM.
#
# By default, `fps=2` and `do_sample_frames=True`.
# With `do_sample_frames=True`, you can customize the `fps` value to set your desired video sampling rate.
# chat_response = client.chat.completions.create(
#     model="Qwen/Qwen3.8-27B-FP8",
#     messages=messages,
#     extra_body={
#         "mm_processor_kwargs": {"fps": 2, "do_sample_frames": True},
#     }, 
# )

print("Chat response:", chat_response)
指令(或非思考)模式

Qwen3.8-27B 默认会在响应前进行思考。
您可以通过配置 API 参数,直接获取模型的无思考响应。
例如,

from openai import OpenAI
# Configured by environment variables
client = OpenAI()

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image_url",
                "image_url": {
                    "url": "https://qianwen-res.oss-accelerate.aliyuncs.com/Qwen3.5/demo/RealWorld/RealWorld-04.png"
                }
            },
            {
                "type": "text",
                "text": "Where is this?"
            }
        ]
    }
]

chat_response = client.chat.completions.create(
    model="Qwen/Qwen3.8-27B-FP8",
    messages=messages,
    temperature=0.7,
    top_p=0.8,
    presence_penalty=1.5,
    extra_body={
        "top_k": 20,
        "chat_template_kwargs": {"enable_thinking": False},
    }, 
)
print("Chat response:", chat_response)

[!Note]
如果您使用的是Qwen Cloud的API,除了更改model外,还请使用"enable_thinking": False,而非"chat_template_kwargs": {"enable_thinking": False}。

禁用保留思考

默认情况下,Qwen3.8会保留所有历史消息中的思考块,从而在对话过程中维持完整的推理轨迹。这种称为“保留思考”的行为可确保上下文连续性,特别适用于对决策一致性和减少冗余推理有较高要求的智能体场景。同时,它还能优化KV缓存利用率,在思考与非思考两种模式下均能提升推理效率。

如果您仅希望保留最新用户消息中的思考块,可以通过将preserve_thinking设置为False来禁用此功能:

from openai import OpenAI

# Configured by environment variables
client = OpenAI()
messages = [...]
chat_response = client.chat.completions.create(
    model="Qwen/Qwen3.8-27B-FP8",
    messages=messages,
    extra_body={
        "chat_template_kwargs": {"preserve_thinking": False},
    },
)
print("Chat response:", chat_response)

[!Note] 如果您使用的是千问云 API,除了修改 model 之外,请直接使用 "preserve_thinking": False,而无需将其包装在 chat_template_kwargs 中。

最佳实践

为获得最优性能,我们建议采用以下设置:

  1. 采样参数:我们建议使用以下采样参数组合:

    • 思考模式:temperature=1.0、top_p=0.95、top_k=20、min_p=0.0、presence_penalty=0.0、repetition_penalty=1.0
    • 指令(或非思考)模式:temperature=0.7、top_p=0.80、top_k=20、min_p=0.0、presence_penalty=1.5、repetition_penalty=1.0

    对于支持的框架,您可以将 presence_penalty 参数在 0 到 2 之间调整,以减少无休止的重复。然而,使用较高的值偶尔会导致语言混杂和模型性能轻微下降。

  2. 充足的输出长度:为优化智能体任务的性能,我们建议分配足够的输出长度,以便模型生成详细且全面的响应。对于支持为内部推理和最终输出分别设置 token 上限的框架,我们建议在 1M 上下文长度内采用以下配置:

    • 推理内容:将最大输出长度设置为 262,144 个 token。
    • 最终响应:将最大输出长度设置为 131,072 个 token。

    这些设置为复杂推理提供了必要的能力,同时确保为高质量的最终输出留出充足的空间。

  3. 处理超长文本:Qwen3.8-27B 原生支持最长 262,144 个 token 的上下文长度。对于总长度(含输入和输出)超过此限制的长时任务,我们建议使用 RoPE 缩放技术来有效处理长文本,例如 YaRN。

    目前多个推理框架已支持 YaRN,例如 vLLM、SGLang 和 TokenSpeed。 一般而言,在受支持的框架中启用 YaRN 有两种方式:

    • 修改模型配置文件:

      在 config.json 文件中,将 text_config 中的 rope_parameters 字段修改为:

      {
          "mrope_interleaved": true,
          "mrope_section": [
              11,
              11,
              10
          ],
          "rope_type": "yarn",
          "rope_theta": 10000000,
          "partial_rotary_factor": 0.25,
          "factor": 4.0,
          "original_max_position_embeddings": 262144,
      }
    • 传递命令行参数:

      对于 vLLM,您可以使用

      VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 vllm serve ... --hf-overrides '{"text_config": {"rope_parameters": {"mrope_interleaved": true, "mrope_section": [11, 11, 10], "rope_type": "yarn", "rope_theta": 10000000, "partial_rotary_factor": 0.25, "factor": 4.0, "original_max_position_embeddings": 262144}}}' --max-model-len 1000000  

      对于 SGLang,您可以使用

      SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1 python -m sglang.launch_server ... --json-model-override-args '{"text_config": {"rope_parameters": {"mrope_interleaved": true, "mrope_section": [11, 11, 10], "rope_type": "yarn", "rope_theta": 10000000, "partial_rotary_factor": 0.25, "factor": 4.0, "original_max_position_embeddings": 262144}}}' --context-length 1000000

      对于 TokenSpeed,您可以使用

      TOKENSPEED_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1 tokenspeed serve ... --hf-overrides '{"text_config": {"rope_parameters": {"mrope_interleaved": true, "mrope_section": [11, 11, 10], "rope_type": "yarn", "rope_theta": 10000000, "partial_rotary_factor": 0.25, "factor": 4.0, "original_max_position_embeddings": 262144}}}' --max-model-len 1000000  

    [!NOTE] 所有主流开源框架均实现了静态 YaRN,这意味着缩放因子不随输入长度变化,可能会对较短文本的性能产生影响。 我们建议仅在需要处理长上下文时才修改 rope_parameters 配置。 同时建议根据实际需要调整 factor。例如,如果您的应用场景中典型上下文长度为 524,288 个 token,则将 factor 设置为 2.0 会更为合适。

  4. 长视频理解:为优化纯文本和图像的推理效率,发布的 video_preprocessor_config.json 中的 size 参数配置较为保守。建议将 video_preprocessor_config 文件中的 longest_edge 参数设置为 469,762,048(对应 224k 视频 token),以便对小时级视频进行更高帧率的采样,从而获得更优性能。例如:

    {"longest_edge": 469762048, "shortest_edge": 4096}

    或者,通过引擎启动参数覆盖默认值。具体实现细节请参考:vLLM / SGLang。

引用

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

@misc{qwen38,
    title = {{Qwen3.8-Max}: A New Bar for Coding and Cowork},
    url = {https://qwen.ai/blog?id=qwen3.8},
    author = {{Qwen Team}},
    month = {August},
    year = {2026}
}