文件最后提交记录最后更新时间
6 天前
1 个月前
16 天前
6 天前
2 个月前
README

MindSpeed-Bridge 测试用例贡献说明

MindSpeed-Bridge 测试用例用于看护仓库核心训练、模型适配和公共测试工具能力。当前测试体系包含 ST 和 UT 两类用例,ST 负责端到端训练脚本与基线指标比对,UT 负责基础功能和公共模块验证。

CI门禁看护列表

CI门禁用例看护仓库重点模型和基础特性,覆盖冒烟测试场景,PR合入前须通过相关CI门禁用例测试。

Tests Module Features Scripts Acc. Throu. Mem.
ST GLM5 SFT GLM5-744B, SFT, MTP, TP, PP, EP, ulysses_cp_algo glm5_744b_sft_mtp1_tp4pp2ep4_layer8.sh Y Y Y
GLM5.2 SFT GLM5.2-744B, SFT, TP, PP, EP, ulysses_cp_algo, pipeline_model_parallel_layout glm52_744b_sft_tp4pp2ep4_layer4.sh Y Y Y
Qwen3.5-VL SFT Qwen3.5-35B-A3B, SFT, MTP, TP, PP, EP, kvallgather_cp_algo qwen35_35B_sft_mtp1_tp1pp2ep4_layer4.sh Y Y
Qwen3.5-35B-A3B, SFT, MTP, TP, PP, EP, CP, kvallgather_cp_algo, sequence packing qwen35_35B_sft_mtp1_tp2pp2ep2cp2_layer4_pack.sh Y Y Y
Qwen3.5-9B, SFT, TP, PP qwen35_9B_sft_tp1pp2_layer4.sh Y Y Y
UT Mock DistributedTest, pytest import, basic distributed test framework smoke test test_mock.py Y Y Y

开发流程

1.权重和数据集配置

用例所需使用的权重、Tokenizer、数据集文件,请统一存放在CI环境约定目录下,并在用例脚本或资源清单中说明路径来源,否则不予上库。

注意:

  • /data/ci目录下只保存用例相关文件,不要引入其他无关文件。
  • 为了节省CI环境空间并提高运行效率,请尽量复用已有权重和数据;如需新增权重,请优先使用最小可验证规模。
  • 模型名称需与HuggingFace或仓库Recipe命名保持一致,严禁省略或自定义导致后续维护困难。
  • 临时缓存、日志和中间文件应写入CI约定目录,并在用例执行结束后及时清理。

推荐数据路径和命名规则:

  • HF权重和词表路径:/data/ci/models/模型名称/hf/权重或词表文件
  • Megatron权重路径:/data/ci/models/模型名称/mg/模型名称_切分方式
  • 原始数据集:/data/ci/datasets/origin/数据集名称
  • 处理后数据集:/data/ci/datasets/processed/数据集名称
  • 多模态图片数据:/data/ci/datasets/images/数据集名称
  • 缓存文件夹:/data/ci/cache/缓存文件

2.本地验证

用例编写后,先确保用例在本地或CI备用环境运行无误,再生成基线数据。ST用例需将脚本和同名基线文件一同上仓。

3.用例登记

  • 测试用例信息登记

为了方便后续维护,需要对用例的作者、上仓日期、简要描述以及其他信息进行标注。

ST用例需在运行脚本开始时标注以下信息:

#=============================================
# Author: xxx
# Date: xxxx-xx-xx
# Description: Model or feature covered by the testcase
# Remarks: Instructions for the checkpoint, datasets and tokenizer or other more information
#=============================================

UT用例在用例执行函数内标注以下信息:

def test_feature_a():
    '''
    Author: xxx
    Date: xxxx-xx-xx
    Description: Model or feature covered by the testcase
    Remarks: Instructions for the checkpoint, datasets and tokenizer or other more information
    '''
    ...
  • 用例看护特性列表登记

tests/README.md文件中登记测试用例所看护的模型和特性信息。

  • 资源登记

如新增用例依赖权重、词表或数据集,请同步登记资源路径和用途,确保CI环境可复现。

4.用例上仓

新增模型、训练Recipe、数据处理或公共工具能力时,应同步补充看护用例。只有业务代码而无对应看护用例的PR,需要在PR说明中解释原因。

开发规则

测试用例全部放置在tests目录下,当前层级如下:

  • tests/st/目录下维护CI门禁会拉起的ST用例。
  • tests/ut/目录下维护CI门禁会拉起的UT用例。
  • tests/test_tools/目录下维护测试公共工具、分布式测试基类和ST基线比对逻辑。

ST

① 贡献脚本用例请放置于tests/st/shell_scripts目录下,命名规则为**{模型名}{任务类型}{关键并行策略或特性}**,如qwen35_35B_sft_mtp1_tp1pp2ep4_layer4.sh,请保持命名清晰且可追溯。

② ST脚本由tests/st/st_run.sh统一扫描和执行,脚本中不需要单独重定向日志;运行日志会写入/data/ci/run_logs,解析后的结果会写入/data/ci/run_jsons

③ 基线数据请放置于tests/st/baseline_results目录下,命名需与shell脚本文件名完全对齐,仅后缀由.sh替换为.json,否则自动化脚本无法匹配。

④ 获取基线数据:通过门禁任务或备用CI环境执行脚本获得首次数据,并将结果保存至log或txt文件中,再使用tests/test_tools/acquire_json.py中的日志解析能力提取为JSON,最后连同用例脚本一同上仓。

⑤ ST基线比对当前支持lm lossgrad normmtp losstime info等指标;新增用例时需结合最终校验目标,在看护列表的精度(Acc.)、性能(Throu.)、显存(Mem.)列中填写Y,无校验项保留空白即可。

UT

① 建议需要分布式环境的UT用例继承tests/test_tools/dist_test.py中的DistributedTest,并按需指定world_size,具体可参考tests/ut/mock/test_mock.py

② 建议按照功能特性进行文件夹命名区分,至多不超过两层目录,所有用例文件和测试函数均以test作为命名前缀。

③ 新增用例可以在原有用例基础上补充test_xxx方法,尽量保证测试目标聚焦、依赖清晰、执行时间可控。

④ 对于需要参数化配置的用例,建议通过@pytest.mark.parametrize传入参数并构造用例;如配套JSON配置文件,请保证JSON中的key值命名与测试函数或参数含义保持一致。

⑤ 贡献UT时同样需要考虑最终校验指标,精度(Acc.)、性能(Throu.)、显存(Mem.)中有对应校验的填写Y,无校验项保留空白即可。