摘要:CANN(Compute Architecture for Neural Networks)异构计算架构,是以晋升用户开发效率和开释昇腾AI处理器极致算力为指标,专门面向AI场景的异构计算架构。
1、引言
从2016年,战败世界顶级棋手,强势将了人类一军的AlphaGo,
到2020年,会写小说、编剧本、敲代码,科科满分样样全能的GPT-3,
再到2021年,最靠近人类中文理解能力,泛化力超群的盘古大模型…
近几年的人工智能畛域,像开了挂一样,一直刷新人类认知,颠覆人类设想…
和人类把握某项技能一样,训练一个足够聪慧的AI算法模型往往须要成千上万的数据量。以GPT-3为例,其参数量曾经达到1750亿、样本大小有45TB之多,单次训练工夫以月为单位,算力诉求已是挡在AI赛道上的绊脚石!
同时,随着人工智能利用日益成熟,文本、图片、音频、视频等非结构化数据的解决需要呈指数级增长,数据处理过程从通用计算逐渐向异构计算适度。
华为推出的昇腾AI根底软硬件平台。其中,昇腾AI处理器+ 异构计算架构CANN,带着与生俱来的超强算力和异构计算能力,软硬件强强联合,正逐步成为促成AI产业疾速落地的催化剂。
CANN(Compute Architecture for Neural Networks)异构计算架构,是以晋升用户开发效率和开释昇腾AI处理器极致算力为指标,专门面向AI场景的异构计算架构。对上反对支流前端框架,向下对用户屏蔽系列化芯片的硬件差别,以全场景、低门槛、高性能的劣势,满足用户全方位的人工智能诉求。
2、支流前端框架兼容,疾速搞定算法移植
目前人工智能畛域内,AI算法模型搭建方面的技能曾经是炉火纯青,市面上用于AI模型搭建的深度学习框架,除了华为开源的MindSpore,还有Google的TensorFlow、Facebook的PyTorch、Caffe等。
CANN通过Plugin适配层,能轻松承接基于不同框架开发的AI模型,将不同框架定义的模型转换成标准化的Ascend IR(Intermediate Representation)表白的图格局,屏蔽框架差别。
这样,开发者只须要非常少的改变,即可疾速搞定算法移植,体验昇腾AI处理器的磅礴算力,大大减少了切换平台的代价,就说它香不香?
3、简略易用的开发接口,让小白也能玩转AI
依附人工智能实现智能化转型,简直成为了各行各业的必修课,CANN秉承极简开发的理念,提供了一套简略易用的AscendCL(Ascend Computing Language)编程接口,为开发者屏蔽底层处理器的差别,你只须要把握一套API,就能够全面利用于昇腾全系列AI处理器。
同时,可能满足开发者可能在将来CANN版本升级的状况下,仍然能够做到后向全面兼容,且运行效率不打折扣!
简略的AI利用开发接口
人工智能寄托着人类对将来美好生活的神往,当咱们每天面对“这是什么垃圾,要扔在哪个桶里”的灵魂拷问的时候,一个AI垃圾分类桶利用,就能把你从生灵涂炭中解救出来。
AscendCL提供了一套用于开发深度神经网络推理利用的C语言API库,兼具运行时资源管理、模型加载与执行、图像预处理等能力,可能让开发者轻松解锁图片分类、指标辨认等各类AI利用。并且能够做到即反对通过支流开源框架调用AscendCL库,也反对间接调用CANN凋谢的AscendCL编程接口。
上面教你5步搞定AI垃圾分类利用:
- 运行治理资源申请:用于初始化零碎外部资源。
- 加载模型文件并构建输入内存:将开源模型转换成CANN反对的om模型,并加载到内存;获取模型根本信息,构建模型输入内存,为后续模型推理做筹备。
- 数据预处理:对读入的图像数据进行预处理,而后构建模型的输出数据。
- 模型推理:依据构建好的模型输出数据进行模型推理。
- 解析推理后果:依据模型输入,解析模型的推理后果。
灵便的算子开发接口
当你的AI模型中有CANN尚未反对的算子,或者想要批改已有算子以晋升计算性能时,能够利用CANN凋谢的自定义算子开发接口,得心应手地开发你想要的算子。
面向不同程度的AI开发者,CANN提供高效(TBE-DSL)和业余(TBE-TIK)两种算子开发模式,可灵便满足不同档次程度的开发者。
其中,TBE-DSL的入门难度较低,它能够主动实现数据的切分和调度,开发者只需关注算子自身的计算逻辑,无需理解硬件细节,即可开发出高性能算子。
TBE-TIK绝对难一些,不像TBE-DSL只是在高层形象编程,而是提供指令级编程和调优能力,开发者须要手工实现类指令级调用,这样能充沛开掘硬件能力,实现更加高效和简单的算子。
便捷的IR构图接口
另外,开发者还能够通过标准化的Ascend IR(Intermediate Representation)接口,抛开深度学习框架自身,间接调用CANN中的算子库,构建出能够在昇腾AI处理器上执行的高性能模型。
4、1200+高性能算子库,筑起磅礴算力源泉
基于深度学习框架构建的模型,其实是由一个个计算单元组成,咱们称这些计算单元为算子(Operator,简称Op),它对应着特定的计算逻辑。
算子在硬件上的减速计算形成了减速神经网络的根底和外围。目前CANN提供了1200+种深度优化的、硬件亲和的算子,正是如此丰盛的高性能算子,筑起了磅礴的算力源泉,让你的神经网络「刹时」减速。
- NN(Neural Network)算子库:CANN笼罩了包含TensorFlow、Pytorch、MindSpore、ONNX框架在内的,罕用深度学习算法的计算类型,在CANN所有的算子中占有最大比重,用户只须要关注算法细节的实现,大部分状况下不须要本人开发和调试算子。
- BLAS(Basic Linear Algebra Subprograms)算子库:BLAS为根底线性代数程序集,是进行向量和矩阵等根本线性代数操作的数值库,CANN反对通用的矩阵乘和根底的Max、Min、Sum、乘加等运算。
- DVPP(Digital Video Pre-Processor)算子库:提供高性能的视频编解码、图片编解码、图像裁剪缩放等预处理能力。
- AIPP(AI Pre-Processing)算子库:次要实现扭转图像尺寸、色域转换(转换图像格式)、减均值/乘系数(图像归一化),并与模型推理过程交融,以满足推理输出要求。
- HCCL(Huawei Collective Communication Library)算子库:次要提供单机多卡以及多机多卡间的Broadcast,allreduce,reducescatter,allgather等汇合通信性能,在分布式训练中提供高效的数据传输能力。
5、高性能图编译器,赋予神经网络超能力
世间最苦是期待,等红绿灯,等寒暑假,等外卖,等那个对的人…
人工智能畛域也是一样,随着神经网络构造的疾速演进,单纯利用手工优化来解决AI模型性能问题越来越容易呈现瓶颈,CANN的图编译器像是一个魔法师,将具备较高形象度的计算图,依据昇腾AI处理器的硬件构造特点,进行编译优化,从而可能高效执行。
魔法师到底有哪些「神操作」呢?
主动算子交融:基于算子、子图、SCOPE等多维度进行主动交融,无效缩小计算节点,大幅缩小计算工夫。
Buffer交融:针对神经网络计算大数据吞吐,memory bound问题,通过缩小数据搬运次数、晋升昇腾AI处理器内缓存利用率,晋升计算效率。
咱们对Buffer交融前后做一比对:
交融前,算子1在昇腾AI处理器上计算完后,将数据从昇腾AI处理器内的缓存buffer搬运到内部存储,算子2从内部存储获取数据作为输出,搬入缓存buffer进行计算。交融后,算子1计算实现后,数据保留在缓存buffer,算子2从缓存buffer间接获取数据进行算子2的计算,无效缩小数据搬运次数,晋升了计算性能。
全图下沉:昇腾AI处理器,集成了丰盛的计算设施资源,比方AICore/AICPU/DVPP/AIPP等,正是得益于昇腾AI处理器上丰盛的土壤,使得CANN不仅能够将计算局部下沉到昇腾AI处理器减速,还能够将控制流、DVPP、通信局部一并下沉执行。尤其在训练场景,这种把逻辑简单计算图的全副闭环在AI处理器内执行的能力,能无效缩小和Host CPU的交互工夫,晋升计算性能。
异构调度能力:当计算图中含有多类型的计算工作时,CANN充分利用昇腾AI处理器丰盛的异构计算资源,在满足图中依赖关系的前提下,将计算任务分配给不同的计算资源,实现并行计算,晋升各计算单元的资源利用率,最终晋升计算工作的整体效率。
6、主动混合精度,无效达到收益均衡
顾名思义,主动混合精度是一种主动将半精度和单精度混合应用,从而减速模型执行的技术,在大规模模型训练场景下有着不可或缺的位置。
单精度(Float Precision32,FP32)是计算机罕用的一种数据类型,半精度(Float Precision16,FP16)则是一种绝对较新的浮点类型,在计算机中应用 2 字节(16 位)存储,实用于精度要求不高的场景。
不言而喻,应用FP16类型必定会带来计算精度上的损失,但对于深度学习训练而言,并不是所有计算都要求很高的精度。因而,能够将计算图中对精度不敏感的算子应用FP16类型减速计算,可无效缩小内存应用,达到性能和精度均衡。
7、E级集群,开启AI超算时代
随着支流深度学习模型所可能解决的问题日趋简单,模型自身的复杂度也开始增大,人工智能畛域须要更弱小的算力,来满足将来网络的训练需要。
基于昇腾AI根底软硬件的“鹏城云脑II”,突破了当今业内百P级FLOPS(每秒十亿亿次计算)的算力天花板,让E级FLOPS(每秒百亿亿次计算)算力场景迈上了历史舞台。
它集成了数千颗昇腾AI处理器,总算力达到 256-1024 PFLOPS,也就是每秒25.6-102.4亿亿次浮点运算。
如何高效调度上千颗昇腾AI处理器,是大规模集群网络面临的难题。
CANN集成了HCCL(Huawei Collective Communication Library,华为汇合通信库),为昇腾AI处理器多机多卡训练提供了数据并行/模型并行的高性能汇合通信计划:
- server内高速HCCS Mesh互联和server间无阻塞RDMA组网的两级拓扑组网,配合拓扑自适应通信算法,能充分利用链路带宽,并将server间的数据传输量并行均分至各个独立的网络立体,大大晋升超大规模集群下模型训练线性度。
- 集成高速通信引擎和专用硬件调度引擎,大幅升高通信调度开销,实现通信工作和计算工作对立谐和调度,精准控制系统抖动。
如果把“鹏城云脑II”比作一个大型交响乐团,那么CANN就是一名优良的指挥家,携手昇腾AI处理器,开启了AI超算时代新篇章。
8、写在最初
CANN在2018年公布伊始便一直尝试冲破,带给开发者极简体验,开释AI硬件的极致性能,成为了撑持CANN在人工智能畛域行走的双腿。
置信它会矢志不渝地在AI这条赛道上,携手想要扭转世界的人,一起扭转世界,共筑将来!
2021年年底,CANN也要迎来簇新的、更加弱小的5.0版本,它到底会带来哪些惊喜呢?让咱们刮目相待吧!
点击关注,第一工夫理解华为云陈腐技术~