BladeDISC 0.2.0更新发布

简介:在BladeDISC正式开源三个月后,我们发布了0.2.0版本,该更新包含了大量的性能优化与功能增强。

在BladeDISC正式开源三个月后,我们发布了0.2.0版本,该更新包含了大量的性能优化与功能增强。

BladeDISC是目前业界领先的支持动态shape的深度学习优化编译器。深度学习优化编译器负责将上层的神经网络计算图转换为底层硬件可执行的程序,当前流行的深度学习优化编译器(TVM[1]、XLA[2]、TensorRT[3]等)对静态shape的支持力度较大,对动态shape的支持则有所欠缺。其中,XLA目前只支持静态shape,TensorRT可以支持ranged shape(即指定尺寸范围内的动态shape)。BladeDISC编译器提供了对动态shape的完整支持,可以将包含动态shape语义的上层模型描述转换为高效的底层可执行程序。更多关于BladeDISC的介绍内容,请查看此处[5]。

本文描述BladeDISC v0.2.0版本相对于最初开源版本(即v0.1.0版本)的主要更新内容。

性能优化

当前的神经网络计算图主要由访存密集型算子(主要包括element-wise/elemental算子及reduce算子)和计算密集型算子(主要包括GEMM和Convolution算子)组成。BladeDISC v0.2.0版本相对v0.1.0版本在这两方面都做了大量优化。

访存密集算子的优化

本章重点描述v0.2.0新增的GPU stitch优化(以及附带的shape constraint功能增强)。

GPU上的stitch优化方法来源于我们发表在ASPLOS 2022上的论文AStitch[6],我们正在逐步地将AStitch中的技术迁移到BladeDISC中,目前已完成部分迁移工作。Stitch的方法旨在解决当前深度学习模型在GPU上执行时遇到的大量的kernel调度(scheduling)和发射(launch)开销以及片外访存开销,以及不同shape之下memory-intensive算子的高效schedule问题,其基本方法是通过GPU上多层次的中间结果访存管理(以寄存器,shared memory及global memory作为中间数据的buffer)、层次化的数据同步控制以及自动适配的parallelism-aware的codegen schedule生成,将原先多个不同的fusion kernel给stitch在一起,并生成高效的计算代码。

本次BladeDISC release实现了通过shared memory将原先被reduce算子分割开的多个fusion进行stitch融合的功能,达到计算融合加速效果(跨CUDA thread block的global memory的stitch以及自动适配的parallelism-aware的codegen在本次release中暂未实现)。我们提供了一组示例来展示如何开启stitch优化。


动态shape给stitch优化带来了新的挑战,其最重要的挑战在于,在不知道确切shape的情况下,正确地判断被stitch在一起的op之间的数据局部性,从而正确得为其中的数据传输分配片上存储(即GPU shared memory)。本次更新包含了一系列的shape constraint功能增强,作为GPU stitch功能的基础支撑。其基本思想是挖掘与传播producer op和consumer op之间以及sibling op之间的shape constraint,通过symbolic的方式构建全局的shape等价关系;在此基础上,进一步构建shape dimension之间的乘法关系,用以解析reshape等算子的shape等价性关系。

值得说明的是,在前一个版本中(即BladeDISC开源版本v0.1.0),我们针对CPU上的模型,对部分访存密集型计算子图实现了CPU端的stitch优化,从而更好地增强数据局部性,提升访存效率。

计算密集算子的优化

本章主要介绍本次更新中包含的GEMM合并优化及CPU上计算密集型算子的pre-packing和layout优化。

GEMM 合并优化

本次release实现了以下两种GEMM合并优化:

  1. 两个GEMM算子有公共的操作数,将其合并为一个算子,比如 A x B 和 A x C 可以合并为 A x concat(B, C),真实模型中的典型场景是Attention中的QKV合并;
  2. 两个GEMM有相同的计算形状,将其合并为一个batched GEMM,比如对于 A x B 和 C x D,如果A和C以及B和D的形状相同,那么就可以合并为一个batched GEMM。

GEMM合并带来了两个好处。其一是,GEMM合并可以增加计算尺寸,从而更好地打满硬件的计算峰值,提升计算效率;其二是,GEMM合并可以减少GPU kernel数量,从而降低kernel调度和发射的开销。

CPU上计算密集算子的pre-packing和layout优化

在CPU上,对于GEMM及Convolution计算,BladeDISC支持对GEMM的操作数进行pre-packing优化,通过packing的数据layout转换,使得矩阵乘操作对操作数的访问能够更好地利用数据局部性(比如使得数据访问更好地适配cache line)。具体来说,BladeDISC封装了CPU上的计算库,通过对其提供的packing函数的封装与调用来实现pre-packing功能。我们提供了基于Albert的示例以展示如何开启pre-packing优化。

对于Convolution函数,不同硬件vendor的不同计算库可能需要不同的数据layout以得到最佳性能,不同的数据类型在不同layout下的性能表现也会不同(比如,NVIDIA GPU上的FP16在TensorCore上和FP32在SIMT core上对layout的要求有所不同)。本次release针对CPU和GPU上的计算库,结合数据类型的考虑,为Convolution计算自动适配最佳的数据layout。数据layout的转换通过transpose操作来进行,我们实现了前后的transpose的抵消,最大限度减少额外带来的transpose的影响。

