【云驻共创】昇腾异构计算架构CANN,助力释放硬件澎湃算力

星恒 发表于 2022/06/28 17:15:58 2022/06/28
【摘要】 CANN作为昇腾处理器的AI异构计算架构,支持业界多种主流的AI框架,包括MindSpore、TensorFlow、Pytorch、Caffe等,并提供1200多个基础算子。同时,CANN具有开放易用的ACL编程接口、实现对网络模型进行图级和算子级的编译优化,自动调优等功能。CANN对上承接多种AI框架,对下服务AI芯片与编程,是提升昇腾处理器计算效率的关键平台。

图片1.png

前言

CANN (Compute Architecture for Neural Networks)作为昇腾处理器的AI异构计算架构,支持业界多种主流的AI框架,包括MindSpore、TensorFlow、Pytorch、Caffe等,并提供1200多个基础算子。同时,CANN具有开放易用的ACL(Ascend Computing Language)编程接口、实现对网络模型进行图级和算子级的编译优化,自动调优等功能。CANN对上承接多种AI框架,对下服务AI芯片与编程,是提升昇腾处理器计算效率的关键平台。

一、AI发展趋势

图片2.png

近十几年来AI技术快速发展,在关键的一些局部领域开始出现技术突破,技术发展趋势已经开始融合到各行各业的发展中。

图片3.png

AI的巨变也刚开始,人工智能正从单点技术走向真正的通用技术,从大模型走向超大模型,从单模态走向多模态,而这些不同领域的技术,正是迈向通用人工智能路径的重要探索。

图片4.png

同时,人工智能发展也面临着重要的挑战,如何让用的上,用得起,用的好成为关键。其中,算力落地也面临着三个挑战,算法开发难、应用开发难、业务部署难,这也是我们正在解决的难题。

二、昇腾异构计算架构CANN

图片5.png

随着相关技术的不断发展,AI技术也面临着新的挑战、新的趋势和新的问题。超大规模模型、多模态以及未来AI结合科学计算会让计算的方式更加丰富,新的计算方式也会迭代出来。异构计算也在兴起,从整个业界的发展趋势来看,异构计算到了现在这个节点已经变成了不得不面临的问题。虽然这个概念提出了很长时间,因为半导体的发展速度在减慢,但是计算密度的要求越来越高,两个不对等的发展趋势推进了异构计算的发展。异构计算事实上是把不同类型多样化的计算模式放在不同特性的计算器上,以获得更好的效能比和更好的计算密度。但是也带了一个更严重的问题就是代码不好写,如果代码写的不好的话,效果会跌落的比较严重,在大型分布式集群系统上,编程和性能优化的问题就会带来严重的挑战。同时还涉及推理部署问题,涉及到多样性的场景、适应性等方面的问题。

图片6.png

上图是昇腾AI全栈解决方案图,从图中我们可以看到。异构计算架构这一层,对下要适应各个面向端、边、云不同类型的硬件形态,对上还要适配不同的计算框架去使更多的业务发挥关键的承上启下的作用。

图片7.png

上图是架构展开图,CANN 是华为针对 AI 场景推出的异构计算架构,通过提供多层次的编程接口,支持用户快速构建基于 Ascend 平台的 AI 应用和业务,CANN主要包括:

1、统一 APP 编程语言:提供一套标准的 ACL 编程接口,对应用程序开发者屏蔽底层多种芯片差异,提升用户 APP 编程易用性

2、统一网络构图接口:提供了标准的昇腾计算 AIR ,支持多框架,支持用户在昇腾芯片上快速部署神经网络业务

3、高性能计算引擎以及算子库:通过高性能编译引擎/执行引擎/调优引擎和预置高性能算子库,支撑客户快速部署神经网络业务、降低部署成本并最大程度发挥昇腾计算能力

4、基础服务:驱动、虚拟化、媒体、集合通信等能力

图片8.png

CANN1.0版本诞生于2018年,它和昇腾处理器一起发布。经过快速迭代,在技术和生态上不断突破,到2020年底基于CANN的鹏城云脑2正式发布。2021年4月在华为开发者大会上,发布了基于CANN研发的中文超大NLP模型-盘古,其参数超过2000亿。CANN的最新版本5.0也在2021年底正式发布,经过三年多的迭代发展,CANN 5.0的发布突破了多项关键技术,它的推出会使昇腾处理器的运算能力提升到一个新的高度。

图片9.png

