| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 6 天前 | ||
| 1 个月前 | ||
| 16 天前 | ||
| 6 天前 | ||
| 2 个月前 |
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 loss、grad norm、mtp loss和time 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,无校验项保留空白即可。