已开启
【社区任务】7月社区任务第四期-Ascend for PyTorch API 一致性开发(54) #3536
群青世界创建于 7月30日
Lluoxiaoyan2024
7月31日 关联了pull request:test(nn): Add validation cases for torch.QUInt4x2Storage.dtype (#3536)
7月31日 关联了pull request:test(nn): Add validation cases for torch.QUInt4x2Storage.dtype (#3536)
7月31日 添加了label:bot-triaged
TorchNPU-Bot
7月31日 评论:
7月31日 评论:
检测到当前 issue 已关联 PR,自动添加标签:bot-triaged


Lluoxiaoyan2024
7月31日 关联了pull request:test(nn): Add validation cases for torch.QUInt4x2Storage.dtype (#3536)
7月31日 关联了pull request:test(nn): Add validation cases for torch.QUInt4x2Storage.dtype (#3536)
Lluoxiaoyan2024
7月31日 关联了pull request:test(nn): Add validation cases for torch.QUInt4x2Storage.dtype (#3536)
7月31日 关联了pull request:test(nn): Add validation cases for torch.QUInt4x2Storage.dtype (#3536)
Lluoxiaoyan2024
7月31日 关联了pull request:test(nn): Add validation cases for torch.QUInt4x2Storage.dtype (#3536)
7月31日 关联了pull request:test(nn): Add validation cases for torch.QUInt4x2Storage.dtype (#3536)
Lluoxiaoyan2024
7月31日 关联了pull request:test(nn): Add validation cases for torch.QUInt4x2Storage.dtype (#3536)
7月31日 关联了pull request:test(nn): Add validation cases for torch.QUInt4x2Storage.dtype (#3536)
Lluoxiaoyan2024
8月12日 关联了pull request:test(nn): Add consistency validation cases for torch.QUInt4x2Storage.dtype on NPU (#3536)
8月12日 关联了pull request:test(nn): Add consistency validation cases for torch.QUInt4x2Storage.dtype on NPU (#3536)
Lluoxiaoyan2024
8月12日 关联了pull request:test(nn): Add consistency validation cases for torch.QUInt4x2Storage.dtype on NPU (#3536)
8月12日 关联了pull request:test(nn): Add consistency validation cases for torch.QUInt4x2Storage.dtype on NPU (#3536)
Lluoxiaoyan2024
8月12日 关联了pull request:test(nn): Add consistency validation cases for torch.QUInt4x2Storage.dtype on NPU (#3536)
8月12日 关联了pull request:test(nn): Add consistency validation cases for torch.QUInt4x2Storage.dtype on NPU (#3536)
Lluoxiaoyan2024
8月12日 关联了pull request:test(nn): Add consistency validation cases for torch.QUInt4x2Storage.dtype on NPU (#3536)
8月12日 关联了pull request:test(nn): Add consistency validation cases for torch.QUInt4x2Storage.dtype on NPU (#3536)
luoxiaoyan2024
8月12日 评论:
8月12日 评论:
torch.QUInt4x2Storage.dtype API 一致性验证结论
一、验证环境
| 项 | 内容 |
|---|---|
| CANN 版本 | 8.5.1 |
| 操作系统 | Ubuntu |
| NPU 型号 | Ascend 910B3 |
| 覆盖版本 | torch / torch_npu 的 2.7.1 / 2.11.0 / 2.12.0 / master(v2.9.0 已撤回,不再提交) |
| 源码仓库 | https://gitcode.com/Ascend/pytorch |
| Fork 仓库 | https://gitcode.com/luoxiaoyan2024/pytorch |
| 补充验证 | Ascend 950PR,CANN 9.1.0,npu-smi 25.7.rc1.6,Ubuntu 22.04.5 x86_64,Python 3.10.12,torch 2.12.0+cu130 / torch_npu 2.12.0(实跑 test/test_quint4x2_storage_dtype.py,Ran 2 tests ... OK) |
| 实测补充 | Atlas 800T A2 服务器 torch 容器实测 torch.QUInt4x2Storage.dtype == torch.quint4x2(属性设备无关) |
二、使用场景
torch.QUInt4x2Storage.dtype 是量化存储类 QUInt4x2Storage 的只读类属性,用于返回其对应的量化 dtype torch.quint4x2(4-bit 无符号量化类型)。它服务于量化张量的底层 4-bit 存储管理,属于类级别的常量属性——不接收 Tensor、不执行数值计算、也不调用任何 NPU 算子。
三、API 功能说明
torch.QUInt4x2Storage是 PyTorch 量化相关的 TypedStorage 子类,其dtype类属性恒等于torch.quint4x2。- 实测(torch,Atlas 800T A2 容器):
torch.QUInt4x2Storage.dtype→torch.quint4x2torch.QUInt4x2Storage().dtype→torch.quint4x2
- 该 dtype 属于量化 dtype 集合
{quint8, qint8, qint32, quint4x2},且可与quint8/qint8明确区分(边界值)。
四、社区用例覆盖
在 PyTorch 官方 test/ 中检索 QUInt4x2Storage / quint4x2:
- 结论:官方
test/中没有针对torch.QUInt4x2Storage.dtype的聚焦一致性用例;该属性只在量化相关用例中被间接触及(如量化张量构造、存储底层细节),没有独立断言其dtype取值与量化 dtype 集合归属。 - → 据此判定:社区无直接用例 → 自写用例提交
test/目录(用例补齐)。
五、NPU 适配分析
torch.QUInt4x2Storage.dtype是torch核心类的只读属性,导入 torch_npu 后符号直接可用,无需transfer_to_npu适配、无需改动 NPU 算子。- 当前 NPU 未单独注册
QUInt4x2Storage存储类(NPU 存储类列表仅覆盖数值 / bool / bfloat16 类),因此以设备无关类属性torch.QUInt4x2Storage.dtype == torch.quint4x2作为权威校验值。 - 用例通过
torch.npu.is_available()守卫;若 NPU 后续暴露torch.npu.QUInt4x2Storage,用例会自动扩展该校验(额外校验其dtype与空存储实例)。
六、功能验证
- 设备无关属性(CPU 路径):已在 Atlas 800T A2 真实 torch 容器中实测确认:
torch.QUInt4x2Storage.dtype→torch.quint4x2✅torch.QUInt4x2Storage().dtype→torch.quint4x2✅torch.QUInt4x2Storage.dtype in {quint8, qint8, qint32, quint4x2}→ True ✅- 该属性为只读类属性,跨版本稳定,不随设备变化。
- NPU 路径(Ascend 950PR 实测,2026-09-08):在 Ascend 950PR(CANN 9.1.0,npu-smi 25.7.rc1.6,Python 3.10.12,torch 2.12.0+cu130 / torch_npu 2.12.0)环境实跑
python3 test_quint4x2_storage_dtype.py -v,Ran 2 tests ... OK,CPU 用例与 NPU 用例实际执行(非跳过),torch.npu.is_available()=True:
$ python3 test_quint4x2_storage_dtype.py -v # 950PR: Ascend950PR / CANN 9.1.0, torch 2.12.0+cu130 / torch_npu 2.12.0
test_cpu_quint4x2_storage_dtype (__main__.TestQUInt4x2StorageDtype) ... ok
test_npu_quint4x2_storage_dtype (__main__.TestQUInt4x2StorageDtype) ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.003s
OK

- 910B3 路径:v2.7.1 / v2.11.0 / v2.12.0 三版本已在 910B3(CANN 8.5.1)容器实跑同文件,均
Ran 2 tests ... OK(运行日志见 PR #44411~#44413 描述);master 分支由社区 CI 流水线验证。
复现命令(CPU 路径):
import torch
assert torch.QUInt4x2Storage.dtype is torch.quint4x2
assert torch.QUInt4x2Storage().dtype is torch.quint4x2
assert torch.QUInt4x2Storage.dtype in (torch.quint8, torch.qint8, torch.qint32, torch.quint4x2)
print("OK")
七、test 用例补齐(patch 处理)
新增自包含一致性用例文件 test/test_quint4x2_storage_dtype.py(单文件新增,无 torch/ 或 torch_npu/ 源码改动),含两个方法:
test_cpu_quint4x2_storage_dtype:校验类属性dtype恒为torch.quint4x2,属于量化 dtype 集合(quint8/qint8/qint32/quint4x2),并与quint8/qint8明确区分。test_npu_quint4x2_storage_dtype:在 NPU 环境下校验设备无关类属性仍为torch.quint4x2;并对QUInt4x2Storage的存在性做了与 CPU 测试一致的hasattr守卫(避免个别构建配置下抛AttributeError),若 NPU 注册torch.npu.QUInt4x2Storage则额外校验其dtype与空存储实例。
提交分支(每个版本分支独立 PR;v2.9.0 撤回不再提交):
注:v2.9.0 不再提交。
八、资料 / API 补齐判定
- ② 资料补齐:
torch.QUInt4x2Storage是既有量化存储类,其dtype为只读类属性;NPU 未单独实现该存储类,无新增 NPU 算子需登记native_apis→ 无需资料补齐。 - ③ API 补齐:属性在 torch_npu 加载后直接可用、行为一致,无需改动
torch/或torch_npu/源码 → 不需要。
九、结论
| 补齐类型 | 判定 | 依据 |
|---|---|---|
| ① 用例补齐 | ✅ 需要 | 社区无该属性聚焦一致性用例;新增 test/test_quint4x2_storage_dtype.py 提交至 4 个版本分支 |
| ② 资料补齐 | ❌ 不需要 | 既有量化存储类只读属性,NPU 未单独实现,无需 native_apis 登记 |
| ③ API 补齐 | ❌ 不需要 | NPU 加载后属性直接可用、行为一致,无需改源码 |
最终路径:① 用例补齐(test 目录一致性用例)。 提交 test/test_quint4x2_storage_dtype.py 至 v2.7.1 / v2.11.0 / v2.12.0 / master(v2.9.0 撤回),关联 issue https://gitcode.com/Ascend/pytorch/issues/3536,PR 合入后关闭该 issue。


一、任务概览
Ascend for PyTorch是昇腾 NPU 适配 PyTorch 框架的核心插件,为 PyTorch 提供完整的昇腾硬件算子支持、调度能力与推理优化,保障 PyTorch 模型可在昇腾 NPU 上无缝、高效运行。
当前 PyTorch 官方原生 API 已形成完善体系,但部分API尚未在 Ascend for PyTorch 中完成实现、对齐与验证,导致部分 PyTorch 原生模型 / 代码在昇腾 NPU 上运行时出现接口报错、功能不一致等问题。
本任务邀请开发者参与Ascend for PyTorch API 补齐与适配验证,完成缺失 API 的开发、调试、测试与文档交付,完善 Torch-NPU 对 PyTorch 原生 API 的兼容性,提升昇腾 NPU 上 PyTorch 框架的易用性与模型适配覆盖率。
二、任务要求及参考指导
https://docs.qq.com/doc/DT3R3eVNWdm1yUkdR
三、任务价值
深度参与昇腾生态 + PyTorch 开源共建,贡献代码合入官方仓库;
掌握 NPU PyTorch 框架适配、异构计算核心技能;
获得开源社区认可,积累工业级实习项目经验,提升简历竞争力。
四、任务领取
请前往昇腾社区-任务广场领取任务:https://www.hiascend.com/activities/task-center ,其余领取方式无效。(昇腾社区任务发布会滞后,请耐心等候)
五、API名称
torch.QUInt4x2Storage.dtype