摘要:2021年12月,CANN5.0版本也将与大家正式见面,通过软硬件协同优化,该版本将会实现训练性能再翻倍,凭实力展现AI领域的「中国速度」!

本文分享自华为云社区《CANN 5.0硬核技术抢先看》,作者:kourei。

引言

2018年9月,CANN 1.0华为昇腾AI使能平台诞生;

2020年8月,CANN 3.0版本发布,作为专门面向AI场景的异构计算架构,搭起了上层深度学习框架和底层AI硬件平台的桥梁,开发效率和性能业界领先,可支撑用户全方位的人工智能计算诉求。

在最近一年中,CANN携手200+所高校/科研所,持续推进AI科研进步;

在CANN架构加持下,拥有千亿参数的盘古AI模型带来前所未有的商业价值;

昇腾社区开发者数量从10万增长到40万,生态阵营的蓬勃发展…

2021年12月,CANN5.0版本也将与大家正式见面,通过软硬件协同优化,该版本将会实现训练性能再翻倍,凭实力展现AI领域的「中国速度」!

先放几个彩蛋,让大家先睹为快!

核心技术铸就极致性能

CANN5.0相比于3.0版本,在典型推理场景,性能可实现30%到140%的提升;大规模集群训练及常用模型训练,更可达到性能翻番;

CANN 5.0性能大幅提升背后的关键技术有哪些?

任务自动流水

计算启动时过长的数据载入操作会阻塞后续计算流水的启动速度,就好比手机充电电量达到20%才能开机一样让人无法接受。

CANN 5.0将计算指令和数据载入实现多流水并行,该优化允许用户对载入数据进行分段,当载入数据满足分段数据量时即刻启动后续计算逻辑,同时后续数据持续载入,当后续分段数据载入完成且流水空闲时,依次再启动后续计算,充分发挥昇腾AI处理器多流水并行能力,实现无缝多流水衔接。

算子深度融合

随着网络结构的日益复杂,数据在内外存搬运、以及多算子对应多指令带来的性能开销已经越发不可忽视。

CANN 5.0在3.0基础上识别了更多的融合场景,通过多算子自动融合减少计算节点数,有效减少内存拷贝;并且通过灵活可定制的融合规则让计算图中的算子得以最大程度融合,为开发者赢得了更多的计算性能收益。

自适应梯度切分

在大规模集群训练场景下,通常需要进行成千上万次迭代计算,每次迭代包括正、反两个方向的逐层前馈计算。

大部分同步更新算法要求,在下一轮迭代正向计算开始前,各计算节点间需要同步好梯度数据,完成权重更新。这就会导致在两轮迭代之间产生等待间隙,即通信拖尾。

CANN 5.0通过智能梯度切分算法,自动搜索出最优梯度参数切分方式,为梯度传输选择合适的通信时机和通信量,最大限度让计算和通信并行执行,将通信拖尾时间降至最低,可促使集群训练达到最优性能。

AutoTune智能计算调优

就像我们不能期待千篇一律的美颜相机能够修饰出一个绝世美女,类似地,对于不同的网络,如果全部采用简单的数据切分策略,往往会导致计算单元无法满载,性能达不到预期。

CANN 5.0通过智能化数据切分技术,为网络量身定制一个最优的切分策略,实现单个计算单元满载计算,充分利用硬件资源,从而带来可观的性能收益。

同时为了解决调优耗时的问题,CANN 5.0预置了海量模型优化规则,可大大降低调优时长,给用户带来卓越的调优体验。

降低开发者使用门槛

除了性能上带来的惊喜,CANN 5.0更是在3.0基础上进一步简化了代码开发和调测方法,助力开发者实现高效AI开发。

• 支持模型自动迁移,无需手工修改代码,一键式完成模型移植,即刻畅想昇腾910 AI处理器带来的澎湃算力。

• 支持混合编程,在APP中直接调用算子函数,自动完成编译加载并执行。

• 支持自动生成算子测试代码,并可一键式执行出结果。

使能超大模型,加速创新

支持超大参数模型

近2年来,业界出现了非常多的大模型,例如GPT-3,参数量高达1750亿,单独一个大模型就需要月3TB的存储空间,而算力需求更是惊人。

为了解决模型“放得下”的问题,并且以一种友好的、几乎不用改变原有代码的方式让用户使用,CANN5.0在“AI编译器”这个层面,在优化器、梯度、权重等各维度进行模型并行训练。