性能验证

上图展示了BladeDISC在四个当下流行的模型上的性能效果(在T4 GPU上进行验证,更多模型还在验证中)。图中的Framework表示原始的深度学习框架(FastSpeech2使用了TensorFlow 2.4框架,其他模型使用了PyTorch 1.7.1框架),Static Compiler表示该框架下接入静态优化编译器后的性能(TensorFlow使用XLA,PyTorch通过转onnx来利用TensorRT 8.2进行优化,TensorRT 8.2在优化T5和S2T的过程中失败,因此没有性能数据)。可以看到,BladeDISC相对于基本的深度学习框架可以取得最高达到8倍的性能加速效果,在BERT和FastSpeech2上,BladeDISC取得了与业界先进的静态优化编译器相近的优化效果。

重要功能支持

本次release也包括一系列的重要功能更新,包括:

X86和AArch64 CPU硬件的支持

本次release在X86和AArch64架构的CPU平台上都做了大量更新和支持。
X86平台方面,在已有的访存密集算子codegen支持的基础上(v0.1.0包含的功能),本次release增加了计算密集算子的支持。具体来说,BladeDISC同时支持了MKL和oneDNN两种不同的计算库后端,并支持运行时按需选择。在功能支持之外,本次releaes也包括对计算密集算子的性能优化(如前面章节提到的layout优化和weight pre-packing优化)。

AArch64平台方面,本次release完成了访存密集算子codegen对于AArch64平台的适配,以及计算密集算子库ACL的支持(通过oneDNN的形式)。

在上述功能的支持下,BladeDISC在X86平台以及AArch64平台上都已经端到端可用。具体使用方式及性能效果参见BaldeDISC提供的TF示例及PyTorch示例。

Blade推理加速器TensorRT的圈图支持

本次release开源了Blade推理加速器[7]两个重要的功能:TorchBlade和TensorFlowBlade。这两部分是Blade推理加速器面向两个最为广泛使用的深度学习框架所做的接入层,旨在提升模型优化的体验和完整度。Blade推理加速器在接入BladeDISC之外,也接入了TensorRT。具体来说,对于PyTorch和TensorFlow的模型,Blade推理加速器会自动识别出可以被TensorRT优化的计算子图,并送给TensorRT优化引擎进行优化。一定程度上提升了使用TensorRT的转换成功率,并且提供了与BladeDISC发挥联合优化作用的可能性。

PyTorch Training的Proof-of-Concept跑通

BladeDISC正在逐步支持PyTorch模型的训练优化,目前已经成功跑通mnist的简单模型。在实现层面,BladeDISC利用PyTorch的Lazy Tensor Core机制,将TorchScript子图优化为高效的可执行程序。

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510850.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能logo免费体验|网站Logo这样设计搜索排名跟着提升

简介:一个好的网站logo,不仅让用户一眼知道网站品牌传递的信息,还能提高网站专业度和丰富度,增加SEO搜索排名。今天分享下如何设计一款实用的网站logo。阿里云智能logo设计,在线免费体验logo制作:https://l…

记一次 JMeter 压测 HTTPS 性能问题

简介:在使用 JMeter 压测时,发现同一后端服务,在单机 500 并发下,HTTP 和 HTTPS 协议压测 RT 差距非常大。同时观测后端服务各监控指标水位都很低,因此怀疑性能瓶颈在 JMeter 施压客户端。 作者:拂衣 问题…

阿里巴巴在 Envoy Gateway 的演进历程浅析

简介:最近阅读 《Envoy Gateway 来了》这篇文章,深感 Envoy 强大的可扩展性和基于 Envoy Gateway 带来的易用性,在 K8s 架构下,Envoy 重新定义了网关的定位和能力,被誉为云原生网关,甚至被称之为下一代网关…

2022华为开发者大赛北区决赛在1024程序员节北京峰会成功举行

10月24日,“2022 长沙中国 1024 程序员节”北京峰会于北京经开区国家信创园成功举办。聚焦“软件新时代 开源创未来”主题,北京峰会开展“会、赛、展、趴”四大环节。2022 华为开发者大赛云应用创新赛道作为华为 ICT 领域面向云赛道的顶级赛事&#xff0…

阿里云专利缴费小程序丨如何在一分钟为多项专利缴费?

简介:本文为用户介绍快速专利缴费的方法。 对于一家科技公司来说,手握多项专利是十分常见的事情。但这却也让相关负责人有点头疼。 “我们公司名下有十多件专利,从14年到现在大概每年申请了一两个专利。类型的话发明专利、外观专利、实用新…

SysAK 应用抖动诊断篇—— eBPF又立功了 | 龙蜥技术

简介:且看 SysAK 是如何打造一款性能开销不大、安全可靠、且灵活的关中断检测工具。 文 / 系统运维 SIG 编者按:还记得曾经风靡一时的狄仁杰探案系列之《他抖任他抖,IO诊断在我手》、《netinfo:揭开网络抖动面纱的神器》、《core…

