已合并
feat: add wan22 fsdp dataset #2926
feat: add wan22 fsdp dataset #2926
已合并
chenpeizhe创建于 8月4日
chenpeizhe成员
8月4日

What this PR does / why we need it?

Add Wan2.2 FSDP2 dataset.
https://gitcode.com/Ascend/MindSpeed-MM/issues/576

Does this PR introduce any user-facing change?

New Wan2.2 dataset in FSDP2 backend.

How was this patch tested?

UT/ST will be presented in other PR.

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 chenpeizhe 的贡献)
Cchenpeizhe成员
8月4日 创建了 pull request,commit 6cd267f4
atomgit-bot
atomgit-bot
8月4日 评论:

变更摘要

此 PR 新增了 Wan2.2 模型的 FSDP 训练数据集适配模块 mindspeed_mm/fsdp/data/datasets/wan2_2/,核心是通过 @data_register.register("wan2_2") 注册的 Wan2_2Dataset 类,继承自 MMBaseDataset,为 FSDP2 训练器提供视频/图像多模态数据加载、文本 tokenization、视频-图像融合、美学评分注入及批处理等完整数据管线支持。

主要改动

  • 新增 Wan2_2Dataset 数据集类:继承 MMBaseDataset,通过 @data_register.register("wan2_2") 注册,在 __init__ 中整合 VideoReader、VideoProcessor、ImageProcesser 以及可选的文本处理组件,并在 getitem 中实现视频/图像读取、预处理、文本选择、美学评分注入和 rejected 样本处理等完整数据加载流程。
  • 新增 _build_hf_tokenizer 函数:仅支持 HuggingFace 后端(hub_backend 为 "hf" 或 "huggingface"),通过 transformers 动态加载 AutoTokenizer 并调用 from_pretrained 构建 tokenizer,其他后端会抛出 ValueError。
  • 新增 MMBaseDataset 基类:封装 DataFileReader 数据读取逻辑,支持 standard 和 combine 两种数据存储模式,并定义 get_type 方法根据文件扩展名判断视频/图像类型。
  • 实现 collate_fn 批处理方法:对 VIDEO、PROMPT_IDS、PROMPT_MASK、VIDEO_MASK 等 torch.Tensor 类型字段使用 torch.stack 沿 batch 维度拼接,其他字段保持列表形式。
  • 支持视频-图像融合与 token 扩展:get_vid_img_fusion 从视频帧中等距采样指定数量的图像帧并拼接,get_text_processer 在融合模式下将 prompt_ids 和 prompt_mask 按 (1 + use_img_num) 倍复制扩展。
likedislike
不准确?
atomgit-bot
atomgit-bot
8月4日 评论:

代码审查


审查总结

已审查文件

文件 结果
mindspeed_mm/fsdp/data/datasets/wan2_2/__init__.py 无问题(仅空白行,属纯噪声不报告)
mindspeed_mm/fsdp/data/datasets/wan2_2/wan2_2_dataset.py 发现 6 个问题

问题统计

优先级 数量
P0 0
P1 2
P2 2
P3 2

整体风险评估:中等

两个 P1 问题会在特定但合理的配置下导致运行时崩溃:

  • __getitem__ 重试逻辑在数据集仅有 0 或 1 个样本时必然崩溃,且上界 off-by-one 导致最后一个样本永远不会被重试选中;
  • use_text_processer=True 但未提供 tokenizer_config 时,getitem 访问不存在的 self.text_processer 导致 AttributeError。

两个 P2 问题为边界条件缺陷(from_pretrained 缺失时的 KeyError、aesthetic 分数为 0 时的短路误判),触发概率较低但属于真实正确性问题。两个 P3 为可改进项(配置校验未 fail-fast、collate_fn 键集不完整)。建议优先修复 P1 问题后再合入。

类型 数量
🔴 阻塞 3
🟡 建议 4

⛔ 需要修改

likedislike
不准确?
ascend-robotascend-robot成员
8月4日 添加了label:ascend-cla/yes
ascend-robot
ascend-robot成员
8月4日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here。
You can get sig-info at here


PR Approval Progress

✅ Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-Ascend/MindSpeed-MM ✅ 王海涛, MoCuishle-M (2/2) ✅ 王海涛 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

chenpeizhe, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了56条消息 查看更多
htwang成员
8月7日 评论:

/approve

likedislike
ascend-robotascend-robot成员
8月7日 添加了label:lgtm
ascend-robotascend-robot成员
8月7日 添加了label:approved
ascend-robotascend-robot成员
8月7日 合入了pull request
ascend-robot
ascend-robot成员
8月7日 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike