AI模型在专用加速器上的性能分析指标

这篇具有很好参考价值的文章主要介绍了AI模型在专用加速器上的性能分析指标。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        AI模型在专用加速卡上性能分析大概流程:

1)先计算模型本身的计算访存比,得到模型理论算力带宽需求。

2)根据处理器本身支持的操作字节比(算力,带宽),确认模型在该处理器上的性能表现类型。

3)根据专用加速器内部架构的内存和计算并行性的设计,分析AI模型运行时的schedule,估算得到模型在加速卡上的执行周期。

名词定义

  • 指令级并行性(Instruction-level Parallelism,ILP)
  • 线程级并行(Thread-level Parallelism, TLP)
  • 内存级并行性(Memory-level Parallelism, MLP)
  • 内存线程束并行性(Memory Warp Parallelism, MWP)
  • 计算线程束并行性(Computation Warp Parallelism, CWP)

        就GPU而言,如果线程束调度器在每次指令发射时,从同一线程束中选择独立指令,则表现为ILP;如果线程束调度器在每次发射指令时,从不同线程束选择独立指令,则表现为TLP。GPU主要通过提高TLP来最大限度地利用其功能单元,SM占用率作为GPU程序TLP的定量分析指标,对GPU整体性能有重要影响。

一、AI模型在处理器的性能影响因素

        计算并行性存储访问效率是硬件架构决定AI模型性能的两个最重要因素。相应的,GPU和专用硬件架构为AI模型进行性能优化的方式也围绕着如何提高并行计算能力和高效利用片上存储资源展开。

        从影响计算性能角度出发,GPU或者专用硬件架构运行AI模型性能的约束类型分为:内存带宽受限型, 计算速度受限型,延迟受限型。

内存受限:内存受限型AI模型性能取决于硬件内存带宽。当AI模型的计算密度较小时候(如激活函数,池化,和批量归一化算子),几乎都可能成为内存受限模型。即数据传输速度跟不上计算速度。

计算受限:当具有较多的如矩阵乘等大量计算的算子时候,这时候模型可能会成为计算受限模型。即计算速度跟不上数据传输速度。

延迟受限:在执行AI模型时,GPU设备上的线程束调度器选择就绪指令,并将其发射到线程束的活跃线程,SM准备执行线程束下一条指令所需的时钟周期数即为延迟。如果延迟是由寄存器相关性引起的,即某些输入操作数是由尚未执行完成的前一指令写入的,这时,延迟等于前一指令的执行时间,线程束调度器必须在这段时间内调度其他活跃线程束的指令以隐藏延迟。延迟受限型的AI模型则是由于没有足够的工作负载和相应的活跃线程束,无法隐藏线程束等待切换的延迟而导致性能下降。

二、计算访存比指标

        确定模型时计算受限型或者访存受限型时,应首先分析模型在具体场景下的计算访存比,即计算吞吐量和访存吞吐量的比值。

        以AI模型中常用的GEMM为例,分析访存比的计算。规定矩阵A,B, C的大小分别是MK, KN,MN。优化GEMM的一个方案是将C进行分片处理。分片大小分别是,,

        每个C分片的访存吞吐量是(AI模型在专用加速器上的性能分析指标,性能测试,人工智能,性能分析,计算访存比,算术强度,操作字节比,GEMM,Roof-line) K,计算吞吐量是2    K, 常数2是乘法和加法两次计算,计算访存比是(2  )/(AI模型在专用加速器上的性能分析指标,性能测试,人工智能,性能分析,计算访存比,算术强度,操作字节比,GEMM,Roof-line),为了使GEMM计算充分利用GPU的峰值计算能力,希望计算访存比越大越好,也就是和越大越好。但是共享内存中的元素需要提前加载到寄存器,并且和的取值受到线程块的共享内存容量和寄存器文件大小的限制。

三、算术强度和操作字节比的定义

        定义AI模型访存占用时间为,计算占用时间为,模型访问字节数为#bytes, 模型运算次数为#ops, 处理器内存带宽,计算带宽。

= #bytes /  ,  =#ops / 

计算受限模型是>, 反之是内存受限型。

        如下公式可以推导出算术强度和操作字节比的定义。算术强度可以理解为每从内存读写一个字节需要执行的操作数。操作字节比则与模型无关,只与给定处理的带宽参数有关。

 >   =》  #ops /   > #bytes /    =>

