文章摘要
技术团队针对Qwen3.8-27B原模型遇不会的题目易陷入超长无效推理、浪费计算资源的问题,历时三周经多轮试错,采用精准靶向优化方案,在不明显损失基座能力的前提下有效压制了无效长思考,优化后模型正确率提升,已完成分档量化并开源。

针对一款经过多轮后训练的大模型,如何在不损失核心推理能力的前提下,优化其无效的超长推理行为?近期有技术团队针对Qwen3.8-27B模型展开了针对性优化,整个过程历时三周,最终实现了推理效率与模型性能的平衡。本次优化后的模型已开源共享。

https://modelscope.cn/models/Merkyor/Qwen3.8-27B-EfficientThink-K3-Opus5-Grok4.6-GPT5.6Sol-SFT-SimPO-DFlash2

原版Qwen3.8-27B模型在GPQA测试中暴露出明显的推理效率问题:答对的164道题目,推理过程的中位数仅为3627 tokens,回答速度较快;但答错的34道题,推理中位数直接达到32768 tokens,遇到不会的题目就会陷入长时间无效思考。更关键的是,在26个触发32K上下文截断的案例中,有22个最终答错,完全是浪费计算资源的无效推理。即使经过第三周的SFT和SimPO训练,这种模式依然存在:答对题目的推理中位数稳定在4K左右,答错的依然停留在32K,甚至会出现答案已经生成却反复重启推理,最终无法正常提交结果的情况。

第一阶段:低剂量微调的尝试

第一周团队尝试了低剂量的SFT微调,初衷是在不破坏模型核心能力的前提下,减少无效推理。但最终效果并不理想:仅使用了32到130条规模的小型测试数据,RL训练也只推进到5/24个题组,没有形成完整的GPQA对比结果。虽然模型没有出现明显的能力损失,但无效推理的问题也没有得到改善。事后复盘发现,问题出在训练数据不够精准:模型只看到了更短的答案,却没有明确区分哪些推理路径需要保留,哪些错误的搜索行为需要修正,相当于用药却没有找准病灶。

第二阶段:剂量失衡的教训

第二周团队加大了SFT的训练剂量,这次效果变得明显,但同时也带来了新的问题:在同一套GPQA测试中,官方原版模型的正确率为166/198,加大剂量SFT后正确率下降到148/198,减少了18道正确题;与此同时,推理的平均token数从10301降到4123,中位数从6330降到1576,虽然思考量压下去了六成,但能力损失超过9个百分点。后续尝试RLVR和SimPO也出现了类似的情况:RLVR将GPQA正确率拉回158/198,但依然比原版少8道题,而且推理的P95值反而从16626升到20912,长尾无效推理的问题反而更严重了。团队意识到,这款已经经过多轮后训练的27B模型,稍微调整剂量或者数据配比,就很容易顾此失彼,平衡难度极大。

第三阶段:精准靶向的优化方案

第三周团队调整了思路,不再盲目调整训练剂量,而是先彻底定位模型的问题病灶:首先让模型自己完成题目,保留其正确的推理轨迹作为基座;对于答错、触发截断、空答、答后重开的错误轨迹,单独挑出来交给教师模型修改成完整、可验证的正确解法。K3、Grok 4.6、Opus 5负责修复失败轨迹,GPT-5.6 Sol做最终复核,剔除逻辑和答案站不住脚的样本。

最终冻结的训练数据共有1905条,来源分为三类:

数据角色 条数 占比
27B原生正确轨迹 894 46.9%
同题病灶修复轨迹 176 9.2%
独立教师优秀轨迹 835 43.8%

其中176条同题修复轨迹中,Grok负责86条、Opus 5负责58条、K3负责32条;835条独立教师轨迹中,Grok 390条、GPT-5.6 Sol 221条、K3 149条,其余经过复核的教师轨迹75条。按题型划分,代码921条、科学567条、通识206条,其余任务211条。

训练数据的推理长度分布也经过了精心设计:8K以上的轨迹仅占14.2%,却贡献了47.2%的推理token,既通过短中长度的轨迹拉回了模型的整体推理节奏,又保留了少量真正复杂的长轨迹,避免模型被训练成遇到难题就只写短回答的情况。

经过这一轮SFT训练后,团队终于看到了正向效果:完整GPQA测试达到168/198,平均推理token数为10264,全程没有出现请求超时或严格循环的情况,解决了之前长时间无法完成完整测评的问题。不过模型还没有完全达标:仍有27个32K截断案例、27个空final提交、23个不可解析结果、42个答后重开的情况,少数难题依然会在找到答案后继续无效搜索,直到触发上下文上限。

RLVR训练与偏好数据准备

之后团队尝试了RLVR训练,希望一次性解决剩余的问题,但P50、P75、P100三个节点的测试结果都没能通过能力检查,最终没有保留这些节点。不过这次训练并非毫无收获:团队梳理出了核心病灶、能力保护边界以及需要避免误伤的长推理场景,后续用于SimPO训练的110对偏好数据,正是从这次训练的成果中筛选出来的。

2026-09-02,最终的RLVR训练数据通过独立审计并冻结,共计40个训练组,包含16组核心病灶、18组A组数据、6组能力保护数据,共有640条唯一轨迹、896次训练曝光、28个optimizer steps,题型覆盖代码20、科学18、通识2,其中16组核心病灶由8组代码和8组科学组成。奖励设置上,正确且规范提交的样本得1.05,普通错误得0,超长截断、空答、无提交、答后重开等病灶样本得-0.15,惩罚仅记一次且不叠加,既复刻了稳定的训练结构,又强化了病灶信号,没有将“长推理”直接视为负例。同时冻结了100个诊断pair,覆盖63道题,包含人工确认的“答案已确定仍反复重开”的负例样本,作为审计与后备偏好资产。

最终SimPO微调:精准修复行为长尾

RLVR训练失败后,团队回到已经验证有效的SFT BF16模型,不再尝试失败的节点。最终选择使用110对经过筛选的偏好数据进行轻量的SimPO微调,仅训练5个optimizer steps,每步22对数据,固定为代码12、科学8、通识2。

这110对偏好数据覆盖73道题,其中代码60对、科学40对、通识10对,包含57对病灶修复数据和53对能力保护数据,同时通过污染审计确认没有与测试题重合。团队惩罚的不是“长回答”,而是“没有完成任务”:chosen样本必须逻辑和答案都正确且正常提交,rejected样本可以很长,只要是模型真实暴露的失败轨迹,甚至保留了36条超过32768 tokens的rejected轨迹,让模型清晰看到自己的卡顿位置,而不是提前截断负例掩盖问题。

训练参数设置为:从SFT的final1905-p50-bf16-v1纯BF16模型起步,使用LoRA r=16、alpha=32、dropout=0,覆盖12个目标模块;SimPO使用beta=1、gamma=0.2,优化器为AdamW,梯度裁剪0.5。采用双卡BF16训练,使用FSDP FULL_SHARD、FLA与reentrant gradient checkpointing,学习率采用短warm-up后平滑收尾的策略,从2.5e-7逐步调整到7.3223e-8,全程没有出现OOM、NaN等问题,总耗时约3851秒。

训练效果验证

在SimPO训练到162/198题时,对比同一组题目的数据可以看到:正确率从142/162提升到146/162,增加了4道正确题;平均推理token数从8351.8降到7408,中位数从3842.5降到3124,P90从32133降到26153;32K截断、空final、不可解析、答后重开等问题都有明显减少,逐题迁移显示有5道错题变对、1道对题变错,净增4道正确题,且变化主要集中在拖沓的长尾推理,没有砍短正常的推理过程。

最终完成全部198题测试后,SimPO版本的正确率达到171/198,相比SFT版本增加3道正确题;平均推理token数降到9556,32K截断降到21,空final、不可解析、答后重开等问题均有减少,全程没有超时或严格循环的情况。推理中位数为4788.5,P90为32765.3,依然保留了极难题的长推理能力,没有将所有回答都训练成短答案。

三阶段全量成绩对比

阶段 GPQA(198题) MMLU(500题) LCB(100题)
原版Qwen3.8-27B 164/198,82.83% 451/500,90.20% 69/100,69.00%
第三周SFT 168/198,84.85% 445/500,89.00% 73/100,73.00%
最终SimPO 171/198,86.36% 442/500,88.40% 74/100,74.00%

