Prhub

#26695 [docs] Qwen3.5 cookbook: multi-node, MTP TP overrides, dense mamba flag

原始 PR 作者 zijiexia 合并时间 2026-05-30 03:10 文件变更 2 提交数 5 评论 1 代码增减 +77 / -18

执行摘要

Qwen3.5 cookbook 更新:多节点、MTP TP 覆盖与 mamba 标志

用户需要多节点部署Qwen3.5 397B模型,以及不同模型变体在MTP模式下的正确TP和mem设置。此外,密集模型在NVIDIA+MTP时需要--mamba-scheduler-strategy extra_buffer,但原有条件门控未正确处理。PR body和commit消息详细说明了这些需求。

建议阅读此PR以了解如何为cookbook维护多节点和条件配置模式,特别是状态钻取和条件覆盖的React模式。对于部署团队,验证生成命令的准确性。

讨论亮点

gemini-code-assist[bot]指出一个状态残留bug:当用户从MTP开启的MoE模型切换到MTP关闭的密集模型时,mambaCache状态仍为'v2',导致错误发射--mamba-scheduler-strategy extra_buffer。解决方案是精炼mambaCache条件,使其仅在MTP开启时生效。该问题在commit 5178fd4中修复。

实现拆解

  1. 多节点支持:在397B H100 BF16配置中添加multinode: true, nnodes: 2,并实现multiNodeFlagsprependMultiNodeNote辅助函数,生成--nnodes--node-rank--dist-init-addr参数并显示多节点注释。
  2. MTP条件性TP覆盖:对35B/27B H100 BF16(MTP开启时TP=2)、122B H100 FP8(TP=4)等组合,使用spread操作符合并基础配置与MTP覆盖,确保其他字段(如multinode)保留。同时覆盖规则设置mem: undefined以在发射时跳过--mem-fraction-static
  3. 基础TP和mem分数调优:更新122B H100 BF16 mem从0.8到0.88,122B H200 BF16 TP=4、FP8 TP=2,122B B300 BF16 TP=2,35B H100 BF16 mem从0.8到0.88,并删除这些配置的mem字段(因此不发射--mem-fraction-static)。
  4. 密集模型mamba标志:当MTP启用且硬件为NVIDIA时,强制mambaCache为'v2',并绕过条件检查以始终发射--mamba-scheduler-strategy extra_buffer
  5. B300 CUDA网格溢出规避:为0.8B/2B BF16添加--max-running-requests 4064,避免FlashInfer autotune预热时的GDN packed_decode Triton内核溢出。
  6. 状态残留bug修复(commit 2):当从MoE模型(MTP开启)切换到密集模型(MTP关闭)时,mambaCache状态可能错误保留为'v2'。修正为仅在MTP开启时强制'v2',关闭时不触发。
  7. Docker标签更新:在MDX中将Docker pull命令从nightly版本改为latest标签。
文件 模块 状态 重要度
docs_new/src/snippets/autoregressive/qwen35-deployment.jsx 配置生成器 modified 7.86
docs_new/cookbook/autoregressive/Qwen/Qwen3.5.mdx 文档页面 modified 2.14

关键符号

multiNodeFlags prependMultiNodeNote emitFlags modelConfigs

关键源码片段

docs_new/src/snippets/autoregressive/qwen35-deployment.jsx core-logic

核心变更文件,实现多节点、MTP 覆盖、内存分数调整等所有逻辑配置。

// 辅助函数:生成多节点部署标志
const multiNodeFlags = (spec) => {
  // spec 包含 multinode, nnodes 等字段
  const flags = [];
  if (spec.multinode) {
    flags.push(`--nnodes ${spec.nnodes}`);
    flags.push('--node-rank $RANK'); // 实际使用中会被适当替换
    flags.push('--dist-init-addr $MASTER_ADDR:$MASTER_PORT');
  }
  return flags;
};// 辅助函数:在命令前添加多节点说明
const prependMultiNodeNote = (spec) => {
  if (spec.multinode) {
    return `# Multi-node deployment: ${spec.nnodes} nodes required\n`;
  }
  return '';
};// 在 emitFlags 中使用条件化 mem 发射(相关部分)
const emitFlags = (values) => {
  // ...
  // 当 spec 中无 mem 字段时,不发射 --mem-fraction-static
  if (spec.mem !== undefined) {
    flags.push(`--mem-fraction-static ${spec.mem}`);
  }
  // MTP 条件性 TP 覆盖:合并基础配置与 MTP 覆盖
  if (mtpEnabled && mtpOverrides[modelKey]) {
    spec = { ...spec, ...mtpOverrides[modelKey] };
    // 覆盖中可能设置 mem 为 undefined 以跳过发射
  }
  // ...
};

评论区精华

MTP 状态残留导致错误发射 mamba 标志 正确性

gemini-code-assist[bot] 指出当从 MoE 模型(MTP 开启)切换到密集模型(MTP 关闭)时,mambaCache 状态未重置,导致错误发射 --mamba-scheduler-strategy extra_buffer。建议仅在 MTP 开启时强制 mambaCache='v2'。

结论:提交 5178fd4 修复:通过精炼条件,仅当 MTP 开启时才设置 mambaCache,否则不干预。 · 已解决

风险与影响

此PR主要影响文档生成的部署命令,风险较低。但配置逻辑依赖前端状态管理,若状态残留未被完全修复,可能生成错误参数(如错误地添加--mamba-scheduler-strategy extra_buffer)。此外,TP和mem值调整可能不匹配所有环境,导致OOM或性能下降。建议在实际GPU测试前验证生成的命令。

用户:为使用Qwen3.5的用户提供更新、更准确的部署命令,特别是多节点部署和MTP相关配置。团队:cookbook与DeepSeek-V4对齐,减少维护成本。影响范围限于文档网站,不影响核心运行时。

配置逻辑依赖前端状态 MTP 状态残留(已修复) TP/mem 值未经验证

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论