网络性能总不好?专家帮你来“看看”— CANN 6.0 黑科技 | 网络调优专家AOE,性能效率双提升
随着深度学习模型复杂度和数据集规模的增大,计算效率的提升成为不可忽视的问题。然而,算法网络的多样性、输入数据的不确定性以及硬件之间的差异性,使得网络调优耗费巨大成本,即使是经验丰富的专家,也需要耗费数天的时间。
CANN(Compute Architecture for Neural Networks)是华为针对AI场景推出的异构计算架构,对上支持多种AI框架,对下服务AI处理器与编程,发挥承上启下的关键作用,是昇腾AI基础软硬件平台的核心。为了在提升网络性能的同时降低巨大的人工调优成本,CANN推出了自动化网络调优工具AOE(Ascend Optimization Engine),通过构建包含自动调优策略生成、编译、运行环境验证的闭环反馈机制,不断迭代,最终得到最优调优策略,从而在AI硬件上获得最佳网络性能。以ResNet50推理网络为例,经AOE调优后的网络性能提升100%以上,调优耗时不到30分钟。

针对网络模型,AOE分别提供了算子调优、子图调优与梯度调优的功能。其中算子调优,主要针对算子的调度(Schedule)进行优化,从而使得昇腾AI处理器的多级Buffer与计算单元形成高效的流水并发作业流,充分释放硬件算力;子图调优,通过智能化的数据切分策略提升缓存利用率,从而大幅提升计算效率;梯度调优主要应用于集群训练场景下,通过自动化寻找最优梯度切分策略、降低通信拖尾时间,从而提升集群训练性能。同时,AOE能够支持多种主流开源框架,在训练和推理场景下全方位满足不同开发者的网络性能调优诉求。

算子调优,提升计算节点执行效率
强化学习,生成Vector算子最优调度策略
AI处理器在计算过程中需要精心排布才能充分发挥算力,计算组件间的流水排布很大一部分由调度来承载,一个很小的调度操作映射到硬件行为上都可能产生巨大的差异。想要提升网络性能,势必需要为给定网络在指定设备上开发一套专属的调度逻辑。
网络的组成单元是算子,为算子执行寻找最优的调度策略是提升网络性能的关键。昇腾AI处理器的核心计算单元是AI Core,针对运行在AI Core上的算子,可以分为Vector与Cube两类,其中Vector算子主要负责执行向量运算,Cube算子主要负责执行矩阵运算。
针对Vector算子,CANN采用了RL强化学习(Reinforcement Learning)搜索框架,将算子调度过程抽象成了基于MCTS蒙特卡洛树搜索(Monte Carlo Tree Search)的决策链,并模拟人工进行决策,再通过和环境不断交互得到性能数据,作为反馈值指导下一步决策。通过此方法一步步改善自身行为,最终获取算子执行对应的完整最优调度策略。

经过AOE调优后的Vector算子,平均性能较调优前可提升10%以上,平均调优时间仅需200s,效率与性能都有较大提升。
遗传算法,提高Cube算子搜索效率
我们知道在深度学习网络中包含了大量的矩阵乘计算,而这部分计算在昇腾AI处理器中均通过Cube算力来承担,因此Cube算子作为重型算子,在网络中的影响权重较大,所以针对Cube算子的性能提升会给整个网络的性能带来较大的收益。
通过强化学习模式的搜索,我们已经可以做到解放人力进行Vector类型的算子优化,因为Vector算子的计算Buffer单一,调度算法可以基于各种Schedule原语为算子构建完整的调度策略。而Cube算子涉及多块片上Buffer之间的数据交互,如果按照和Vector算子相同的调优方式,可能最终会因为搜索空间过大导致搜索效率低下和搜索策略不佳的结果。
针对Cube算子,AOE以Schedule模板为基础,利用GA遗传算法(Genetic Algorithm),通过选择、交叉、变异等方式对影响最大的Schedule原语参数进行多轮调优,从而得到候选Tiling集,再根据在真实环境编译执行的性能反馈数据将候选策略进行排序,得到最优策略。

以卷积算子为例,若人工调优,需要消耗一个算子优化专家两天的时间;若使用AOE智能调优,平均仅需3分钟即可达到相同甚至更优的性能优化效果,极大地节省了人力成本!
子图调优,获得更智能的数据切分
算子调优已经使得网络性能有了可观的提升,但AOE并没有止步于此。AOE在更宏观的粒度上加入了子图调优,从而实现更智能的数据切分。
深度学习模型的计算往往有较大的数据吞吐,数据读写往往成为网络性能的瓶颈,因此对于高速缓存利用率的提升成为计算效率优化的关键手段。
昇腾AI处理器中包含了高速缓存以降低外部访存的带宽压力,然而由于特征图(Feature Map)和模型参数的数据量巨大,会导致算子计算过程中的Cache命中率较低,影响整网计算效率。为了更好地提升高速缓存Cache命中率,AOE引入了子图调优的概念。
子图调优,基于算子切分数学等价原则,根据硬件Cache大小、算子shape等信息,将网络模型中的算子切分成多个算子,然后编排切分后算子的执行顺序,通过获取最佳的性能反馈,确定计算图切分策略和执行顺序。这样,就可以将一次性的数据流计算分解成多次进行执行,在分解后的数据流分支上,数据大小相比之前成倍递减,进而实现了Cache命中率的显著提升。