通过不同层次的模型并行,将原本放不下的模型,分布式地部署在集群上,并且能够以较高的算力利用率进行训练。以83亿的Megatron模型为例,从单卡180GB左右的内存需求量降低到16G以下,这样,超大模型就可以“放得下”了。

支持超大图片计算

除此之外,在某些应用场景下,还可能遇到超大输入数据规格的挑战。

比如遥感应用领域,往往需要从茫茫大海中定位到一艘船,从广袤天空里定位到一架飞机,随着观测技术的进步,这些遥感图像的空间分辨率越来越高,平均可达CHW:4*30000*30000甚至更高,单样本大小往往2-3GB,超大图片计算已经成为了遥感应用产业发展的「卡脖子」问题。

CANN 5.0助力武汉大学打造全球首个遥感专用框架LuojiaNet,解决遥感影像“大幅面、多通道”的处理难题。实验证明,FCN8S模型在处理遥感数据集(图像分辨率3万*3万)时,精度提升显著。这其中隐藏了大量关键技术:

  • 图片大,显存不够怎么办?

充分利用集群优势,根据数据量和集群规模,完成图片自动切分,部署到各计算节点。

  • 特征跨度大,特征丢失,边缘失真怎么办?

在当前切片的卷积运算前,自动计算出具有相邻切片特征的overlap数据,为当前切片提供上下文信息,保证图片精度。

  • 如何高效交换overlap数据?

借助高效的alltoallv算子在相邻节点间收发数据,实现无阻塞通信。

CANN5.0依托自动分解和并行技术,将超大模型的处理同普通模型一样简单,相信在CANN5.0版本的助攻下,一定会促使AI产业不断加速创新,迎来新的爆发期。

ModelZoo全面支持业界主流模型

ModelZoo是昇腾提供的一个优选模型库,其装载的模型能够直接在昇腾AI处理器上高效执行。目前CANN5.0全面支持包括TensorFlow, PyTorch, ONNX在内的业界主流模型400+,同时算子完备度大幅提升。

开发者可移步昇腾社区Modelzoo进行体验。

合众之力,生态阵营蓬勃发展

CANN作为人工智能基础软件平台,持续在基础能力和关键技术上不断突破,但若想走的更远,唯有合众人之力。在过去的1年,CANN面向开发者的生态全面展开:

迄今为止,昇腾社区活跃度较去年提升3倍;当前已汇聚40万开发者,3千核心开发者,并计划于2022年发展百万开发者,1万核心开发者;累计与超过200家高校研究团队开展合作,众智项目贡献200+个模型及500+个算子。

聚是一团火,生态建设是使能AI产业持续发展的原动力,通过开放、合作、共赢的方式,CANN将不断携手合作伙伴,全方位、多维度支撑AI产业,助力人工智能繁荣发展!

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

