当前位置: 首页 > news >正文

网络性能总不好?专家帮你来“看看”— 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能够支持多种主流开源框架,在训练和推理场景下全方位满足不同开发者的网络性能调优诉求。

算子调优,提升计算节点执行效率

  1. 强化学习,生成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,效率与性能都有较大提升。

  1. 遗传算法,提高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自定义属性 更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;QSS样式学习 &#x1f448;文章目录QSS自定义属性[toc]前言一、实现效果二、使用方式1.QSS设置Q_PROPERTY属性样式2.QSS设置动态属性样式3.qproperty-<属性名称>语法14.qproperty-&…...

连接金蝶云星空,数据交互轻松搞定!丨三叠云

金蝶云星空 路径 拓展 >> 插件 功能简介 新增插件「金蝶云星空」。 用户可通过配置「金蝶云星空」插件&#xff0c;就可以实时获取「金蝶云星空」的数据&#xff0c;同时支持回填数据至金蝶系统内。 地图视图 路径 表单 >> 表单设计 功能简介 新增「地图视…...

JSX是什么,React为什么使用JSX,babel怎么转译JSX的

JSX是什么&#xff0c;React为什么使用JSX&#xff0c;babel怎么转译JSX的 在前端的框架中有两种“描述UI”的方案&#xff0c;一种是JSX语法&#xff0c;一种是模板语言。 其中React就是选择的JSX&#xff0c;Vue就是选择的模板语言。 JSX其实就是一个语法糖&#xff0c;在…...

从工地转行软件测试,拿下13k+年终奖是种什么体验?

最近&#xff0c;一则名为《我&#xff1a;毕业五年&#xff0c;存款5000。她:中传硕士&#xff0c;火锅店保洁》的视频走红网络&#xff0c;两位名校毕业生看似高开低走的就业经历&#xff0c;引起了很多人的共鸣。她们所传达的并不是所谓的躺平、摆烂&#xff0c;而是希望更多…...

前端面试题 —— 计算机网络(二)

目录 一、POST和PUT请求的区别 二、GET方法URL长度限制的原因 三、页面有多张图片&#xff0c;HTTP是怎样的加载表现&#xff1f; 四、HTTP2的头部压缩算法是怎样的&#xff1f; 五、说一下HTTP 3.0 六、HTTP协议的性能怎么样&#xff1f; 七、数字证书是什么&#xff1f…...

山东大学机器学习期末2022

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

FEBC2022|打造VR内容生态闭环 佳创视讯持续加码轻量化内容建设

2月24日&#xff0c;由陀螺科技主办的未来商业生态链接大会作为 2023 癸卯兔年开年率先召开的行业重要影响力盛会在深圳成功召开。今年大会云集了科技、软件、游戏、XR等元宇宙领域的世界500强、上市公司及行业独角兽企业&#xff0c;围绕游戏、元宇宙、XR、数字营销等多项热门…...

Redis常见的数据类型命令

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

Python3+Selenium3自动化测试-(准备)

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

VUE的安装和创建

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

ETL工具(kettle) 与 ETL产品(BeeloadBeeDI) 差之毫厘,谬以千里

E T L——是英文Extract-Transform-Load的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;extract&#xff09;、转换&#xff08;transform&#xff09;、加载&#xff08;load&#xff09;至目的端的过程。工具——原指工作时所需用的器具&#xff0c;后引申为达…...

轻松入门H3C无线AC上线AP【入门篇】

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

尚医通(二十五)就医提醒和预约统计

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

网页js版音频数字信号处理:H5录音+特定频率信号的特征分析和识别提取

文章目录一、网页中的音频数据源二、FFT&#xff1a;时域转频域三、信号的特征分析四、信号的识别提取附录音频数字信号处理 Audio DSP (Digital Signal Processing) 是一个复杂又专业的话题&#xff0c;本文介绍的是如何从音频中实时分析和识别出特定频率信号的一种方法&#…...

uniapp结合腾讯云及时通信IM的聊天记录本地存储方案

uniapp结合腾讯云及时通信IM的聊天记录本地存储方案 UniApp 是一个跨平台的应用开发框架&#xff0c;可以使用 Vue.js 开发多端应用&#xff08;如H5、小程序、App等&#xff09;。在 UniApp 中&#xff0c;可以使用 uni-app 提供的文件系统 API 完成本地文件存储的操作。 1.…...

PyQGIS开发 -- 基础学习笔记

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

一篇了解模块打包工具之 ——webpack(1)

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

k8s学习之路 | Day16 k8s 中的容器初探

文章目录容器镜像镜像名称镜像拉取策略私有仓库的拉取策略容器的环境变量和启动命令容器的环境变量容器的启动命令容器的生命周期钩子postStartpreStop容器的探针startupProbelivenessProbereadinessProbek8s 集群中最小的管理单元就是一个Pod&#xff0c;而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…...

多部委联合举办中国人工智能大赛启动会在厦召开,快商通亮相发言

站在“第二个百年奋斗目标”的新起点上&#xff0c;为深入推动我国人工智能产业创新发展&#xff0c;发掘一批人工智能优秀团队&#xff0c; 国家互联网信息办公室、工业和信息化部、公安部、国家广播电视总局、厦门市人民政府将联合主办第四届中国人工智能大赛 。快商通联合创…...

js红宝书学习笔记(1-6章)

就按照原书中写的章节顺序记笔记了&#xff0c; 还有可能我学过js一段时间了&#xff0c;可能有些对于新手的细节会忽略&#xff0c;但是会尽量写全的~ 1.第一章 什么是JavaScript 1.1讲了一些历史&#xff0c;所以我们从1.2开始看 1.2 JavaScript的实现 完整的JaveScript包…...

