Skip to content

torch_npu 简介

torch_npu(Ascend Extension for PyTorch,昇腾 PyTorch 扩展)是让原生 PyTorch 运行在昇腾 NPU 上的适配插件。

1. 工作方式

torch_npu 不替代 PyTorch,而是作为插件为 PyTorch 增加一种新设备类型 npu

  • 原生 PyTorch 负责模型定义、自动求导、训练循环等通用逻辑;
  • torch_npu 把算子映射到 CANN 的昇腾实现,并接管 npu 设备上的张量与运算;
  • 最终经 CANN 下发到 昇腾 910 执行。
PyTorch(模型 / 自动求导)

   torch_npu(device='npu' 适配)

    CANN  →  昇腾 910 NPU

2. 与 CUDA 的对应

概念NVIDIA昇腾
设备字符串'cuda''npu'
后端库CUDACANN
框架接入原生 PyTorchPyTorch + torch_npu

正因为这种「插件式」设计,绝大多数 PyTorch 代码迁移到昇腾时改动很小,详见 代码迁移

3. 关于 MindSpore

除 PyTorch 外,昇腾还有原生框架 MindSpore,对昇腾硬件做了深度优化,支持端 / 边 / 云全场景部署。本平台以 PyTorch 为主,MindSpore 可作为延伸了解。