#ops / #bytes  >  /    

算术强度= #ops / #bytes 

操作字节比 =  / 

       不同AI模型的算术强度变化范围很大,因此没有一种通用的加速器,比如卷积神经网络一般认为是计算密集型,而机器翻译和自然语言处理模型通常由全连接层组成,权重重用少,需要消耗较多的存储空间,所以AI模型的计算结构和规模决定其算术强度,进而决定其对特定硬件架构的适用性。

        以V100 GPU执行GEMM为例,V100的FP16峰值计算性能是125TFLOPS,片外存储带宽约为900GB/s, 片上L2带宽为3.1TB/s

  • 如果输入数据来自片外存储器,操作字节比约为125/0.9≈138.9
  • 如果输入数据来自片上存储器,操作字节比约为125/3.1≈40

        对于MKN的GEMM来说,算术强度  =    AI模型在专用加速器上的性能分析指标,性能测试,人工智能,性能分析,计算访存比,算术强度,操作字节比,GEMM,Roof-line = AI模型在专用加速器上的性能分析指标,性能测试,人工智能,性能分析,计算访存比,算术强度,操作字节比,GEMM,Roof-line, 分子的2是指FMA的乘法和加法, 分母的乘法是指FP16类型的2byte。

        当GEMM的形状是81921288192,算术强度是124.1,低于V100的操作字节比138.9,该操作为内存受限型

        当GEMM的形状是819281928192,算术强度是2730,远高于V100的操作字节比138.9,该操作是计算受限型。

        判断AI模型时内存受限还是计算受限型的前提是模型的工作负载足够大,足以令处理器的算术或存储流水线一直处于饱和工作状态。如果AI模型的工作负载不够大,不能提供足够的并行性,处理器无法充分利用,此模型则既不属于计算受限也不属于内存受限,而是属于延迟受限型。

        在评估模型性能首先类型时,开发者应该首先通过评估AI模型工作负载需要消耗的线程块数量和大小,确定工作负载是否足够的并行性使GPU资源达到饱和。通过如果AI模型消耗的线程块数量达到SM的4倍,则可以认为,AI模型的工作负载有足够的并行性,不属于延迟受限型。

        综上,对于GEMM计算

  • 1)当K很小时,即M≈N >> K, GEMM为延迟受限型
  • 2)当M或N很小时,即N≈K >> M, 或M≈K >> N,GEMM为内存受限型
  • 3)当M,N,K都很大时,GEMM为计算受限型。

        优化AI模型性能的另一个关键因素是提高全局内存访问效率。全局内存驻留在设备内存中,设备内存可通过128字节,64字节或32字节内存事务访问。这些内存事务只能读取或写入与其大小对其的设备内存的128字节,64字节或32字节。根据GPU的计算能力或运行时配置,当某个线程束执行一条访问全局内存的指令时,如果线程束中各线程的全局内存访问地址落入相同的128字节,64字节或32字节地址段,则这些全局内存访问可以合并为128字节,64字节或32字节内存事务。如果不采用合并访问方式,而是发散访问,则需要发射额外的内存事务。发散访问的方式会导致全局内存吞吐量降幅非常显著。

        比如为每个线程4字节访问生成一个32字节的内存事务,每个内存事务包含28字节无用数据,导致全局内存吞吐量降低32/4=8倍,如果采用128字节内存事务,则全局内存吞吐量降低32倍。因此发散访问导致线程束吞吐量下降比由此导致的线程束延迟增加严重的多。为了最大化内存吞吐量,优化全局内存访问尤为重要,因为与片上存储器带宽和算术指令吞吐量相比,全局内存带宽较低,因此全局内存访问通常对性能有重要影响

四、内存级并行性和线程级并行性指标

        内存线程束并行性(MWP)用于刻画系统内存并行性,其表示从SM处理器开始执行某个线程束的内存指令后,到同一线程束的所有内存请求得到服务为止的时间段内,每个SM可以同时访问内存的最大线程束数量。

        计算线程束并行性(CWP)用于刻画模型特征,表示SM处理器在一个内存线程束等待期间可以执行的线程束数量加1,加1是为了包括等待内存值的线程束本身。CWP与算术强度有相似之处和不同之处,相似之处在与两者都表示访存操作与运算操作的比例关系,不同之处在于,算术强度不具有时序信息,而CWP重点考虑内存等待周期内的时序信息,并可用于确定代码段总执行时间是由计算占用时间决定,还是由访存占用时间决定。内存等待周期表示系统处理内存请求的时间段。

