Prhub

#1812 feat: add support for including missing weights from origin HF checkp…

THUDM/slime · 作者 peterjc123 · 合并时间 2026-04-07 14:56

分析状态 已生成
文件变更 1提交数 1 · 评论 0
代码增减 +33 / -2
feature configuration multimodal

执行摘要

在权重转换工具中添加从原始 HF 检查点补充缺失权重的功能,提升 Qwen3.5 模型转换完整性。

根据PR标题和body描述,该变更旨在解决将部分Qwen3.5 Megatron权重转换回完整HuggingFace格式时,某些权重可能缺失的问题。PR body明确指出“The code is to convert partial Qwen3.5 Megatron weights back to the complete Huggingface format”,表明这是针对特定模型转换场景的功能增强。

该PR值得关注其设计思路:通过维护已转换权重名称集合和从原始检查点补充缺失项的方式,优雅地解决了部分权重转换问题。建议精读save_tensors函数中新增的权重补充逻辑,理解其如何保持转换完整性同时避免重复。

讨论亮点

由于review_comments_count为0,没有实际的review讨论发生。PR由zhuzilin直接合并,表明变更被认为是直接且低风险的。

实现拆解

主要修改集中在tools/convert_torch_dist_to_hf.py文件:

  1. 在save_tensors函数签名中添加origin_hf_dir参数,默认为None
  2. 在转换过程中维护converted_names集合记录已转换的权重名称
  3. 当origin_hf_dir不为None时,遍历原始HF检查点的safetensors文件,将未在converted_names中的权重补充到输出中
  4. 在命令行参数解析器中添加--add-missing-from-origin-hf标志(简写-a)
  5. 修改主函数调用逻辑,根据标志决定是否传递origin_hf_dir参数
文件 模块 状态 重要度
tools/convert_torch_dist_to_hf.py tools modified 8.0

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

关键符号

save_tensors

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

  1. 功能风险:新增的权重补充逻辑可能错误地包含不应转换的权重(如优化器状态),但通过converted_names集合的过滤机制降低了此风险。
  2. 兼容性风险:修改了save_tensors函数签名,但通过默认参数保持了向后兼容性,不影响现有调用。
  3. 性能风险:需要额外读取原始HF检查点文件,可能增加转换时间和内存使用,但仅当显式启用--add-missing-from-origin-hf标志时才触发。
  4. 逻辑风险:如果原始HF检查点与目标模型结构不匹配,补充的权重可能无效,但这是用户责任而非工具问题。
  1. 对用户:为使用Qwen3.5等模型进行部分权重转换的用户提供了更完整的转换能力,避免因缺失权重导致的模型加载失败。
  2. 对系统:工具功能增强,不影响核心训练/推理流程。
  3. 对团队:简化了模型权重转换的工作流,减少了手动处理缺失权重的需求。
函数签名变更 外部依赖读取

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

  • 一句话:在权重转换工具中添加从原始HF检查点补充缺失权重的功能,提升Qwen3.5模型转换完整性。
  • 推荐动作:该PR值得关注其设计思路:通过维护已转换权重名称集合和从原始检查点补充缺失项的方式,优雅地解决了部分权重转换问题。建议精读save_tensors函数中新增的权重补充逻辑,理解其如何保持转换完整性同时避免重复。

功能与动机

根据PR标题和body描述,该变更旨在解决将部分Qwen3.5 Megatron权重转换回完整HuggingFace格式时,某些权重可能缺失的问题。PR body明确指出“The code is to convert partial Qwen3.5 Megatron weights back to the complete Huggingface format”,表明这是针对特定模型转换场景的功能增强。

实现拆解

主要修改集中在tools/convert_torch_dist_to_hf.py文件:

  1. 在save_tensors函数签名中添加origin_hf_dir参数,默认为None
  2. 在转换过程中维护converted_names集合记录已转换的权重名称
  3. 当origin_hf_dir不为None时,遍历原始HF检查点的safetensors文件,将未在converted_names中的权重补充到输出中
  4. 在命令行参数解析器中添加--add-missing-from-origin-hf标志(简写-a)
  5. 修改主函数调用逻辑,根据标志决定是否传递origin_hf_dir参数

关键文件:

  • tools/convert_torch_dist_to_hf.py(模块 tools): 这是唯一被修改的文件,包含了权重转换工具的核心逻辑变更。新增的权重补充功能直接影响模型转换的完整性和正确性。

关键符号:save_tensors

评论区精华

由于review_comments_count为0,没有实际的review讨论发生。PR由zhuzilin直接合并,表明变更被认为是直接且低风险的。

  • 暂无高价值评论线程

风险与影响

  • 风险:1. 功能风险:新增的权重补充逻辑可能错误地包含不应转换的权重(如优化器状态),但通过converted_names集合的过滤机制降低了此风险。
    2. 兼容性风险:修改了save_tensors函数签名,但通过默认参数保持了向后兼容性,不影响现有调用。
    3. 性能风险:需要额外读取原始HF检查点文件,可能增加转换时间和内存使用,但仅当显式启用--add-missing-from-origin-hf标志时才触发。
    4. 逻辑风险:如果原始HF检查点与目标模型结构不匹配,补充的权重可能无效,但这是用户责任而非工具问题。
  • 影响:1. 对用户:为使用Qwen3.5等模型进行部分权重转换的用户提供了更完整的转换能力,避免因缺失权重导致的模型加载失败。
    2. 对系统:工具功能增强,不影响核心训练/推理流程。
    3. 对团队:简化了模型权重转换的工作流,减少了手动处理缺失权重的需求。
  • 风险标记:函数签名变更, 外部依赖读取

关联脉络

  • PR #1769 Support FP8 conversion for Qwen3.5: 同样涉及Qwen3.5模型的权重转换工具(tools/convert_hf_to_fp8.py),属于同一技术领域的功能增强。
  • PR #1799 fix qwen3.5 397B converting error when enable expert parallel: 都针对Qwen3.5模型的转换问题,1799修复权重转换错误,本PR增强转换完整性,存在功能关联。

参与讨论