当前位置: 首页 > news >正文

Ascend Extension for PyTorch是个what?

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. 图中标识1的部分,这个是业务层,比如训练,推理等;
  2. 图中标识2的部分,是torch的原有python接口,方便用户侧调用。
  3. 图中标识3的部分,ascend对外提供的python接口,比如在分布式下,ascend是hccl,而gpu是nccl;在用户脚本侧,就得调用对应的接口;
  4. 图中标识4的部分,这个是pybind层。熟悉pytorch的这层作用很明了。python侧只是用户python中脚本呈现的,真正下发到硬件上去执行,都是c++侧下发。从python到c++,就有一个pybind的过程,也就是cpython。
  5. 图中标识5的部分,是框架中的通用层,比如算子关系,tensor实现,memory申请实现等;
  6. 图中标识6的部分,这个是ascend上特有的,如aclop需要编译然后执行(aclop特有),就是将算子的执行逻辑编译成一个.o的执行文件,让c++能够直接调用;
  7. 图中标识7的部分,算子执行库;也就是ACL(Ascend c)编译后的算子执行库;
  8. 图中标识8的部分,hccl(集合通信库)执行库;
  9. 图中标识9的部分,ascend的rumtime。runtime的作用,也就是给你一个op或者说一张图,让其在硬件升运行起来。

下一步,将从源码的角度来看看具体的实现逻辑,相关文章如下:
Ascend Extension for PyTorch的源码解析

http://www.lryc.cn/news/480489.html

相关文章:

  • 学习docker第五弹-----高级篇start-Dockerfile
  • 【Elasticsearch】Elasticsearch集成Spring Boot
  • HarmonyOS 移
  • 跨子网的WinCC客户机/服务器如何实现通讯?
  • java 面向对象高级
  • 递推经典例题 - 爬楼梯
  • OpenCV视觉分析之目标跟踪(12)找到局部的最大值函数meanShift()的使用
  • 《数据治理精选案例集2.0(2024版)》592页PDF(已授权分享)
  • 【51单片机】LED点阵屏 原理 + 使用
  • Java基于SpringBoot+Vue的宠物共享平台的设计与实现(附源码,文档)
  • 【案例】Excel使用宏来批量插入图片
  • 报名开启|开放原子大赛“Rust数据结构与算法学习赛”
  • [翻译] 创始人模式(Founder Mode)
  • 拓扑排序(C++类封装+数组模拟队列和邻接表)
  • FP独立站引流革命:GG斗篷技术解锁流量新策略
  • 管道(Pipes)、过滤器(Filters)和拦截器(Interceptors)
  • uniapp组件样式运行至小程序失效
  • 认识鸿蒙系统
  • Docker Compose部署Rabbitmq(Dockerfile安装延迟队列)
  • 硬件基础06 滤波器——无源、有源(含Filter Solutions、Filter Pro、MATLAB Fdatool)
  • shopify模块新增内容或图片
  • 【EMNLP2024】基于多轮课程学习的大语言模型蒸馏算法 TAPIR
  • 置信传播算法复现
  • 【在Linux世界中追寻伟大的One Piece】poll代码改写
  • C++builder中的人工智能(17):神经网络中的自我规则非单调(Mish)激活函数
  • Java 的 Scanner 类:控制台输入与文件扫描
  • 使用纯HTML和CSS绘制圣诞树:打造网页中的冬日奇景
  • 深度学习-图像评分实验(TensorFlow框架运用、读取处理图片、模型建构)
  • 羲和数据集收集器0.9
  • 哈尔滨等保测评常见误区破解:避免陷入安全盲区