通过软硬结合优化,CANN5.0获得了大幅性能提升,充分释放了昇腾处理器的澎湃算力,在硬件规模不变的情况下,CANN5.0相比CANN3.0,在大规模集群训练和常规模型训练中都实现了性能翻倍,在典型推理的性能上实现了百分之30%到140%的提升。

图片10.png

CANN5.0的性能大幅提升来源于关键技术的突破,其中包括自动流水、算子深度融合,自适应梯度切分,智能计算调优等,这些核心技术能够实现更高效的任务调度和更智能的数据切分。

图片11.png

CANN异构计算硬件架构的特点:

  • Host和Device并行
  • Device内部并行
  • AI Core内部并行

图片12.png

AI Core采用Da vinci架构,负责标量、向量和张量相关的计算密集型算子,包括计算单元、存储单元和控制单元。

图片13.png

采用Ascend 910执行ResNef50时,CANN 提供训练全下沉模式,追求极致性能,完整的训练 Step 都在 Device 上执行,与之并行的数据预处理模块,会源源不断的将网络需要的输入数据送至 Device ,从而训练的过程可以全下沉在 Device 上执行,只在必要的时候(如保存 weight ),才与 Host 交互一次。因而全下沉模式下,可以设置小循环 iteration _ per _ loop , Host 上的一次 Session Run ,会实际完成小循环次数个 Step 。当开启了全下沉,执行图上又有 Device 不支持的算子时,系统无法执行。

图片14.png

对于Resnet50P 训练任务下的梯度更新CANN 提供了 NPUDistributedOptimizer 高阶分布式表达接口,实现 allreduce 梯度聚合, NPUDistributedOptimizer 来封装单机训练优化器,构造成 NPU 分布式训练优化器,从而支持单机多卡、多机多卡等组网形式下,各个 Device 之间计算梯度后执行梯度聚合操作。用户调用 NPUDistributedOptimizer 优化器后,在生成的训练图中,梯度计算和更新算子之间插入了 allreduce 算子节点。

CANN 平台提供了多种融合规则,针对Resnet50典型残差网络, CONV + BN + Act 结构,经过融合,节点数由三个变成两个, Conv Op Act BN 吸收到各自的计算过程中,从而减少一次数据搬出和数据搬入,同时将 CUBE 计算和Vector 部分计算流水并行。

Fused operation ( Conv + BN + Act )

图片15.png

图片16.png

CANN 中通过软件模拟 issue queue ,根据不同流水间的依赖关系分析,通过自动乱序调度无依赖关系的指令和跨越多层循环数据搬运指令预取,提高 AICore 各流水并行度,在融合算子中性能提升明显。

图片17.png

AutoTune 是使用硬件资源对 TBE 算子性能进行自动调优的一个工具。相比于人工对算子性能调试,耗时更短、人力投入成本低,可以获得性能更优的模型。

图片18.png

图片19.png

图片20.png

CANN通过自动分解和并行技术使超大模型的处理变得和普通模型一样简单,同时也支持千亿级别的超大参数模型和单输入数据超大规格。CANN全面支持业界主流模型,相关的开发工具能够帮助开发者更好的进行开发。

三、生态策略及进展

CANN面向开发者全面开放生态,迄今为止,CANN社区活跃度较去年提升了三倍,相关软件的下载量和社区访问量都在成倍的增长,累积超过两百家高校研究团队合作他们逐渐成长我们核心开发者他们的深度使用可以不断的发现我们存在的短板不足,从而促使我们保持技术的先进性同时,我们发布了昇腾众智计划,邀请各高校企业参与到昇腾CANN的研发中来,他们贡献了四百个模型。截止到目前,开发者人数达到六十万,其中核心开发者接近九人,他们持续活跃在社区成为社区贡献的主力

图片21.png

CANN5.0在使能科研和应用方面也做出了巨大的贡献,CANN联合清华大学孵化了蛋白质结构预测方案AscendProNet,长序列预测效率比AF2提升了1.9倍。

 

图片22.png

总结

CANN作为昇腾处理器的AI异构计算架构,是连接芯片和AI框架的桥梁,在提高昇腾芯片的算力方面起着不可缺少的重要作用。随着CANN异构计算架构的不断迭代发展,相信在未来CANN能够解决相关代码编写困难、推理部署场景复杂等多方面的困难,助力异构计算的发展。

本文参与华为云社区【内容共创】活动第17期。

https://bbs.huaweicloud.com/blogs/358780

任务23昇腾异构计算架构CANN,助力释放硬件澎湃算力

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。