概述

Ascend Extension for PyTorch插件是基于昇腾的深度学习适配框架,使昇腾NPU可以支持PyTorch框架,为PyTorch框架的使用者提供昇腾AI处理器的超强算力。

该插件最大限度地继承了PyTorch框架的动态图特性、原生开发方式以及体系结构,使得开发者在使用Ascend Extension for PyTorch时,几乎无需改变原有的开发习惯和代码风格。开发者可以继续使用熟悉的PyTorch接口和函数,只需将设备指定为昇腾NPU,即可将模型无缝迁移到昇腾平台上进行训练,大大降低了开发成本和迁移难度。

随着深度学习领域的蓬勃发展、数据规模的不断膨胀以及模型复杂度的持续攀升,对计算平台的挑战日益增长。面对这些挑战,Ascend Extension for PyTorch从内存资源优化、通信性能优化、计算性能优化、辅助报错定位等方面精心打造了一系列独特的特性。为用户提供了一个高效、便捷的开发工具,具体特性请参见表1

表 1 特性列表

特性类别 特性名称 特性说明
内存资源优化 虚拟内存 动态调整内存块的大小,减少内存碎片的产生。
内存资源优化 内存快照 支持训练过程中内存溢出时生成设备内存快照。
内存资源优化 自定义内存分配器 从.so文件加载自定义NPU内存分配器。
内存资源优化 多流内存复用 多流情况下,优化内存使用情况,提高内存复用率。
内存资源优化 内存共享(IPC) 支持跨进程共享内存,有效减少内存消耗。
通信性能优化 torch_npu_run torch_npu_run是torchrun在大集群场景的改进版,提升集群建链性能。
通信性能优化 ranktable建链 支持以ranktable文件配置方式建立通信域。
计算性能优化 自动绑核 通过设置粗/细粒度绑核,优化Ascend Extension for PyTorch下发性能。
计算性能优化 Stream级TaskQueue并行下发 每个Stream会初始化独立的TaskQueue和对应的Dequeue线程,实现真正的二级流水并行下发机制。
辅助报错定位 特征值检测 基于通信流做静默数据错误的特征值检测,识别精度问题。
辅助报错定位 WatchDog 在不影响大模型训练性能和精度的前提下,能快速稳定发现错误。
参数配置 通过pg_options配置HCCL通信域参数 可以针对不同的通信域配置不同的HCCL配置。
PyTorch图模式 PyTorch编译模式(torch.compile) Ascend Extension for PyTorch在2.6.0以上版本已支持torch.compile(),通过“动态图捕获+静态图优化+高效代码生成”的方式显著加速模型训练和推理任务。
PyTorch图模式 NPUGraph NPUGraph是一种静态图捕获技术,可以将动态的PyTorch操作转换为固定计算图,提升NPU执行效率。
算子适配 自定义算子适配开发 基于OpPlugin插件或C++ extensions的方式编写并调用自定义算子。