最终,在算子调优和子图调优的共同作用下,使用AOE进行性能调优后,主流推理网络的平均性能提升30%以上。以ResNet50推理网络为例,性能较调优前提升超过100%,整网调优耗时30分钟以内。
梯度调优,提升集群训练性能
大规模集群训练场景中,存在着计算节点多、梯度聚合过程复杂、通信开销大的痛点。梯度聚合过程和计算过程怎么更好的一定程度上相互掩盖,让整个过程保证较好的线性度,也是性能提升的关键问题。为此,AOE引入了梯度调优的功能,通过智能梯度切分算法,自动搜索出最优梯度参数切分方式,为梯度传输选择合适的通信时机和通信量,最大限度让计算和通信并行,从而将通信拖尾时间降至最低,促使集群训练达到最优性能。

相对人工调整梯度聚合数据量,自动梯度调优可以将梯度聚合数据量调参时间从数人天缩短至数十分钟,一举获得最优聚合策略,降低人工调参的不确定性。AOE通过调优知识库记录模型调优经验,使得模型聚合策略能够动态适应不同集群规模。
经过AOE调优后,主流训练网络在昇腾AI处理器上执行性能较调优前平均提升了20%以上。以ResNet50训练网络为例,性能较调优前提升了23%,整网调优耗时2H以内。
写在最后
昇腾异构计算架构CANN始终致力于提供“开放易用、极致性能”的AI开发体验,不断降低AI开发的门槛与成本。CANN提供的昇腾调优引擎AOE克服了传统调优方法耗时长、泛化性差、维护成本高等影响开发效率和可用性的弊端,为AI开发者提供了更智能化的性能优化手段。
以梦为马,未来可期,相信通过CANN的持续创新与不断演进,定将进一步释放AI硬件的澎湃算力,加速AI应用场景落地,共建智慧世界。
相关文章:

网络性能总不好?专家帮你来“看看”— CANN 6.0 黑科技 | 网络调优专家AOE,性能效率双提升
随着深度学习模型复杂度和数据集规模的增大,计算效率的提升成为不可忽视的问题。然而,算法网络的多样性、输入数据的不确定性以及硬件之间的差异性,使得网络调优耗费巨大成本,即使是经验丰富的专家,也需要耗费数天的时…...

Qss自定义属性
QSS自定义属性 更多精彩内容👉个人内容分类汇总 👈👉QSS样式学习 👈文章目录QSS自定义属性[toc]前言一、实现效果二、使用方式1.QSS设置Q_PROPERTY属性样式2.QSS设置动态属性样式3.qproperty-<属性名称>语法14.qproperty-&…...

连接金蝶云星空,数据交互轻松搞定!丨三叠云
金蝶云星空 路径 拓展 >> 插件 功能简介 新增插件「金蝶云星空」。 用户可通过配置「金蝶云星空」插件,就可以实时获取「金蝶云星空」的数据,同时支持回填数据至金蝶系统内。 地图视图 路径 表单 >> 表单设计 功能简介 新增「地图视…...
JSX是什么,React为什么使用JSX,babel怎么转译JSX的
JSX是什么,React为什么使用JSX,babel怎么转译JSX的 在前端的框架中有两种“描述UI”的方案,一种是JSX语法,一种是模板语言。 其中React就是选择的JSX,Vue就是选择的模板语言。 JSX其实就是一个语法糖,在…...

从工地转行软件测试,拿下13k+年终奖是种什么体验?
最近,一则名为《我:毕业五年,存款5000。她:中传硕士,火锅店保洁》的视频走红网络,两位名校毕业生看似高开低走的就业经历,引起了很多人的共鸣。她们所传达的并不是所谓的躺平、摆烂,而是希望更多…...

前端面试题 —— 计算机网络(二)
目录 一、POST和PUT请求的区别 二、GET方法URL长度限制的原因 三、页面有多张图片,HTTP是怎样的加载表现? 四、HTTP2的头部压缩算法是怎样的? 五、说一下HTTP 3.0 六、HTTP协议的性能怎么样? 七、数字证书是什么?…...