AI模型在专用加速器上的性能分析指标,性能测试,人工智能,性能分析,计算访存比,算术强度,操作字节比,GEMM,Roof-line

        如上图,白色方框表示计算指令占用的计算周期,彩色方框表示访存指令占用的内存等待周期,方框中的标识表示线程束序号。图6-2中所有的计算周期和内存等待周期来自第i-i+7个不同的线程束。从图上可以看出1个内存等待周期是计算周期的2倍,所以CWP=2+1=3。图6-2的左图假设系统可以同时处理两个内存线程束,即MWP=2。图6-2的有图假设系统可以同时处理8个内存线程束,所以MWP=8。

        可以发现左图CWP>MWP, SM中由足够多的线程束等待内存值,所以内存访问周期可以被计算周期隐藏。代码段总执行时间为2个计算周期+4个内存等待周期之和。而右图CWP<MWP,代码段总执行时间为8个计算周期+1个内存访问周期之和。

        综上,当CWP大于MWP时,执行成本主要由访存占用时间决定;当CWP小于MWP时,执行成本主要由计算占用时间决定。

        基于MWP和CWP指标建立GPU性能模型通过评估每个SM在一个内存等待周期内可以同时访问的线程束数量,以及可以在同一时间段内完成计算的线程束数量,进而离线估算得到模型执行的时钟周期数,而不需要实际执行模型。

五、Roof-line Model指标(评估模型在加速器上的理论上限)

        Roof-line Model 用于分析模型在特定计算平台上所能达到的理论计算性能上限(由于环境等因素的影响,实际性能测试结果一般差于Roofline模型给出的结果)。

        Roof-line实际指的就是由计算平台的算力和带宽上限这两个参数所决定的“屋顶”形态,如下图所示。

  • 算力决定“屋顶”的高度(绿色线段)。
  • 带宽决定“房檐”的斜率(红色线段)。

AI模型在专用加速器上的性能分析指标,性能测试,人工智能,性能分析,计算访存比,算术强度,操作字节比,GEMM,Roof-line

         如下公式, I表示上述第三节提到的AI模型的算术强度, 表示计算平台理论算力强度,是计算平台理论达到的带宽,P表示模型在计算平台上能达到的理论算力上限。根据计算平台的可以将AI模型的表现分为内存和计算两个瓶颈区域,红色和绿色表示。

        当实测模型不能达到理论算力性能时候,可以具体分析瓶颈的原因。根据公式可知,当模型的计算强度处于x=的右边时候,此AI模型时一个计算受限模型。当在左边时候,容易成为带宽受限模型。

AI模型在专用加速器上的性能分析指标,性能测试,人工智能,性能分析,计算访存比,算术强度,操作字节比,GEMM,Roof-line

         

假设在NVIDIA的 1080Ti显卡下:

算力=11.3TFLOPS/s,

带宽=484GB/s,

最大算术强度=24 GFLOPS/GB。

通过统计VGG16和MobileNet模型的内存和算力需求,假设:

 ≈25 GFLOPS/GB

 ≈7  GFLOPS/GB

则两个模型在1080Ti的理论算力是:

=   ≈ 11.3 TFLOPS

=≈ 7 TFLOPS

AI模型在专用加速器上的性能分析指标,性能测试,人工智能,性能分析,计算访存比,算术强度,操作字节比,GEMM,Roof-line

模型在既定计算平台上的性能优化思路分析:

位于compute bound区域:

1: 提升平台算力

2:降低模型算力,比如模型剪枝和量化

位于mem bound 区域:

1:提升平台的带宽

2:优化平台带宽设计架构:如采用片上mem或者片上cache融合的方案,获得更大带宽

3:优化模型计算图,如算子融合,减少数据进出频次

参考

《AI 编译器开发指南》 

roofline model 谈性能优化 - 知乎

Roofline Model与深度学习模型的性能分析 - 知乎文章来源地址https://www.toymoban.com/news/detail-823165.html

到了这里,关于AI模型在专用加速器上的性能分析指标的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于英特尔® Gaudi® 2 AI 加速器的文本生成流水线

    随着生成式人工智能 (Generative AI,GenAI) 革命的全面推进,使用 Llama 2 等开源 transformer 模型生成文本已成为新风尚。人工智能爱好者及开发人员正在寻求利用此类模型的生成能力来赋能不同的场景及应用。本文展示了如何基于 Optimum Habana 以及我们实现的流水线类轻松使用 Ll

    2024年03月14日
    浏览(52)
  • AI嵌入式K210项目(15)-安全散列算法加速器

    K210内置了丰富的加速器,包括神经网络处理器 (KPU),AES(高级加密加速器),APU 麦克风阵列语音数据加速计算处理器,现场可编程 IO 阵列 (FPIOA),数字摄像头接口 (DVP),相对于软件可以极大的提高 AES 运算速度,快速傅里叶变换加速器 (FFT),安全散列算法加速器 (SHA256)。 本文介

    2024年01月20日
    浏览(58)
  • “百里挑一”AI原生应用亮相,百度智能云千帆AI加速器首个Demo Day来了!

    作者简介: 辭七七,目前大二,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 自动化、智能化的企业AI智能法务,私人专属的健康孪生体,打破求职信息差的AI职业规划助理,准确、高效、可

    2024年02月04日
    浏览(51)
  • 让GPT成为您的科研加速器丨GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图

    GPT对于每个科研人员已经成为不可或缺的辅助工具,不同的研究领域和项目具有不同的需求。 如在科研编程、绘图领域: 1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言,都可以为你提供相关的代码示例。 ​2、数据可视化: 生成各种类型的数据

    2024年02月09日
    浏览(73)
  • 阿里云Docker镜像加速器

    阿里云Docker镜像加速器详解: Docker 镜像 仓库 容器介绍 以及镜像仓库详解 访问 https://www.aliyun.com/ 搜索 “容器镜像服务”

    2024年04月25日
    浏览(46)
  • docker安装及加速器配置

    1、docker的安装 官网https://docs.docker.com/engine/install/为我们提供了三种安装方式。 使用存储库安装 从软件包安装 使用便捷脚本安装 官方推荐的是第一种,我里我也采用第一种方法,需要注意需要根据自己的系统和对应版本进行选择。这里我以我的Ubuntu(18.04.4)为例, (1)设置

    2024年02月16日
    浏览(42)
  • Github镜像加速器-FastGit

    FastGit  是一个对于  GitHub.com  的镜像加速器。使用共享资源为  GitHub  加速。 FastGit中文指南 关于 FastGit 的使用,本质上与 git 有关。常规的面向 GitHub 的 clone 命令可能如下: 使用 FastGit 时,可使用如下命令: 正如您所见, FastGit 仅仅是 GitHub 的代理,所以我们仅需要替换

    2024年01月16日
    浏览(94)
  • Docker 安装以及加速器配置

    通常我们因为安装docker出现许多错误,使用解压版安装方便快捷,并且增加加速器的配置,以及可视化界面的配置,让我们的成长更近了一步 虚拟机使用nat模式,配置ens33如下: 参考资料: 全网最新最全最详细 linux安装docker方式 - 知乎 docker国内镜像库地址 docker镜像仓库地址

    2024年01月21日
    浏览(55)
  • 连接鲨鱼加速器出现错误解决方法

    连接加速器出现651错误 连接加速器出现721错误 连接加速器出现619错误 Win7系统加速器出现734错误 xbox360连接加速器出错,连不上 XP连接加速器800错误 PS3连接加速器出现DNS错误 用网络加速器是否需要宽带支持 软件是手动换线还是自动换线? iPhone手机如何设置l2tp? Android|安卓

    2024年02月06日
    浏览(96)
  • Docker基础(三)—配置镜像加速器

    我们的镜像加速器用阿里云来作为示例 1、首先,我们进入阿里云云原生官网(http://ttps://promotion.aliyun.com) 2、注册一个账号,不注册用淘宝账号也可以使用 3、点击控制台 4、选择容器镜像服务 5、选择个人版,有条件的话,可以选择企业版  6、选择创建个人版  7、创建后,

    2023年04月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包