已合并
test: add put_metric coverage #42809
lgxxx创建于 7月26日
test: add put_metric coverage #42809
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 lgxxx 的贡献)atomgit-bot
7月26日 评论:
7月26日 评论:
变更摘要
此 PR 为 torch.distributed.elastic.metrics 模块新增 put_metric API 的单元测试覆盖,在现有测试文件 test/distributed/elastic/metrics/test_metrics_api.py 中扩展 ElasticMetricsApiTest 测试类,验证指标上报接口在默认 handler 与自定义 group handler 下的行为正确性。该变更不涉及任何 API 实现修改,属于纯测试补充。
主要改动
- 新增
test_put_metric测试方法:在ElasticMetricsApiTest类中添加完整的测试用例,覆盖默认组(torchelastic)与自定义组(custom_group)两种场景,验证put_metric调用后对应 handler 的emit方法被正确触发及其调用次数。 - 验证
MetricData字段正确性:测试断言emit接收到的MetricData记录的group_name、name、value和timestamp字段值与预期一致,包括空字符串名称、零值和负值等边界情况。 - 扩展 import 与文档字符串:在导入语句中新增
put_metric,并在模块文档字符串中将其列入已验证的 API 列表,同时添加华为版权声明。


ascend-robot
7月26日 评论:
7月26日 评论:
atomgit-bot
7月26日 评论:
7月26日 评论:
此处折叠了48条消息 查看更多
li_jing_hw
19 天前 评论:
19 天前 评论:
/approve


19 天前 添加了label:approvedlgtm
19 天前 删除了label:ci-pipeline-passed
19 天前 合入了pull request
ascend-robot
19 天前 评论:
19 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#13931 [ commitID:f3c005f9 ] 已完成


【合入来源】
https://gitcode.com/Ascend/pytorch/issues/3216
【修改方案】
API 与交付结论
torch.distributed.elastic.metrics.put_metric。put_metric处理结果的测试。test/distributed/elastic/metrics/test_metrics_api.py。test_upstreampatch:不涉及。put_metric是纯 Python、非计算类指标接口。分支
PR 源仓库为
lgxxx/pytorch,目标仓库为Ascend/pytorch,目标分支必须与上表一一对应。任务书 Issue:
Ascend/pytorch#3216。四个目标分支的 PR 均关联该 Issue。官方用例调查
PyTorch 官方存在
test/distributed/elastic/metrics/api_test.py,但现有用例只覆盖MetricHandler、MetricStream、prof等行为,没有直接调用并验证put_metric的处理器结果。另有
test/distributed/elastic/agent/server/test/api.py通过 mock 间接验证put_metric被调用,但不验证其默认metric_group、自定义metric_group、metric_name、metric_value或实际MetricData。因此需要在 torch-npu 现有 metrics 测试文件中新增直接行为用例,属于场景 1.3。
修改内容
新增
test_put_metric,覆盖:metric_group时使用默认torchelastic组。custom_group时使用自定义处理器。metric_name和空metric_name。metric_value。MetricData,验证group_name、name、value和timestamp。setUp/addCleanup恢复全局默认 handler 和 metrics map。put_metric。put_metric的官方实现只将参数转交给 metric stream,不进行运行时类型校验,因此没有人为增加与官方行为不一致的类型异常断言。修改文件:
【资料变更】
已检查 master 分支下以下资料条目:
五个版本均已有
torch.distributed.elastic.metrics.put_metric条目,支持状态一致为“是,暂不支持 Ascend 950DT”,因此不创建资料 PR。该 API 为非计算类接口,资料中不涉及数据类型支持。【接口变更】
不涉及。本次不修改 PyTorch API 实现、函数签名、返回类型或跨仓接口,只新增直接测试覆盖。
【功能验证】
本地验证环境
执行命令
本地验证结果
v2.12.0 及 master 源码兼容性预验证中有 CuTeDSL 可选依赖缺失提示;该提示与纯 Python metrics 测试无关,未影响测试结果或退出码。
【CheckList】
NPU 功能验证补充
以下为当前 PR head commit 对应的单卡 NPU 实测环境、命令和结果: