| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !36365 merge v2.10.0_lintrunner into v2.10.0 [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!36365 | 3 个月前 | |
fix: lintrunner --all-files --take NEWLINE -a Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35873 merge v2.10.0_lintrunner into v2.10.0 fix: lintrunner --all-files --take NEWLINE -a Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 1. 执行: lintrunner --all-files --take NEWLINE -a 修复换行符,不影响代码逻辑。 2. 屏蔽两个分布式用例,已提issue,给对应接口人跟踪。 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35873 | 3 个月前 | |
test(distributed):add test for torch.distributed.elastic.metrics.api.ConsoleMetricHandler, torch.distributed.elastic.metrics.api.NullMetricHandler and torch.distributed.elastic.metrics.configure Co-authored-by: m0_73361278<1241425935@qq.com> # message auto-generated for no-merge-commit merge: !34726 merge test-metrics-api-2.10.0 into v2.10.0 test(distributed):add test for torch.distributed.elastic.metrics.api.ConsoleMetricHandler, torch.distributed.elastic.metrics.api.NullMetricHandler and torch.distributed.elastic.metrics.configure Created-by: m0_73361278 Commit-by: m0_73361278 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 pytorch 社区用例没有验证 torch.distributed.elastic.metrics.api.ConsoleMetricHandler、torch.distributed.elastic.metrics.api.NullMetricHandler 和 torch.distributed.elastic.metrics.configure,故新增该测试用例文件,用于验证这三个 API 的正确性。 # 【修改方案】 一、API 功能说明 1. torch.distributed.elastic.metrics.api.ConsoleMetricHandler 是 PyTorch 分布式弹性训练 metrics 模块下的指标输出处理器,核心功能如下: 控制台输出能力:通过 emit(metric_data) 接收 MetricData 指标对象,并将指标内容输出到控制台。 指标字段承载能力:可处理包含 timestamp、group_name、name、value 等字段的 MetricData 对象。 Handler 基类兼容:ConsoleMetricHandler 是 MetricHandler 类型实例,可作为 metrics 模块统一的指标处理器使用。 与 configure 联动:配置为默认 handler 或指定 group handler 后,可通过 metrics_api.getStream(...).add_value(...) 触发指标输出。 2.torch.distributed.elastic.metrics.api.NullMetricHandler 是 PyTorch 分布式弹性训练 metrics 模块下的空指标处理器,核心功能如下: 空处理能力:通过 emit(metric_data) 接收 MetricData 指标对象,但不产生控制台输出。 无副作用返回:调用 emit 后返回 None,不会打印内容。 Handler 基类兼容:NullMetricHandler 是 MetricHandler 类型实例,可作为 metrics 模块统一的指标处理器使用。 与 configure 联动:配置为默认 handler 或指定 group handler 后,可屏蔽对应指标流的输出。 3.torch.distributed.elastic.metrics.configure 是 PyTorch 分布式弹性训练 metrics 模块下的指标处理器配置 API,核心功能如下: 默认 handler 配置:调用 configure(handler) 时,可配置全局默认 metrics handler。 group 级 handler 配置:调用 configure(handler, group="xxx") 时,可为指定 group 单独配置 metrics handler。 指标流分发能力:通过 metrics_api.getStream(group_name).add_value(metric_name, value) 上报指标时,会按照 group 配置选择对应 handler。 默认与 group 配置隔离:指定 group 的 handler 只影响对应 group,不影响其他 group 使用默认 handler。 二、测试文件 test_metrics_api.py 完整验证该 API 的原因 该测试用例针对 ConsoleMetricHandler、NullMetricHandler 和 configure 三个 API 进行验证,覆盖 handler 基础行为、默认配置、group 级配置和测试隔离性。 对 ConsoleMetricHandler 的验证 test_console_metric_handler_emit:验证 ConsoleMetricHandler.emit 能正常接收 MetricData,返回值为 None,并通过 print 输出包含 timestamp/value、group name 和 metric name 的指标信息;同时验证 ConsoleMetricHandler 是 MetricHandler 的实例。 对 NullMetricHandler 的验证 test_null_metric_handler_emit:验证 NullMetricHandler.emit 能正常接收 MetricData,返回值为 None,且不会触发任何控制台输出;同时验证 NullMetricHandler 是 MetricHandler 的实例。 对 configure 默认 handler 配置的验证 test_configure_default_console_metric_handler:验证通过 configure(handler) 将默认 handler 配置为 ConsoleMetricHandler 后,调用 metrics_api.getStream(...).add_value(...) 能正常触发控制台输出。 test_configure_default_null_metric_handler:验证通过 configure(handler) 将默认 handler 配置为 NullMetricHandler 后,调用 metrics_api.getStream(...).add_value(...) 不会产生控制台输出,且返回值为 None。 对 configure group 级 handler 配置的验证 test_configure_group_specific_console_metric_handler:验证为指定 group 配置 ConsoleMetricHandler 后,仅该 group 的指标会上报到控制台,默认 group 仍使用默认 handler,二者互不干扰。 test_configure_group_specific_null_metric_handler:验证为指定 group 配置 NullMetricHandler 后,仅该 group 的指标不会输出,其他 group 仍可使用默认 ConsoleMetricHandler 正常输出。 测试隔离性保障 setUp 和 _restore_metrics_state:在每个测试前保存原始 _default_metrics_handler 和 _metrics_map,测试结束后恢复全局 metrics 状态,避免不同测试用例之间的 handler 配置互相污染。 综上,该文件覆盖了 ConsoleMetricHandler 的控制台输出行为、NullMetricHandler 的空处理行为、configure 的默认 handler 配置能力、group 级 handler 配置能力,以及测试间全局状态隔离能力,是对这三个 metrics API 的基础功能验证。 三、NPU适配 torch.distributed.elastic.metrics.api.ConsoleMetricHandler、torch.distributed.elastic.metrics.api.NullMetricHandler 和 torch.distributed.elastic.metrics.configure 均具备硬件无关性、纯 Python 层实现、无底层算子依赖三大核心特征,决定了其无需针对昇腾 NPU 做修改 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 在2.10.0版本上执行该用例,均通过,日志如下: [root@82bc9d38ec90 workspace]# python /workspace/2.10.0/pytorch/test/distributed/elastic/metrics/test_metrics_api.py ...... Ran 6 tests in 0.037s OK # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [ ] 代码注释完备,正确记录错误日志 - [ ] 代码实现进行了返回值、空指针等校验 - [ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!34726 | 4 个月前 | |
test(distributed): add test for EtcdStore APIs for v2.10.0 Co-authored-by: zf_zhang<sjzz0306@outlook.com> # message auto-generated for no-merge-commit merge: !34913 merge test-elastic-etcdstore-pytorch-v2100 into v2.10.0 test(distributed): add test for EtcdStore APIs for v2.10.0 Created-by: zf_zhang Commit-by: zf_zhang Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**https://gitcode.com/Ascend/pytorch/issues/1676?ref=&did=3850294#tid-3850294**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 用例设计原则 本次验证结合官方用例复用与自定义用例补充的方式,遵循 “最小化、核心化、针对性” 原则,核心思路为: * 补充缺失用例:针对torch.distributed.elastic.rendezvous.etcd_store.EtcdStore;torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.set;torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.get;torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.add;torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.wait;torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.check等六个缺失用例,以及torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.set_timeout和集成场景设置,我们设计了精简且详细的测试用例,覆盖了EtcdStore类的所有核心功能 * 聚焦核心功能:我们验证了这些 API 的基础操作以及功能,确保结果反映 API 本身适配状态; * 轻量化设计:单个测试方法仅验证一个核心功能点,逻辑清晰、执行高效,便于问题定位。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 * torch.distributed.elastic.rendezvous.etcd_store.EtcdStore: 我们围绕EtcdStore的连接可靠性、前缀规范化及超时机制,设计了基于真实 etcd 环境的初始化与行为一致性测试用例。 * torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.set 和 torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.get: 我们围绕EtcdStore对不同数据类型的兼容性、覆写语义、异常处理、特殊字符支持及阻塞/超时行为,设计了全面验证 set/get 正确性与并发语义的测试用例。 * torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.add: 我们围绕EtcdStore.add的初始化与累加语义、相减与幂等性、以及高并发场景下的原子性与一致性,设计了覆盖功能正确性与并发安全性的 add 测试用例。 * torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.wait: 我们针对 EtcdStore.wait,设计了多线程延迟写入验证正常阻塞返回、全局与覆盖超时触发异常、以及部分 key 存在时超时失败的测试用例。 * torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.check: 我们针对 EtcdStore.check,设计了覆盖key的全部存在、部分存在、全部不存在、空列表边界及单个key 场景的非阻塞检查行为测试用例。 * torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.check: 我们针对 EtcdStore.set_timeout,设计了验证默认超时生效、零超时立即返回以及对 get 和 wait 行为产生影响的测试用例。 此外,我们还针对 EtcdStore 集成场景,设计了多节点并发 rendezvous 协调流程与高并发混合操作压力测试,验证其同步一致性与稳定性。 * 用例合理性说明:自定义用例虽简洁,但具备充分有效性与合理性。 * 自定义用例精准补全:EtcdStore自定义用例聚焦无官方用例覆盖的所有核心功能,贴合实际业务使用方式,验证结果具备业务参考价值; * 适配操作最小化:只对EtcdStore类的核心功能进行验证。 * 符合官方规范:自定义用例基于 PyTorch 官方测试框架开发,使用原生断言方法,与官方用例测试标准保持一致;  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [ ] 代码注释完备,正确记录错误日志 - [ ] 代码实现进行了返回值、空指针等校验 - [ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!34913 | 3 个月前 |