已关闭
[Usage]: torch.utils.data 相关 API 资料缺失及社区用例 NPU 适配 #2202
yulin520创建于 6月1日关闭于 6月8日
6月1日 添加了label:usage
6月1日 修改了issue 的描述
6月1日 修改了issue 的描述
6月1日 关联了pull request:test(data): adapt torch.utils.data tests on NPU
6月1日 关联了pull request:test(data): adapt torch.utils.data tests on NPU
6月1日 关联了pull request:test(data): adapt torch.utils.data tests on NPU
6月1日 关联了pull request:test(data): adapt torch.utils.data tests on NPU
6月1日 关联了pull request:test(data): adapt torch.utils.data tests on NPU
6月1日 修改标题为 “[Usage]: torch.utils.data 相关 API 资料缺失及社区用例 NPU 适配”,原标题为“[Usage]: API一致性说明:torch.utils.data 相关 API 验证及部分资料缺失”
6月1日 修改标题为 “[Usage]: torch.utils.data 相关 API 资料缺失及社区用例 NPU 适配”,原标题为“[Usage]: API一致性说明:torch.utils.data 相关 API 验证及部分资料缺失”
6月1日 修改了issue 的描述
6月8日 关闭了 issue
6月8日 添加了label:resolved
在提交新问题之前,请确保您已经在社区中搜索过相关问题,并使用了社区中提供的资源/工具后,仍未找到满意的解决方式。
环境信息
初始验证环境
初始验证环境信息:
最终匹配版本复验环境
后续在重新搭建的在线开发环境中,对各目标分支补充完成匹配版本复验。
各目标分支的 PyTorch 与 torch_npu 版本如下:
v2.7.12.7.1+cpu2.7.1.post2v2.9.02.9.0+cpu2.9.0v2.10.02.10.0+cpu2.10.0rc2v2.11.02.11.0+cu1302.11.0rc1v2.12.02.12.0+cu1302.12.0rc1使用场景及问题
本 Issue 用于说明以下 10 个
torch.utils.dataAPI 在 torch-npu 环境下的一致性验证结果:torch.utils.data.Datasettorch.utils.data.default_collatetorch.utils.data.default_converttorch.utils.data.distributed.DistributedSamplertorch.utils.data.get_worker_infotorch.utils.data.graph_settings.apply_shardingtorch.utils.data.graph_settings.get_all_graph_pipestorch.utils.data.IterableDatasettorch.utils.data.IterDataPipetorch.utils.data.MapDataPipe经检索、分析和复验:
test_upstreampatch;资料补齐 PR:
一、API 功能、官方用例及适配结论
torch.utils.data.Datasettest/test_dataloader.py中TensorDataset、ConcatDataset、StackDataset等相关用例torch.utils.data.default_collatetest/test_dataloader.py中TestDataLoader.test_default_collate_*相关用例torch.utils.data.default_converttest/test_dataloader.py中TestDataLoader.test_default_convert等相关用例torch.utils.data.distributed.DistributedSamplertest/test_dataloader.py中 DistributedSampler 相关用例torch.utils.data.get_worker_infotest/test_dataloader.py中TestDataLoader.test_get_worker_infotorch.utils.data.graph_settings.apply_shardingsharding_filter动态应用分片配置test/test_datapipe.py中TestSharding.test_simple_sharding、test_sharding_groups、test_sharding_length、test_multi_shardingtorch.utils.data.graph_settings.get_all_graph_pipestest/test_datapipe.py中TestGraph.test_simple_traverse、test_traverse_forked、test_traverse_mapdatapipe、test_traverse_circular_datapipetorch.utils.data.IterableDatasettest/test_dataloader.py中TestDataLoader.test_iterable_style_dataset、test_chain_iterable_style_dataset、test_iterabledataset_len等用例torch.utils.data.IterDataPipemap、filter、batch、zip、concat、fork等操作test/test_datapipe.py中TestFunctionalIterDataPipe、TestIterDataPipeSingletonConstraint、TestIterDataPipeCountSampleYielded相关用例torch.utils.data.MapDataPipetest/test_datapipe.py中TestFunctionalMapDataPipe、TestGraph.test_traverse_mapdatapipe二、测试用例适配说明
上述 10 个 API 的 PyTorch 官方社区测试用例已经存在。
API 本体不需要新增对齐代码,但是相关社区测试文件中存在 Tensor 使用场景。为保证测试在 NPU 环境中执行,本次对测试文件进行 NPU 适配。
涉及的社区测试文件:
在 patch 中引入:
import torch_npu from torch_npu.contrib import transfer_to_npu并对需要迁移的 Tensor 显式迁移至 NPU。
各版本分别提交以下 patch 文件:
三、DataLoader 多进程场景说明
TestDataLoader.test_multiprocessing_contexts涉及 DataLoader worker 间共享 NPU Tensor。该场景需要启用:
因此,本次 patch 增加条件判断:
expandable_segments:True时,可以执行对应 NPU IPC 场景;该条件跳过逻辑不影响其他 DataLoader 和 DataPipe 用例验证。
四、API 适配方案
4.1 API 对齐代码
不需要新增 API 对齐代码。
上述 API 主要属于 Python 层数据集、数据加载、采样、DataPipe 或 DataPipe 图配置逻辑,不涉及新增 NPU 算子实现。
4.2 社区测试用例 patch
需要提交测试适配 patch。
修改文件:
主要修改内容:
torch_npu;transfer_to_npu;TestDataLoader.test_multiprocessing_contexts增加 NPU IPC 条件跳过逻辑;五、验证命令
5.1 DataLoader 相关用例
5.2 DataPipe 相关用例
5.3 保留原始语义用例
六、匹配版本复验结果
v2.7.12.7.1+cpu2.7.1.post2v2.9.02.9.0+cpu2.9.0v2.10.02.10.0+cpu2.10.0rc2v2.11.02.11.0+cu1302.11.0rc1v2.12.02.12.0+cu1302.12.0rc1其中,
TestDataLoader.test_multiprocessing_contexts在未启用expandable_segments:True时按预期跳过。七、
v2.12.0验证环境补充说明在使用以下环境搭建
v2.12.0验证环境时:直接导入:
from torch_npu.contrib import transfer_to_npu会触发:
经检查,本次通过 PyPI 安装的
torch_npu==2.12.0rc1wheel 中:的接口调用方式与官方
v2.12.0分支中的实现存在差异。为保证验证环境与官方
v2.12.0分支保持一致,本地验证时使用官方v2.12.0分支中的同名文件替换 wheel 内文件。完成替换后,重新执行 NPU 冒烟测试和相关用例,结果均通过。该调整仅用于本地验证环境,不属于本次 PR 提交内容。
八、资料检查
已检查:
以下 6 个 API 已有资料说明,无需修改:
torch.utils.data.Datasettorch.utils.data.default_collatetorch.utils.data.default_converttorch.utils.data.distributed.DistributedSamplertorch.utils.data.get_worker_infotorch.utils.data.IterableDataset以下 4 个 API 原资料缺失,已通过文档 PR 补齐:
torch.utils.data.IterDataPipetorch.utils.data.MapDataPipetorch.utils.data.graph_settings.apply_shardingtorch.utils.data.graph_settings.get_all_graph_pipes资料补齐 PR:
九、相关 PR
9.1 资料 PR
v2.7.1:https://gitcode.com/Ascend/pytorch/pull/373129.2 测试 PR
v2.7.1:https://gitcode.com/Ascend/pytorch/pull/37376v2.9.0:https://gitcode.com/Ascend/pytorch/pull/37377v2.10.0:https://gitcode.com/Ascend/pytorch/pull/37378v2.11.0:https://gitcode.com/Ascend/pytorch/pull/37379v2.12.0:https://gitcode.com/Ascend/pytorch/pull/37380当前 6 个 PR 均已通过:
十、提交前审计结果
已完成提交前冗余文件审计。
测试 PR 中仅包含以下两个目标 patch 文件:
文档 PR 中仅包含以下 5 个目标文档文件:
审计结果:
十一、验证结论
上述 10 个 API 均已完成一致性验证。
git apply --check;CheckList
欢迎加入社区,感谢您对社区的贡献 🎉