性能提升 57% ,SMC-R 透明加速 TCP 实战解析 | 龙蜥技术

简介:SMC-R 是如何加速 TCP 应用? 编者按:TCP 协议作为当前使用最为广泛的网络协议,场景遍布移动通信、数据中心等。对于数据中心场景,通过弹性 RDMA 实现高性能网络协议 SMC-R,透明替换应用 TCP 协议&…

2022云管云网大会丨阿里云孙成浩:构建万物互联的智能云网络

简介:2022年5月19日,由中国信息通信研究院(以下简称“中国信通院”)和中国通信标准化协会联合主办的“2022云管和云网大会”通过线上直播方式成功召开。大会以“新云管 新云网”为主题,工业和信息化部信息技术发展司信…

未来两年,阿里云20%新增算力将使用自研CPU

11月3日,阿里巴巴在2022云栖大会上宣布,自研CPU倚天710已大规模应用,阿里云未来两年20%的新增算力将使用自研CPU,这是阿里算力攻坚的重要突破。目前,倚天710已在阿里云数据中心大规模部署,并以云的形式服务…

PolarDB-X迎来开源后首个重大版本升级,2.1版本新增5大特色功能

简介:2022 年 5 月25日,阿里云开源 PolarDB-X 升级发布新版本!PolarDB-X 从 2009 年开始服务于阿里巴巴电商核心系统, 2015 年开始对外提供商业化服务,并于 2021 年10月正式开源。本次发布是开源后首个重大版本升级&am…

做ToB软件质量保障的这两年

简介:自己算是阿里的老兵了,从实习开始一直投身在 toB 业务的质量保障领域内,不能说是资深的专家,但所经历的、感受的业务特点和体会还是具有一定的代表性,希望能通过这篇文章,总结一下过往,并能…

成本节省 50%,10 人团队使用函数计算开发 wolai 在线文档应用

简介:人们关注 wolai 独特的功能和舒适的用户的用户体验,更关注实现这些背后的技术架构。在一个晴朗下午,我们邀请了 wolai.com 的创始人马锐拉,跟我们聊聊 wolai 背后的 Serverless 架构。 作者:马锐拉 | wolai.com …

前端质量|基于业务驱动的前端性能有效实践案例

简介:前端的本质价值是什么?作者认为是给用户创造良好的交互体验和抵达率优化应该在转化率之前。那么本文就将和大家分享基于业务驱动的前端性能有效实践案例。 作者 | 钱文玲(悠酱) 来源 | 阿里开发者公众号 一、背景 1.1.前端性能优化的业务意义 前…

走进RDS|说说关系型数据库与Serverless

简介:看到如今Serverless在云计算行业喷薄欲出的态势,像极了《星星之火,可以燎原》中的描述:虽然不能预测未来的发展和变化,但对于云计算来说这是个相对确定的方向。本文将和大家说说关系型数据库与Serverless。 作者 …

六年团队Leader实战秘诀|程序员最重要的八种软技能

简介:笔者在带团队的六年中发现,程序员们在职场都有一个共同的困扰:“好像写代码都没什么问题了,日常工作基本上都是应付业务需求的开发,好像找不到其他的更大的附加价值了,我应该找一些什么样的发力点才能…

宜搭小技巧|学会这一招,数据收集收放自如

简介:应用的「启用」「停用」功能还可以这样用 >> 团建的日子眼看就要到了,为了掌握参加的人数,提前进行车票、房间、餐食的预定,宜小搭计划在周五下班前停止对报名信息的收集。 如何停止我们的应用进行数据收集呢&#x…

阿里云总裁张建锋:“未来不懂低代码就像二十年前不会用word”

11月3日,阿里云智能总裁张建锋在2022云栖大会公布,钉钉上的低代码应用数突破500万,低代码开发者超过380万。张建锋表示,未来80%的应用会由业务人员通过低代码开发。 张建锋提到,一线业务人员通过低代码的方式&#xf…

平行云CEO 李岩:CloudXR ,开启通往元宇宙的通道

简介:一端是算力无穷的云,这也是 CloudXR 的精髓所在。 图:2022阿里云视觉计算私享会现场 5月11日,在“2022阿里云视觉计算私享会”上,平行云CEO李岩为大家带来了题为《CloudXR,开启通往元宇宙的通道》的主…

阿里10年沉淀|那些技术实战中的架构设计方法

简介:上周我写的一篇文章《关于技术能力的思考和总结》引起了大家的关注,好多读者的评论“以写代想、以想促真、以讲验真”,大家的感受很深刻,基于上次的文章,这篇文章我其实更想跟大家聊聊一些常用的思考方法&#xf…

阿里巴巴云数据仓库 MaxCompute 数据安全最佳实践

简介:MaxCompute作为企业级SaaS模式云数据仓库,正在为客户业务及其数据提供持续的安全保护。 MaxCompute 近期对产品的安全能力进行了全面升级 ,结合数据生命周期,针对数据误用、数据滥用、数据泄露、数据丢失等典型数据风险场景&…