摘要: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垃圾分类应用:

  1. 运行管理资源申请:用于初始化系统内部资源。
  2. 加载模型文件并构建输出内存:将开源模型转换成CANN支持的om模型,并加载到内存;获取模型基本信息,构建模型输出内存,为后续模型推理做准备。
  3. 数据预处理:对读入的图像数据进行预处理,然后构建模型的输入数据。
  4. 模型推理:根据构建好的模型输入数据进行模型推理。
  5. 解析推理结果:根据模型输出,解析模型的推理结果。

灵活的算子开发接口

当你的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处理器多机多卡训练提供了数据并行/模型并行的高性能集合通信方案:

  1. server内高速HCCS Mesh互联和server间无阻塞RDMA组网的两级拓扑组网,配合拓扑自适应通信算法,能充分利用链路带宽,并将server间的数据传输量并行均分至各个独立的网络平面,大大提升超大规模集群下模型训练线性度。
  2. 集成高速通信引擎和专用硬件调度引擎,大幅降低通信调度开销,实现通信任务和计算任务统一和谐调度,精准控制系统抖动。

如果把“鹏城云脑II”比作一个大型交响乐团,那么CANN就是一名优秀的指挥家,携手昇腾AI处理器,开启了AI超算时代新篇章。

8、写在最后

CANN在2018年发布伊始便不断尝试突破,带给开发者极简体验,释放AI硬件的极致性能,成为了支撑CANN在人工智能领域行走的双腿。

相信它会矢志不渝地在AI这条赛道上,携手想要改变世界的人,一起改变世界,共筑未来!

2021年年底,CANN也要迎来崭新的、更加强大的5.0版本,它到底会带来哪些惊喜呢?让我们拭目以待吧!

点击关注,第一时间了解华为云新鲜技术~

大力出奇迹,揭秘昇腾CANN的AI超能力的更多相关文章

  1. 一键抠除路人甲,昇腾CANN带你识破神秘的“AI消除术”

    摘要:都说人工智能改变了生活,你感觉到了么?AI的魔力就在你抠去路人甲的一瞬间来到了你身边.今天就跟大家聊聊--神秘的"AI消除术". 引语 旅途归来,重温美好却被秀丽河山前的路人 ...

  2. spring-boot-starter大力出奇迹

    一.前言 ​ 上篇文章我们已经聊了SpringBoot的启动过程中的各类扩展点,那么从http://start.spring.io上我们生成的demo项目中,到目前就剩下了maven工程的pom.xm ...

  3. BZOJ1201 [HNOI2005]数三角形 大力出奇迹

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1201 题意概括 题解 n3跑过去了,大力出奇迹!简单的,不多说了. 代码 #include < ...

  4. Manthan, Codefest 16 H. Fibonacci-ish II 大力出奇迹 莫队 线段树 矩阵

    H. Fibonacci-ish II 题目连接: http://codeforces.com/contest/633/problem/H Description Yash is finally ti ...

  5. SID1190471 / 烦人的幻灯片 暴力出奇迹 !!!!!!!!!!!!!!!!!!

    PID221 / 烦人的幻灯片 ☆ 提交你的代码 查看讨论和题解 你还木有做过哦 我的状态         查看最后一次评测记录 质量还不能统计出来哦~ 题目评价 质量 无 ★★★★★ ★★★★☆ ★ ...

  6. Topcoder SRM 638 DIV 2 (大力出奇迹)

    水题,就是一个暴力.大力出奇迹. Problem Statement   There is a narrow passage. Inside the passage there are some wo ...

  7. 紫书 习题 8-2 UVa 1610 (暴力出奇迹)

    这道题我真的想的非常的复杂, 拿草稿纸一直在找规律,推公式, 然后总有一些特殊的情况. 然后就WA了N次.无奈之下看了别人的博客, 然后就惊了.直接暴力枚举两个相邻字符串 里面的所有可能就可以了--真 ...

  8. 昇腾CANN论文上榜CVPR,全景图像生成算法交互性再增强!

    摘要:近日,CVPR 2022放榜,基于CANN的AI论文<Interactive Image Synthesis with Panoptic Layout Generation>强势上榜 ...

  9. 开发实践丨昇腾CANN的推理应用开发体验

    摘要:这是关于一次 Ascend 在线实验的记录,主要内容是通过网络模型加载.推理.结果输出的部署全流程展示,从而快速熟悉并掌握 ACL(Ascend Computing Language)基本开发流 ...

  10. CodeForces#378--A, B , D--暴力出奇迹....

    A题 A. Grasshopper And the String time limit per test 1 second memory limit per test 256 megabytes in ...

随机推荐

  1. Istio 入门(七):出入口网关 - 负载均衡和熔断等一系列功能

    本教程已加入 Istio 系列:https://istio.whuanle.cn 目录 5,出入口网关 istio-ingressgateway 部署服务 配置 Gateway 子版本 istio-e ...

  2. 周藤 CSP-2023游记

    Day -inf~Day -2 基本上是考试状态,每天我都是自己取随机题目做,不过也保证了落实量 每场模拟赛发挥基本上是不是特别稳定,考得好的时候AK了,考不好的时候只有300分,反正同届差不多第一吧 ...

  3. mybatis 操作 mysql 动态创建数据表

    Map 数据一般是根据需求生成的,例如 map.put("ticketId",176),map.put("ticketName","测试工单" ...

  4. CSS z-index属性层重叠顺序

    作者:WangMin 格言:努力做好自己喜欢的每一件事 对于所有定位,最后都不免遇到两个元素试图放在同一位置上的情况.显然,其中一个必须遮住另一个.但是如何控制哪个元素放在上层,这就出现了z-inde ...

  5. OceanBase金融SQL、亿万级别据量优化案例(Row_number 开窗 + 分页SQL)

    最近优化了不少SQL,简单的SQL顺手搞了不好意思发出来了忽悠人,复杂很考验逻辑思维的,但是又不想分享出来(自己收藏的案例),怕被人抄袭思路. 今天遇到一条很有意思的SQL案例:  性能SQL(金融行 ...

  6. 题解 CF1742G

    题目描述: 给你一个序列 \(A\),要求将 \(A\) 重新排序,使得序列 \(A\) 的前缀或和序列 \(B\) 的字典序最大. 题目分析: 这道题我们首先考虑一个性质,就是前缀或和序列 \(B\ ...

  7. MySQL函数解读

    一.字符串函数 1.1.instr() INSTR(str,substr)一共有两个参数str被查询字符,substr查询字符,查询时下标从1开始记,只查询第一次出现的地方,为查询到显示为0 一般用法 ...

  8. L3-013 非常弹的球

    初速度:\(v = \sqrt{\cfrac{2 * E}{m}};\) 竖直速度:\(v_y = v \,sin(ans) = g * t\) 水平距离:\(s = v_x * 2t = v \, ...

  9. 从一个 Demo 说起 Dubbo3

    简介 2017年的9月份,阿里宣布重启Dubbo的开发维护,并且后续又将Dubbo捐献给了Apache,经过多年的发展已经发布到3.X版本了,Dubbo重启维护之后是否有值得我们期待的功能呢,下面就来 ...

  10. IDEA提示Cannot resolve method 'getContextPath()'

    一.问题原因: 二.解决方案: 1.打开Project Structure 2.new一个新的Java的project library文件 3.选择tomcat路径下的lib文件夹. 三.完成 可以看 ...