2020-08-14 14:41:45
最近,火遍全球的GPT3,有1750亿个参数,解锁各项技能,和人类对话,无所不能。GPT-3正是AI崛起,突飞猛进的最佳例证。
但在众人惊叹之时,却不知道,训练他Open AI可是花费了460万美元。如果不是以API的方式开放给普通用户使用,这个NLP神器可不是大家都能玩的起的。
AI训练的高成本、算力的昂贵,导致了这种意义上的开发只是科技大佬们展示技术实力的专利,在大众心中,AI仿佛只是看上去很美。
如今,AI已经进入了全面落地的阶段,未来想要让AI真正像水和电一样无处不在,还面临着重大的鸿沟。除了高成本,从模型开发到商用也还有很大的距离,各场景下的AI算法已经比较成熟,但是模型迁移适配要耗费的人力物力太多。
华为昇腾计算业务总裁许映童表示,目前的AI应用普遍存在一个问题,训练侧和推理侧的设备相互独立,业务流程分割,很多环节需要人为干预,开发成本的提升,几乎抵消掉了AI带来的便利。
而且场景多种多样,设备各异,导致AI融入实际应用的门槛很高,比如说用终端开发的AI应用在云端就有可能不兼容。那有没有通用的方法可以实现全场景的高效开发?
为了解决算力成本高、模型开发效率低的问题,昇腾专门设计了异构计算架构CANN 3.0。
早在2018年10月10日,华为在全联接大会上发布AI战略时,就发布了异构计算架构CANN 1.0,CANN 3.0已经是第三个版本了,目前已经统一了编程架构,做到了端边云全场景协同。
CANN 1.0注重边缘侧的推理,让终端应用的推理速度更快。
CANN 2.0打通了数据中心和训练端,提高了训练的效率。
CANN 3.0全场景都具备极强的伸缩性和可适应性,让开发者不用再纠结终端是手机、摄像头还是机器人,也不用关心硬件使用了哪种操作系统,Linux、Android、鸿蒙OS都没有问题。
目前CANN 3.0已经覆盖10+操作系统和14+智能终端设备,一次编写代码,就能实现端边云全场景复用,极大提升了开发效率。
那CANN 3.0相比之前的两个版本,有哪些优势呢?
软硬件解耦,一套代码通全关
高性能的AI开发一定是软硬协同设计的,像谷歌的TensorFlow在自家的TPU上性能是要好于英伟达GPU的,这种软硬件高度耦合的模式虽然效率高,也有缺点,某个TPU上表现优异的模型换个硬件可能就「哑火」了。
而CANN 3.0的代码是普适的,对端、边、云全场景下的训练、推理硬件没有特定依赖,它为用户提供了丰富的算子库和难易结合的编程方法,开发一套代码,就能在各种终端硬件上复用,性能还可以发挥到最好。
指令级算子开发满足高手的性能控制欲
说到算子开发,CANN 3.0为了满足不同水平的AI开发者需求,支持普通和专业两种算子开发模式。
对普通开发者,建议使用TBE-DSL。DSL可自动实现数据切分和调度,覆盖了70%的算子,开发者只需关注计算如何实现,调用已有的算子即可,将算子开发时间降低70%。
而对性能有极致追求的高级开发者,可以通过TBE-TIK实现指令级编程和调优过程,可覆盖全部算子,如果开发者对底层原理比较熟悉,这种方式可以进一步挖掘硬件的计算潜力。
不论升级到哪个版本,CANN 3.0都可以继续使用
花很大精力对算子进行了优化,突然有一天CANN升级到4.0了,代码是不是就失效了?
CANN 3.0充分考虑了软件的生命周期。在顶层提供了昇腾统一编程接口AscendCL,将API进行了归一化,即使CANN升级到4.0、5.0版本,基于CANN 3.0开发的代码依旧可以使用。
许映童表示,CANN升级后,老版本代码最多需要重新编译下,而无需修改,简直是开发人员的福音。
后向兼容,对CANN的研发人员是极大的挑战。CANN 3.0做了后向兼容,让用户享受到最新的性能提升的同时,还可节省开发成本,保证了软件的持久生命力。「把复杂留给自己,把简单留给客户」也是昇腾一直坚持的产品理念。
除了高效开发,CANN还打通了AI算法和计算优化的「任督二脉」。
TensorFlow的开放性以及完善的社区建设,以及对多种不同硬件平台的支持,让谷歌在AI模型开发框架上占据了相当大的优势。
除了TensorFlow,PyTorch、Caffe、Mxnet等开发框架也有很多厂商在用,尤其PyTorch,大有超越TensorFlow的趋势,学术界很多先进的模型都是使用PyTorch开发。
这样就有个问题,不同框架开发的模型,在不同的系统、不同的设备上不能通用,需要二次开发,ONNX类似的工具虽然可以支持不同框架的模型,但这些非原生工具会遇到各种各样的bug,还无法溯源。
在实验室中很多SOTA模型是用PyTorch写的,但是到部署端的架构只支持TensorFlow,就需要重写模型,效率很低。
但每个框架都有自己的优点,TF性能稳定、PyTorch的动态图很灵活、Mxnet有很多成体系的视觉算法库,所以AI算法层面最好能兼容它们。
AI计算平台的核心能力构建包括两方面:上层的AI算法和下层的高性能计算。
CANN 3.0上可以接各种深度学习编程框架的AI算法,下可以加速昇腾全系列AI芯片的训练和推理速度,是昇腾的真核心。那么CANN 3.0是如何实现芯片加速的?
过去几年,英伟达能在AI计算领域大展拳脚,很大程度上得益于CUDA和cuDNN等加速插件库,而CANN就是昇腾系列的「CUDA」。
CANN 3.0通过AscendCL提供 Device 管理、Context 管理、Stream 管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等 C++ API 库供用户开发深度神经网络应用,用户可以用任何第三方框架调用这些API库,而无需关心计算资源优化的问题。
那CANN 3.0如何实现的计算资源智能分配?
神经网络可看作一张张的图,过去大部分图在HostCPU执行,如今昇腾的图编译器,实现了整图下沉,图和算子均可在Device侧执行,减少了芯片与Host CPU的交互时间,从而更充分地发挥昇腾芯片的算力。
像TF搭建的神经网络都是一张张计算图,过去这些图都在HostCPU中执行,资源允许的时候整个图都在HostCPU中执行效率是很高的,但是资源有限的情况就需要Device侧协同处理,也就是昇腾加速卡中,通过把整张图下沉到Device中,可以高效协同CPU完成计算。
根据图的特点和计算资源的分配情况,CANN可以自动进行图的拆分和融合,尽量减少和HostCPU的交互,交互少了,计算资源就能持续保持高强度运转。
数据Pipeline智能优化极大提升了数据资源处理效率,通过人工智能实现数据的自动切分与智能分配流水,以最大化个体计算单元的使用率,从而提高计算效率。
除了图自动编译和图的拆分融合优化,CANN 3.0的1000+算子库让你的神经网络「瞬时」加速。
强如英伟达,cuDNN也只有一百多个算子,CANN 3.0不仅包括了常用的Caffe 及 TF 算子,还独立提供各种加速库,这些加速库可通过 ACL统一编程接口实现,如矩阵乘接口等。
CANN 3.0现在的架构功能十分完善,对外提供适配不同硬件、不同 OS 的驱动,支持GPU+CPU异构通信,对内可实现Stream、内存等底层管理,丰富的加速库支持算子/标量/向量等通用计算,能高效完成图像和视频数据的预处理,执行引擎为深度神经网络计算提供了执行上的保障。
给AI硬件插上翅膀,CANN 3.0打开算力「潘多拉魔盒」
有了CANN 3.0保驾护航,在主流推理场景,昇腾AI推理卡Atlas 300I性能得到大幅提升。
要验证推理性能,多路高清视频分析的场景再合适不过了,高清视频本身流量大,加上多路融合更考验计算平台的并发处理能力,实测表明单张Atlas 300I推理卡可同时处理80路1080p、25FPS的高清视频,是当前市面上同类推理卡路数的2倍。
对交通、安防等场景来说,需要同时处理的视频路数就更多了,少则几百,多则上万,如果单卡能处理更多的任务,规模化应用时成本优势就会扩大,而且硬件数量少了更容易部署。所以很多人工智能厂商,正基于昇腾AI推理卡打造极致性能的高路数视频分析解决方案。
在训练端华为也有高密度「算力狂魔」,实测表明,Atlas 800在多个模型的训练中都优于业界新品训练服务器,平均性能领先业界2.5倍。
可以看到,昇腾的训练卡和推理卡「单兵」作战能力极强,如果把它们集结起来能成为一支算力特种部队吗?
「指挥官」CANN说:可以。
受机器间通信能力的影响,多个机器同时处理一个任务时,如果计算资源分配不好,总体性能会大打折扣。CANN要做的就是分配给「单兵」任务,让它们能高效协同作战,事实也证明经过L2网络与CANN的联合「指挥」优化,昇腾AI集群实现了1+1>2的性能提升,远超友军。
CANN 3.0不仅降低了各个领域使用昇腾芯片开发应用的难度,还提供了很多优秀的中间件和基础库使能各个厂商,但面对谷歌、英伟达、英特尔等国际巨头的强力竞争,想要生存下去,还是要构建一个完整的生态,为学术界和产业界贡献更多算力,为合作伙伴创造更多价值。
CANN并不是单打独斗,光有一个计算架构也建立不了AI计算的生态。
今年3月份,华为开源了MindSpore,这是一款支持端边云全场景的AI框架,可广泛应用于计算机视觉、自然语言处理等AI领域。
使用MindSpore可以显著减少训练时间和成本,用最少的资源实现最高的效能,MindSpore原生支持昇腾AI处理器,让AI模型开发更加简洁高效。
在刚刚过去的HAI大会上,华为昇腾正式发布了昇腾应用使能MindX,它包括了Atlas深度学习平台MindX DL、Atlas智能边缘平台MindX Edge、优选模型库ModelZoo和各种行业SDK。
MindX DL通过数据中心设备与计算资源统一管理与调度,可以在计算集群上快速搭建起商用深度学习系统,许映童说,有需求的用户以此为基础,进行简单二次开发就可以满足业务需求,快速上线。
MindX Edge是面向推理端的平台,可以实现轻量化部署,支持摄像头、无人机等多种形态的推理硬件。
ModelZoo和行业SDK包含大量的主流的模型,能帮助开发人员迅速构建多场景下的AI应用。
这么多的平台和工具,从模型到算子到行业SDK,如果每个环节都要自己搭建开发环境,CANN、MindSpore、MindX的开发优势将荡然无存,所以华为推出了一个全流程工具链MindStudio 2.0,有了它,所有的开发工作都能在一个环境下完成并且支持一键部署。
正如华为昇腾计算业务CTO周斌所说,「MindStudio才是开发者的AK47」!你的盒子枪可以扔了。
根据中国《新一代人工智能发展规划》,到2030年,将带动人工智能相关产业规模超过10万亿元。如此大的产业规模,所需的算力会远远超过1750亿参数的GPT-3,而昇腾AI计算平台会填补这个「算力真空」,赋能千行百业,为AI提供无处不在的算力,昇腾AI未来可期!