MindSpeed MM 测试用例编写指南
本文档详细说明如何为MindSpeed MM贡献DT用例。
一、背景与参考
1.1 MindSpeed MM仓CI门禁代码相关路径
| 用途 | 路径 |
|---|---|
| 测试用例 | MindSpeed-MM/tests |
| CI启动代码 | MindSpeed-MM/ci |
1.2 CI门禁范围
CI门禁看护以下两项指标:
- 功能:代码能够正常运行
- 性能:性能劣化不得超过5%
二、CI门禁看护列表
PR合入前都须通过全量CI门禁用例测试。
2.1 ST(系统测试)看护列表
说明:ST用例看护性能指标,性能劣化不得超过5%。
| Module | Features | Scripts |
|---|---|---|
| Pretrain | CogVideoX T2V, TP=2, CP=2, Ulysses CP | pretrain_cogvideox_t2v_1_0.sh |
| CogVideoX I2V, TP=2, PP=2, CP=2, Ulysses CP | pretrain_cogvideox_i2v_1.5.sh | |
| HunyuanVideo T2V, TP=4, CP=1 | pretrain_hunyuanvideo_t2v.sh | |
| OpenSoraPlan 1.3, TP=2, CP=2 | pretrain_opensoraplan1_3.sh | |
| Wan2.1 T2V, FSDP2 | pretrain_wan2.1_t2v.sh | |
| Wan2.2 I2V, FSDP2 | pretrain_wan2.2_i2v.sh | |
| Finetune | Qwen2VL 7B, TP=1, PP=4 | finetune_qwen2vl_7B.sh |
| Qwen2.5VL 7B, TP=2, PP=2 | finetune_qwen2_5_vl_7b.sh | |
| DeepSeekVL2, TP=2, PP=2 | finetune_deepseekvl2.sh | |
| Qwen3Omni, FSDP2 | finetune_qwen3omni.sh | |
| Qwen3VL 30B, FSDP2 | finetune_qwen3vl_30B.sh | |
| Posttrain | Qwen2VL, DPO, TP=2, PP=4 | posttrain_qwen2vl_dpo.sh |
| Inference | Qwen2VL 7B, PP=1 | inference_qwen2vl_7b_pp1.sh |
| Qwen2VL 7B, PP=4 | inference_qwen2vl_7b_pp4.sh | |
| CogVideoX T2V 1.5 | inference_cogvideox_t2v_1.5.sh | |
| InternVL2.5 | inference_internvl2_5.sh | |
| Wan2.2 T2V, CP=2 | inference_wan2.2_t2v.sh |
2.2 UT(单元测试)看护列表
说明:UT用例看护功能指标,确保代码能够正常运行。
三、开发流程
flowchart LR
A[需求分析] --> B[用例设计]
B --> C[代码开发]
C --> D[本地验证]
D --> E[CI门禁]
E --> F[PR评审]
F --> G[合入代码]
四、开发规范
4.1 命名规范
4.1.1 ST用例命名规则
| 测试类型 | 命名规则 | 示例 |
|---|---|---|
| pretrain | pretrain_ + 模型名 + .sh |
pretrain_cogvideox_t2v_1_0.sh |
| finetune | finetune_ + 模型名 + .sh |
finetune_qwen2vl_7B.sh |
| posttrain | posttrain_ + 模型名 + _ + 任务类型 + .sh |
posttrain_qwen2vl_dpo.sh |
| inference | inference_ + 模型名 + .sh |
inference_qwen2vl_7b_pp1.sh |
4.1.2 UT用例命名规则
test_ + 目标文件名或特性、功能名
示例:test_chunkloss.py
4.2 用例规范
4.2.1 ST用例要求
- 环境配置:因为CI服务器硬件是NPU,必须设置正确的NPU环境变量
- 数据shuffle必须关闭:多模态训练用例中需关闭数据shuffle以确保结果可复现
- 模型减层运行:为节省资源同时保证测试有效性,模型需要减层运行,但层数不能设置过低以避免性能波动过大
- 基线数据:每个ST用例需配套基线数据文件,放置于
st/baseline_results/目录,文件名为${script_name}.json
4.2.2 UT用例要求
- 代码编写风格:需与现有UT用例保持一致
- 命名规范:所有用例以
test作为命名前缀 - 目录层级:建议按照功能特性进行文件夹命名区分
4.2.3 CI门禁时间要求
- 整个CI门禁执行时间须小于40分钟
4.2.4 资源路径规范
| 资源类型 | 路径 |
|---|---|
| 模型权重 | /home/ci_resource/models |
| 数据集 | /home/ci_resource/data |
五、附录
5.1 目录结构说明
tests/
├── README.md # 本文档
├── conftest.py # pytest全局配置
├── st/ # 系统测试用例
│ ├── shell_scripts/ # ST脚本存放目录
│ │ ├── pretrain_*.sh # 预训练用例
│ │ ├── finetune_*.sh # 微调用例
│ │ ├── posttrain_*.sh # 后训练用例
│ │ └── inference_*.sh # 推理用例
│ ├── run_configs/ # 用例配置文件目录
│ ├── baseline_results/ # 基线数据目录
│ ├── st_run.sh # ST用例执行入口
│ └── local_st_run.sh # 本地ST执行脚本
└── ut/ # 单元测试用例
├── loss/ # Loss相关UT
├── tools/ # 工具相关UT
├── data/ # 数据处理UT
├── models/ # 模型相关UT
│ ├── vision/ # 视觉模型UT
│ ├── transformers/ # Transformer UT
│ ├── text_encoder/ # 文本编码器UT
│ ├── audio_encoder/ # 音频编码器UT
│ ├── ae/ # 自编码器UT
│ ├── diffusion/ # 扩散模型UT
│ └── common/ # 通用模块UT
├── tasks/ # 任务相关UT
├── tools/ # 工具UT
├── fsdp/ # FSDP相关UT
└── test_*.py # 根目录UT