山东大学机器学习期末2022
接力:山东大学机器学习期末2021 本来是不想写的,因为不想回忆起考试时啥也不会的伤痛,没想到最后给分老师海底捞,心情好了一些,还是一块写完 备考建议:多看ppt,多看ppt,多看ppt 山东…...

FEBC2022|打造VR内容生态闭环 佳创视讯持续加码轻量化内容建设
2月24日,由陀螺科技主办的未来商业生态链接大会作为 2023 癸卯兔年开年率先召开的行业重要影响力盛会在深圳成功召开。今年大会云集了科技、软件、游戏、XR等元宇宙领域的世界500强、上市公司及行业独角兽企业,围绕游戏、元宇宙、XR、数字营销等多项热门…...

Redis常见的数据类型命令
文章目录Redis 常见的数据类型及命令一、常见的NoSQL二、Redis 简介三、key 键的一些操作命令四、Redis的五种基本数据结构1、String(字符串)介绍常用命令1.1 set/get1.2 append1.3 strlen1.4 setex1.5 mset/mget1.6 setrange/getrange1.7 setnx1.8 incr…...

Python3+Selenium3自动化测试-(准备)
最近在学习selenium自动化测试相关的内容,所以将实际准备情况做一记录, # 系统:win10(64位) # 浏览器:Chrome(67.0)、Firefox(61.0)、IE # python版本:3.6.5 # Selenium:3.13.0Selenium简介 Selenium是一…...

VUE的安装和创建
安装node.js 进入node官网进行下载,然后一直下一步。 测试是否安装成功: 命令提示窗下执行:npm -v 若出现版本号,则安装成功。 安装npm源: npm config set registry http://registry.npm.taobao.org 查看:…...

ETL工具(kettle) 与 ETL产品(BeeloadBeeDI) 差之毫厘,谬以千里
E T L——是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。工具——原指工作时所需用的器具,后引申为达…...

轻松入门H3C无线AC上线AP【入门篇】
我们知道华三的最新模拟器支持了无线AC的配置,今天就浅浅的出个无线AC的教程,你上也会的那种。今天我们模拟的是二层环境下,笔者准备了2个AP,以此展示AP上线到AC的教程,并且用手机测试WiFi连接正常,且客户端…...

尚医通(二十五)就医提醒和预约统计
目录一、就医提醒1、搭建定时任务模块二、后台管理系统-预约统计功能1、开发每天预约数据接口2、封装远程调用接口3、搭建统计分析模块4、整合统计功能前端一、就医提醒 我们通过定时任务,每天8点执行,提醒就诊 1、搭建定时任务模块 (1&…...

网页js版音频数字信号处理:H5录音+特定频率信号的特征分析和识别提取
文章目录一、网页中的音频数据源二、FFT:时域转频域三、信号的特征分析四、信号的识别提取附录音频数字信号处理 Audio DSP (Digital Signal Processing) 是一个复杂又专业的话题,本文介绍的是如何从音频中实时分析和识别出特定频率信号的一种方法&#…...
uniapp结合腾讯云及时通信IM的聊天记录本地存储方案
uniapp结合腾讯云及时通信IM的聊天记录本地存储方案 UniApp 是一个跨平台的应用开发框架,可以使用 Vue.js 开发多端应用(如H5、小程序、App等)。在 UniApp 中,可以使用 uni-app 提供的文件系统 API 完成本地文件存储的操作。 1.…...

PyQGIS开发 -- 基础学习笔记
1、自主学习QGIS开发虽然QGIS本身功能强大,但还是架不住我们要编写新的功能、新的业务流程、新的算法。前文中我们提到,扩展QGIS有2种方法,一是用Python、C来写QGIS的插件;另一种就是基于QGIS的C API开发独立应用程序。然而后者资…...

一篇了解模块打包工具之 ——webpack(1)
本篇采用问题引导的方式来学习webpack,借此梳理一下自己对webpack的理解,将所有的知识点连成一条线,形成对webpack的记忆导图。 最终目标,手动构建一个vue项目,目录结构参考vue-cli创建出来的项目 一、问问题 1. 第…...

k8s学习之路 | Day16 k8s 中的容器初探
文章目录容器镜像镜像名称镜像拉取策略私有仓库的拉取策略容器的环境变量和启动命令容器的环境变量容器的启动命令容器的生命周期钩子postStartpreStop容器的探针startupProbelivenessProbereadinessProbek8s 集群中最小的管理单元就是一个Pod,而Pod里面才是容器&am…...
export、import、commit、save、load的区别
目录1. docker export 和 docker import2. docker commit3.docker save 和 docker load1. docker export 和 docker import docker export 容器ID/容器Name > xxx.tar 导出一个容器快照 docker import xxx.tar NewImageName:tag 导入一个容器快照到本地镜像库 适用场景&a…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...

uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...