CANN 5.0硬核技术抢先看
摘要: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硬核技术抢先看的更多相关文章
- Django 2.0 新特性 抢先看!
一.Python兼容性 Django 2.0支持Python3.4.3.5和3.6.Django官方强烈推荐每个系列的最新版本. 最重要的是Django 2.0不再支持Python2! Django ...
- 2.69分钟完成BERT训练!新发CANN 5.0加持
摘要:快,着实有点快. 现在,经典模型BERT只需2.69分钟.ResNet只需16秒. 啪的一下,就能完成训练! 本文分享自华为云社区<这就是华为速度:2.69分钟完成BERT训练!新发CAN ...
- Android P新功能特性抢先看
2018年3月8日,Google推出了Android P Preview版本,并提供官方镜像下载. 为了让广大开发者能够及时了解Android P的新功能特性,提前为您的app进行良好适配,WeTes ...
- 【转】OpenStack奥斯汀峰会Keynotes国内抢先看
http://www.openstack.cn/?p=5341 OpenStack奥斯汀峰会Keynotes国内抢先看入口:http://www.tudou.com/home/_903780397/i ...
- .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 ...
- Win10《芒果TV》送7天免费会员,邀您抢先看萌心自制《妈妈是超人3》
<妈妈是超人>第三季萌心归来,霍思燕,贾静雯,黄圣依,邓莎联合释放"妈妈的声音",嗯哼,咘咘,波妞,安迪,大麟子五位萌娃共同出镜,萌化屏幕.Win10<芒果TV& ...
- 我们建了一个 Golang 硬核技术交流群(内含视频福利)
目录 目录 Golang 是什么? 我们为什么选择 Golang? Golang 是云时代的宠儿! 我们搞了一场 Golang 入门直播 Golang 是什么? Golang 是谷歌 2009 年发布 ...
- C# 8.0 抢先看-- Async Stream
异步流? Async Stream 简单说来是一种非同步的迭代器模式,说更白一点就是可以await 的foreach.在过去的C# 中如果要回传一个可迭代的IEnumerable<T> , ...
- ThinkSNS+ alpha.2 版本发布,功能抢先看!【社交系统研发日记六】
今天的研发日记,我们不讲技术,我们来看看,社交系统TS+从今天开始全面内测开始,都发布了什么功能. 其实,alpha.1 早上打的 tag ,晚上因为增加了两个核心功能,所以又打了 alpha.2 t ...
- 第五个神奇的电梯(代码抢先看<1>)
关于一些自认为比较独特的设计思路,也不知道是好还是坏,放在这里让大家一起看一下. 关于mian函数:因为采用了注册机制所以主函数比较简单. #include "stdafx.h" ...
随机推荐
- 怎么用Python写一个浏览器集群框架
这是做什么用的 框架用途 在采集大量新闻网站时,不可避免的遇到动态加载的网站,这给配模版的人增加了很大难度.本来配静态网站只需要两个技能点:xpath和正则,如果是动态网站的还得抓包,遇到加密的还得j ...
- 解密Prompt系列19. LLM Agent之数据分析领域的应用:Data-Copilot & InsightPilot
在之前的 LLM Agent+DB 的章节我们已经谈论过如何使用大模型接入数据库并获取数据,这一章我们聊聊大模型代理在数据分析领域的应用.数据分析主要是指在获取数据之后的数据清洗,数据处理,数据建模, ...
- AdaBoost算法解密:从基础到应用的全面解析
本文全面而深入地探讨了AdaBoost算法,从其基础概念和原理到Python实战应用.文章不仅详细解析了AdaBoost的优缺点,还通过实例展示了如何在Python中实现该算法. 关注TechLead ...
- WPF应用开发之控件动态内容展示
在我们开发一些复杂信息的时候,由于需要动态展示一些相关信息,因此我们需要考虑一些控件内容的动态展示,可以通过动态构建控件的方式进行显示,如动态选项卡展示不同的信息,或者动态展示一个自定义控件的内容等等 ...
- 运行tomcat之后报一个:"Address localhost:1099 is already in use"错误
一.解决方案 1.错误原因 "地址 localhost:1099 已在使用中",是1099程序被占用,把1099程序后台停止掉即可. 2.解决方案 1.快捷键win+R打开CMD运 ...
- 如何理解微服务体系结构中的 CQRS
本文翻译自 How To Understand CQRS In Microservices Architecture,原作者 OLEKSII. 问题描述 在典型的软件应用程序中,有一个负责写入和读取操 ...
- .net 温故知新【15】:Asp.Net Core WebAPI 配置
关于Asp.Net Core中的配置实际之前我已经整理过.net 中以json方式进行配置的介绍(.net 温故知新:[8].NET 中的配置从xml转向json),当时我们说Asp.Net Core ...
- 【已解决】【Tensorflow2.12.0版本以后合并CPU和GPU版】Tensorflow-gpu==2.12.0 安装失败解决办法
直接上解决方式,需要知道原因的看后文. 直接安装 tensroflow,从 2022 年 12 月起 tensorflow-gpu 已经合并到 tensorflow 包中了 pip install t ...
- SpringCore完整学习教程5,入门级别
本章从第6章开始 6. JSON Spring Boot提供了三个JSON映射库的集成: Gson Jackson JSON-B Jackson是首选的和默认的库. 6.1. Jackson 为Jac ...
- 常见速率协议的CDR带宽情况
100G PAM4 4MHZ 802.3/OIF-CEI 50G PAM4 4MHZ 802.3/OIF-CEI 28G PAM4 4MHZ 802.3/OIF-CEI 28G PAM4 4MHZ 8 ...