整体来看,模型的能力没有出现明显的坍塌:GPQA和LCB的正确率均有提升,MMLU略有小幅下降,但没有出现第二阶段那样的大幅能力损失。训练的核心目标是让科学推理和代码任务更容易走到正确闭环,而不是统一压缩模型的推理长度。

量化优化的踩坑与实践

训练完成后,团队原本以为量化只是简单压缩模型体积,但很快遇到了多个坑:如果认错模型结构,将多模态wrapper当成文本模型量化,会出现大量异常输出;如果平均压缩每一层,会破坏之前刚保住的科学推理、代码能力和长推理效果。因此量化也需要遵循精准靶向的思路:普通tensor负责节省空间,经过训练和敏感度分析确认的关键层、关键家族负责保护模型能力,同时区分FP8和GGUF两种量化路线,两者的格式、运行时和检查方法完全不同。

2026-09-03,团队对Qwen3.8-27B的官方与社区方案进行了架构级核对,最终将量化分为两类路线:

  • 服务端静态FP8:使用Hugging Face/SGLang的fine-grained E4M3权重,128×128 block,activation dynamic,收敛为64层纯文本trunk,重建并审计跳过表,避免套用官方多模态wrapper的排除表,最终通过了加载、生成质量和并发验证。
  • GGUF量化:采用Unsloth Dynamic v3的逐tensor动态精度分配与imatrix路线,结合APEX的敏感度实验结果,分为Q5、Q4、Q3三个档位,禁止从较高比特GGUF二次量化,避免舍入误差。

三个量化档位共用同一份来自本次训练数据的imatrix,token_embd与output/lm_head一律保留为Q8_0,同时根据层位分析,将层分为Critical、High、Full-Attention三组,针对性保护关键层的精度。

  • Q5档位:以Q5_K_M为基础,Critical与首尾层升到Q8_0,High层升到Q6_K,full-attention的q/k/v/o与中段ssm_out升到Q6_K,其余tensor保持Q5精度,定位为高保真部署档。
  • Q4档位:以Q4_K_M为基础,首尾层保留Q8_0,其余Critical与尾部层升到Q6_K,High层升到Q5_K,full-attention相关tensor升到Q6_K,中段混合家族升到Q5_K,定位为容量与能力的平衡档。
  • Q3档位:以Q3_K_M为基础,首尾层升到Q6_K,其余Critical与边缘层升到Q5_K,High层升到Q4_K,full-attention相关tensor升到Q5_K,gate/qkv/ssm_*与ffn_down升到Q4_K_M,embedding与输出头保留Q8_0,定位为极限容量档。

量化档位的最终测试成绩

档位 GPQA(198题) MMLU(500题) LCB(100题)
Q8_0 164/198,82.83% 447/500,89.40% 74/100,74.00%
Q6_K 171/198,86.36% 440/500,88.00% 78/100,78.00%
Q5-LynnStyle 164/198,82.83% 438/500,87.60% 75/100,75.00%
Q4-LynnStyle 166/198,83.84% 443/500,88.60% 74/100,74.00%
Q3-LynnStyle 172/198,86.87% 435/500,87.00% 78/100,78.00%

综合来看,Q6_K档位的表现最为均衡,GPQA仅比Q3少一题,LCB并列第一,MMLU比Q3多五题;Q3-LynnStyle档位在约17GB的体积下,依然实现了172/198的GPQA和78/100的LCB,证明了针对性精度保护的有效性。

本次优化的核心经验

三周的优化过程让团队深刻意识到,对于已经经过多轮后训练的大模型,训练数据不是越多越好,训练剂量也不是越猛越好。有效的行为训练需要同时具备三类数据:模型原生的正确轨迹、同题的错误与失败轨迹、教师模型的正确闭环轨迹,三者缺一不可。

本次优化的最终目标不是让模型完全停止长思考,而是让它在会做的题目上快速提交结果,在不会的题目上停止无效搜索,同时保留真正需要长推理的复杂问题场景。当主要矛盾已经缓解、模型能力保持稳定时,就应该及时停止训练,而不是为了追求完美的指标继续加码,避免破坏已经取得的平衡。

以上内容不代表本平台立场,仅供读者参考