外贸建站的公司,河北做网站电话,wordpress post请求,企业介绍ppt案例欣赏1 Ascend Extension for PyTorch
Ascend Extension for PyTorch 插件是基于昇腾的深度学习适配框架#xff0c;使昇腾NPU可以支持PyTorch框架#xff0c;为PyTorch框架的使用者提供昇腾AI处理器的超强算力。
项目源码地址请参见Ascend/Pytorch。
昇腾为基于昇腾处理器和软…1 Ascend Extension for PyTorch
Ascend Extension for PyTorch 插件是基于昇腾的深度学习适配框架使昇腾NPU可以支持PyTorch框架为PyTorch框架的使用者提供昇腾AI处理器的超强算力。
项目源码地址请参见Ascend/Pytorch。
昇腾为基于昇腾处理器和软件的行业应用及服务提供全栈AI计算基础设施。您可以通过访问昇腾社区了解关于昇腾的更多信息。
2 为什么需要此扩展
PyTorch本身是个模型训练和推理的AI框架与华为的昇思mindspore和百度的飞浆paddlepaddle等是同样的产品形态。pytorch作为业界的顶流无论是在业界还是高校或者说是AI相关社区其重要性都是无法撼动的。但是pytorch本身只对cpu和gpu进行了较好的适配这就导致了新出现的npu硬件产品如果要在pytorch上进行无缝对接肯定得进行一些适配。比如如何调用新npu硬件上配套的高性能算子
3 Ascend在pytorch上的对接方案
以下架构图来源于昇腾社区。 Ascend Extension for PyTorch 该在线对接适配方案的特点包含
最大限度的继承PyTorch框架动态图的特性。最大限度的继承原生PyTorch的开发方式可以使用户在将模型移植到昇腾AI处理器设备进行训练时在开发方式和代码重用方面做到最小的改动。最大限度的继承PyTorch原生的体系结构保留框架本身出色的特性比如自动微分、动态分发、Debug、Profiling、Storage共享机制以及设备侧的动态内存管理等。扩展性好。在打通流程的通路之上对于新增的网络类型或结构只需涉及相关计算类算子的开发和实现。框架类算子反向图建立和实现机制等结构可保持复用。与原生PyTorch的使用方式和风格保持一致。用户在使用在线对接方案时只需在Python侧和Device相关操作中指定Device为昇腾AI处理器即可完成用昇腾AI处理器在PyTorch对网络的开发、训练以及调试用户无需进一步关注昇腾AI处理器具体的底层细节。这样可以确保用户的修改最小化迁移成本较低。
根据上图可以获取以下几点内容全部是个人理解如果错了还望指正
图中标识1的部分这个是业务层比如训练推理等图中标识2的部分是torch的原有python接口方便用户侧调用。图中标识3的部分ascend对外提供的python接口比如在分布式下ascend是hccl而gpu是nccl在用户脚本侧就得调用对应的接口图中标识4的部分这个是pybind层。熟悉pytorch的这层作用很明了。python侧只是用户python中脚本呈现的真正下发到硬件上去执行都是c侧下发。从python到c就有一个pybind的过程也就是cpython。图中标识5的部分是框架中的通用层比如算子关系tensor实现memory申请实现等图中标识6的部分这个是ascend上特有的如aclop需要编译然后执行aclop特有就是将算子的执行逻辑编译成一个.o的执行文件让c能够直接调用图中标识7的部分算子执行库也就是ACLAscend c编译后的算子执行库图中标识8的部分hccl集合通信库执行库图中标识9的部分ascend的rumtime。runtime的作用也就是给你一个op或者说一张图让其在硬件升运行起来。
下一步将从源码的角度来看看具体的实现逻辑相关文章如下 Ascend Extension for PyTorch的源码解析