第十四届蓝桥杯第三期官方模拟赛C\C++题解

文章目录A-填空题题意算法参考代码&#xff08;C&#xff09;B-填空题题意算法参考代码&#xff08;C&#xff09;C-填空题题意算法参考代码&#xff08;C&#xff09;D-填空题题意算法参考代码&#xff08;C&#xff09;E-填空题题意算法参考代码&#xff08;C&#xff09;F题…...

API接口安全

目前项目都是前后端分离或者有对外提供接口的需求&#xff0c;在这些情况下&#xff0c;就要考虑接口安全。 如果不重视接口安全&#xff0c;可能导致严重的危害&#xff0c;例如数据盗取&#xff0c;服务宕机等。 可能的安全问题: 1.明文密码被攻击者抓包看到 前端可对密码或…...

2023前端一面vue面试题合集

函数式组件优势和原理 函数组件的特点 函数式组件需要在声明组件是指定 functional:true不需要实例化&#xff0c;所以没有this,this通过render函数的第二个参数context来代替没有生命周期钩子函数&#xff0c;不能使用计算属性&#xff0c;watch不能通过$emit 对外暴露事件&…...

【Leetcode 剑指Offer】第 5 天 查找算法(中等)

查找算法剑指 Offer 04. 二维数组中的查找剑指 Offer 11. 旋转数组的最小数字剑指 Offer 50. 第一个只出现一次的字符Python字典基础哈希表&#xff08;python中是dict()&#xff09;有序哈希表第一个中等&#xff0c;后两个简单题。剑指 Offer 04. 二维数组中的查找 题&#…...

薯条投放适合哪些笔记?小红书薯条投放的3种模式

随着小红书平台的种草推广模式兴盛&#xff0c;薯条投放这个词也渐渐进入大众的视野&#xff0c;今天就来给大家讲讲什么是薯条投放&#xff0c;以及薯条投放适合哪些笔记。一、什么是薯条投放?薯条是一款为小红书用户打造的笔记推广工具&#xff0c;用户可选择推广目标&#…...

记录第一个Python练习的过程

题目如下 编写一个名为collatz()的函数&#xff0c;它有一个名为number的参数。如果参数是偶数&#xff0c;那么collatz()就打印出number // 2&#xff0c;并返回该值。如果number是奇数&#xff0c;collatz()就打印并返回3 * number 1。 然后编写一个程序&#xff0c;让用户…...

【Python】3.3实现多线程

程序Program进程Process线程Thread为完成特定任务而用计算机语言编写的一组计算机能识别和执行的指令的集合。程序是指令、数据及其组织形式的描述&#xff0c;一段静态代码&#xff0c;静态对象。计算机中的程序关于某数据集合上的一次执行过程。进程是程序的实体&#xff0c;…...

在linux中使用lftp和sftp下载文件(夹)

一、首先确保你的系统中已经下载了lftp和sftp。 1.安装lftp sudo apt install lftp sudo apt install screen 2.安装sftp 在Linux系统中&#xff0c;一般RedHat系统默认已经安装了openssh-client和openssh-server&#xff0c;即默认已经集成了sftp服务&#xff0c;不需要重…...

企业网站结构图/舆情分析报告

环境: 联想E14 Win10专业版 钉钉最新版6.5.50-11089104 问题描述: 钉钉在线表格下载后内容空白,在线编辑有时打开闪一下就空白,下载的表格sheet2还是空白的 sheet2有数据 下载后空白: 从下面方式下载,在线编辑进去下载,就卡死无响应,单独下载csv格式是可以的 原因分…...

用bootstrap做的网站有哪些/免费域名注册永久

题目 题目非常简单&#xff0c;无非就是判断一个没用头结点的指针&#xff0c;是否为回文链表&#xff0c;但是简单的题目往往值得更深的思考。该题目有很多的解法&#xff0c;想要在时间击败百分百的话&#xff0c;不仅仅是代码本身&#xff0c;可能跟电脑还有一定的关系。 全…...

兰州微网站建设/湖南网站营销推广

安装postfixpostfix是一个快速、易于管理、安全性高的邮件发送服务&#xff0c;可以配合dovecot实现一个完美的邮箱服务器。1、安装postfix [rootlocalhost ~]# rpm -qa | grep postfix[rootlocalhost ]# yum install -y postfixLoaded plugins: fastestmirror, refresh-packag…...

网页app生成器原理/四川seo快速排名

基本思路&#xff1a;使用SQL SERVER 2014的Reporting Services定位MYSQL用于生产&#xff0c;MS SQL SERVER用于统计分析处理&#xff0c;不占用CPU和IO。与MYSQL的关系采用链接服务器方式&#xff1a; http://www.cnblogs.com/hukn/archive/2011/07/27/SQL_Server_ODBC_LinkS…...

网站怎样注册备案/seo策略工具

这是我的电脑配置 硬盘和内存是 现在内存又重新加装了一根8G的,所以实际上是16G内存了.不过在安装这个双系统的时候还是8G的内存. 我原先的操作系统就是电脑自带的win10系统的最新版本,我有日常更新啦 开始安装了 首先制作一个启动盘 准备的材料 一个超过2G的U盘(我淘宝上…...

wordpress 隐藏模板/全国31省市疫情最新消息今天

今天使用SERVER 2008,做Citrix 5.0实验&#xff0c;一路安装完成后&#xff0c;打开客户端登录&#xff0c;点击发布的应用程序&#xff0c;没任何反应。 查看应用程序日志同时引出31003和30016两个错误&#xff0c;查询CITRIX网站指出是XML服务异常或farm配置不正确导致。检查…...