基于制造技术

技术编号:39714041 阅读:7 留言:0更新日期:2023-12-17 23:22
本发明专利技术公开了一种基于

【技术实现步骤摘要】
基于DNN算子并行的深度学习推理加速方法


[0001]本专利技术涉及深度学习模型计算加速
,尤其是一种基于
DNN
算子并行的深度学习推理加速方法,在提高
GPU
资源利用率的同时降低
DNN
的推理延时


技术介绍

[0002]深度神经网络
(DNN)
在图像处理

语音识别和虚拟现实等各个业务领域取得了显著的成功

众所周知,
DNN
推理任务对延时是非常敏感的

例如,出于安全考虑,自动驾驶场景中模型的推理延时要求就十分的严格
(
例如,在
100
毫秒内
)。
为了满足这样的性能要求,现代云数据中心托管了数千个
GPU
来加速用户的
DNN
推理

例如,阿里云拥有超过
6000

GPU
,其中许多
GPU
的任务就是管理大量的推理请求

[0003]云数据中心中的
GPU
配备了越来越强的计算能力,这通常超出了单个推理任务的资源需求,导致硬件资源的利用不足和浪费

为了以更少的计算量实现目标模型精度,最近的一些工作专注于在
DNN
模型中用几个较小的多分支算子代替过往的大算子,这进一步加剧了
GPU
资源的利用不足
r/>虽然批处理请求或多模型推理任务的并发处理可以缓解
GPU
资源利用率不高的情况,但由于批处理的数据量上升和多模型间的性能干扰,不可避免地会导致模型推理延时增加

因此,在不影响
DNN
推理延时的情况下提高
GPU
利用率势在必行

由于
DNN
模型通常可以由具有并行算子的有向无环图
(DAG)
表示,这为人们提供了利用算子并行性来加速
GPU

DNN
推理同时提高
GPU
利用率的机会

[0004]现有的算子并行的方法主要有基于二部图转换的方法和基于动态规划的方法

基于二部图转换的方法会引入很大的计算开销,同时其没有考虑算子间的干扰;基于动态规划的方法同样需要长时间的搜索,而且引入了过多的设备间同步,导致性能下降


技术实现思路

[0005]为了解决上述问题,本专利技术的目的是提供一种基于
DNN
算子并行的深度学习推理加速方法,即基于
DAG
中的无依赖关系的算子和离线收集算子的资源需求的并行调度策略

[0006]实现本专利技术目的的具体技术方案是:
[0007]一种基于
DNN
算子并行的深度学习推理加速方法,具体包括以下步骤:
[0008]步骤1:提交
DNN
模型与输入数据;
[0009]步骤2:根据模型结构生成流分配方案;
[0010]将
DNN
模型转换为计算图模式,以拓扑排序的顺序遍历计算图中的节点;对于每一个节点,遍历其所有父亲节点,直到找到一个父亲节点满足当前节点为其第一个后继节点,然后将当前节点的流设置为与该父亲节点所在的流一致;如果找不到满足条件的父亲节点,则将当前节点的流设置为一个新创建的流;
[0011]步骤3:取一个批次数据运行
DNN
一次,获取运行过程中算子对
GPU
的资源需求;
[0012]利用
PyTorch
的分析器获取算子运行时信息保存为
json
格式文件,从
json
格式文件中解析出所有函数调用时间戳;利用核函数运行开始时间戳一定晚于核函数启动的时间
戳的特性,得出算子与其运行时资源需求信息的映射关系,从而确定算子的线程数量

共享内存大小以及寄存器数量;
[0013]步骤4:基于步骤3所获取的资源需求以及算子所属类别,确定一个干扰感知且能够降低
GPU
空闲时间的算子发射顺序;
[0014]首先获取所有入度为0的待发射算子,并将这些待发射算子根据算子所属类别即访存密集型与计算密集型分成两个队列,分别为访存队列与计算队列;循环执行以下步骤直到两个队列均为空,即每次发射算子时交替选择两个队列中的非空队列,并从选择后的队列中选择算子资源需求最少的算子进行发射;发射之后更新算子的入度,然后将入度为0的算子根据其所属类别分别添加到访存密集型与计算密集型的两个队列中;
[0015]步骤5:基于步骤2的流分配方案与步骤4的算子发射顺序,捕获具体执行过程,生成一个能够在
GPU
上并行执行算子的
CUDA Graph

[0016]将步骤2得到的所有流设置为待捕获模式,同时遍历计算图中的所有节点,为每个节点创建同步事件并创建一个事件列表来保存该节点依赖完成的事件,将每个节点的所有不在同一个流上的父亲节点的同步事件加入该事件列表;根据步骤4的算子发射顺序将算子发射到设置为待捕获模式的流中,运行时控制每个算子必须在其事件列表中的所有依赖事件完成后执行,从而捕获整个执行过程,生成一个能够在
GPU
上并行执行算子且之后的运行无需再次捕获的
CUDA Graph。
[0017]本专利技术解决了
GPU
中模型推理资源利用率不足与推理速度慢的问题

本专利技术将
DAG
中的可并行算子尽量调度到不同的流中,同时降低流同步的开销,实现了算子的并行执行;此外,通过提前获取算子运行的资源需求,通过对算子进行分类与排序,从小到大依次发射,提高了
GPU
的资源利用率同时降低了模型的推理时延

附图说明
[0018]图1为实施本专利技术的系统架构图;
[0019]图2为本专利技术流程图

具体实施方式
[0020]为使本专利技术的目的

技术方案和优点更加清楚,下面将结合附图对本专利技术的实施方式作进一步地详细描述

本专利技术设计并实现了一个高效的算子并行调度框架,来提高
GPU
计算平台下
DNN
推理的资源利用率同时降低推理时延

[0021]如图1所示,实施本专利技术的流程包括:用户提交
DNN
模型与输入数据,流分配器根据
DNN
模型转换为
DAG
表示,并根据其生成流分配方案,模型数据收集器获取算子的资源需求,算子发射器生成算子发射顺序,图捕获器综合以上生成一个并行化的
CUDAGraph本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.
一种基于
DNN
算子并行的深度学习推理加速方法,其特征在于,具体包括以下步骤:步骤1:提交
DNN
模型与输入数据;步骤2:根据模型结构生成流分配方案;步骤3:取一个批次数据运行
DNN
一次,获取运行过程中算子对
GPU
的资源需求;步骤4:基于步骤3所获取的资源需求以及算子所属类别,确定一个干扰感知且能够降低
GPU
空闲时间的算子发射顺序;步骤5:基于步骤2的流分配方案与步骤4的算子发射顺序,捕获具体执行过程,生成一个能够在
GPU
上并行执行算子的
CUDA Graph。2.
根据权利要求1所述的深度学习推理加速方法,其特征在于,所述步骤2,具体包括:将
DNN
模型转换为计算图模式,以拓扑排序的顺序遍历计算图中的节点;对于每一个节点,遍历其所有父亲节点,直到找到一个父亲节点满足当前节点为其第一个后继节点,然后将当前节点的流设置为与该父亲节点所在的流一致;如果找不到满足条件的父亲节点,则将当前节点的流设置为一个新创建的流
。3.
根据权利要求1所述的深度学习推理加速方法,其特征在于,步骤3所述获取运行过程中算子对
GPU
的资源需求,包括:利用
PyTorch
的分析器获取算子运行时信息保存为
json
格式文件,从
json
格式...

【专利技术属性】
技术研发人员:徐飞陈奥东
申请(专利权)人:华东师范大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1