CANN 5.0硬核技术抢先看的更多相关文章

  1. Django 2.0 新特性 抢先看!

    一.Python兼容性 Django 2.0支持Python3.4.3.5和3.6.Django官方强烈推荐每个系列的最新版本. 最重要的是Django 2.0不再支持Python2! Django ...

  2. 2.69分钟完成BERT训练!新发CANN 5.0加持

    摘要:快,着实有点快. 现在,经典模型BERT只需2.69分钟.ResNet只需16秒. 啪的一下,就能完成训练! 本文分享自华为云社区<这就是华为速度:2.69分钟完成BERT训练!新发CAN ...

  3. Android P新功能特性抢先看

    2018年3月8日,Google推出了Android P Preview版本,并提供官方镜像下载. 为了让广大开发者能够及时了解Android P的新功能特性,提前为您的app进行良好适配,WeTes ...

  4. 【转】OpenStack奥斯汀峰会Keynotes国内抢先看

    http://www.openstack.cn/?p=5341 OpenStack奥斯汀峰会Keynotes国内抢先看入口:http://www.tudou.com/home/_903780397/i ...

  5. .NET Core 2.0和ASP.NET Core 2.0正式版抢先体验

    .NET Core 2.0和ASP.NET Core 2.0正式版抢先体验 .NET Standard 2.0 is final Broad platform support. .NET Standa ...

  6. Win10《芒果TV》送7天免费会员,邀您抢先看萌心自制《妈妈是超人3》

    <妈妈是超人>第三季萌心归来,霍思燕,贾静雯,黄圣依,邓莎联合释放"妈妈的声音",嗯哼,咘咘,波妞,安迪,大麟子五位萌娃共同出镜,萌化屏幕.Win10<芒果TV& ...

  7. 我们建了一个 Golang 硬核技术交流群(内含视频福利)

    目录 目录 Golang 是什么? 我们为什么选择 Golang? Golang 是云时代的宠儿! 我们搞了一场 Golang 入门直播 Golang 是什么? Golang 是谷歌 2009 年发布 ...

  8. C# 8.0 抢先看-- Async Stream

    异步流? Async Stream 简单说来是一种非同步的迭代器模式,说更白一点就是可以await 的foreach.在过去的C# 中如果要回传一个可迭代的IEnumerable<T> , ...

  9. ThinkSNS+ alpha.2 版本发布,功能抢先看!【社交系统研发日记六】

    今天的研发日记,我们不讲技术,我们来看看,社交系统TS+从今天开始全面内测开始,都发布了什么功能. 其实,alpha.1 早上打的 tag ,晚上因为增加了两个核心功能,所以又打了 alpha.2 t ...

  10. 第五个神奇的电梯(代码抢先看<1>)

    关于一些自认为比较独特的设计思路,也不知道是好还是坏,放在这里让大家一起看一下. 关于mian函数:因为采用了注册机制所以主函数比较简单. #include "stdafx.h" ...

随机推荐

  1. Java Web程序在Tomcat上是如何运行的

    https://blog.csdn.net/fuzhongmin05/article/details/104379514 一个JVM是一个进程,JVM上跑Tomcat,Tomcat上可以部署多个应用. ...

  2. 【misc】ctfshow-stega10 --套娃

    附件下载下来是一张图片 各种隐写工具一把梭,无果,分析其二进制数据,把图片拖进hxd,发现一段疑似base64的东西 base64解密试试 解密出来是一个网址,打开下载第二个附件:flag.zip,打 ...

  3. 哪一个更好?Spring boot还是Node.js

    前言 本篇文章有些与众不同,由于我自己手头有些关于这个主题的个人经验,受其启发写出此文.虽然SpringBoot和Node.js服务于很不一样的场景,但是这两个框架共性惊人.其实每种语言都有不计其数的 ...

  4. 关于一类最优解存在长度为 $k$ 的循环节的问题

    灵感来源 问题形式:给定长度为 \(n\) 的序列,要求选出一些位置,使这些位置满足限制条件 \(T\),其中 \(T\) 可以表述为一个长度为 \(k\) 的环满足条件 \(T'\),选出第 \(i ...

  5. cyclone3内部资源

    CycloneIII内部资源概述 目录 CycloneIII内部资源概述 Logic Elements and Logic Array Blocks(逻辑元件和逻辑阵列块) LE LAB LAB In ...

  6. Unity学习笔记--数据持久化XML文件(2)

    IXmlSerializable接口: 使用该接口可以帮助处理不能被序列化和反序列化的特殊类得到处理, 使特殊类继承IXmlSerializable接口 ,实现其中的读写方法,检测到读写方法被重写之后 ...

  7. 分享一个LCD驱动框架

    首先需要说明的是本篇文章不是关于如何点亮一块LCD屏的教程,而是介绍一个LCD开发框架,更准确的说是介绍一个LCD的中间件(Middlwware),用来连接UI和不同类型的LCD屏.笔者本人的工作内容 ...

  8. SpringBoot Seata 死锁问题排查

    现象描述:Spring Boot项目,启动的时候卡住了,一直卡在那里不动,没有报错,也没有日志输出 但是,奇怪的是,本地可以正常启动 好吧,姑且先不深究为什么本地可以启动而部署到服务器上就无法启动的问 ...

  9. CTT2023 邮寄

    从广州被邮寄到了苏州.还有点感冒有点咳嗽,体温 37 度.还是来了. Day 0 清早坐 xp 的车,早上坐飞机,中午坐高铁,下午坐大巴,风尘仆仆地赶到了苏州. 飞机上有一套省选题要验,看了两眼,T1 ...

  10. [CF568E] Longest Increasing Subsequence

    题目描述 Note that the memory limit in this problem is less than usual. Let's consider an array consisti ...