System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种用于小型设备的基于细粒度调度的深度学习模型内存优化方法技术_技高网
当前位置: 首页 > 专利查询>北京大学专利>正文

一种用于小型设备的基于细粒度调度的深度学习模型内存优化方法技术

技术编号:43291267 阅读:22 留言:0更新日期:2024-11-12 16:11
本发明专利技术一种用于嵌入式设备的基于细粒度调度的深度学习模型内存优化方法,属于深度学习模型领域。本发明专利技术输入深度学习模型DNN到分析器,分析器根据DNN中各个算子的TE分析该算子及其所依赖的算子的循环轴的连接关系,输出轴连接图ACG给优化器;优化器根据ACG搜索对DNN的切分方案,将DNN转换为细粒度的DNN,并对其进行调度;将细粒度DNN及其调度交给模拟器评估其内存占用,通过测量器获得其执行性能,将内存和性能数据反馈给优化器进行迭代搜索,以得到最优的细粒度DNN及其调度,据此生成DNN的执行代码,并编译部署在目标设备上。本发明专利技术在不超过5%的性能开销的前提下,能够显著优化众多流行深度神经网络DNN运行时的内存需求,拓宽了DNN在小型设备上的应用范围。

【技术实现步骤摘要】

本专利技术属于深度学习领域,涉及深度学习模型(也称深度神经网络dnn)在嵌入式设备(也称小型设备)上的部署,具体涉及一种用于小型设备的基于细粒度调度的深度学习模型内存优化方法


技术介绍

1、深度学习模型(deep learningmodel),也称深度神经网络(deep neuralnetwork,dnn),是一种由多层神经元组成的人工神经网络。这些网络能够学习并模拟复杂的非线性关系,是近几年应用广泛的人工智能(artificial intelligence,ai)的核心要素。张量(tensor),也称为多维数组(nd-array),是dnn中的基本数据表示。张量的维度(dimension)也称为张量轴(tensoraxis)。一个n维张量有n个张量轴,张量x的所有张量轴记作x.a,第i个张量轴记作x.ai。张量的形状为其各个张量轴长度的组合,例如张量x的形状为2×3意味着其第一个轴长度为2,第二个轴长度为3。张量中的每个元素是一个标量,可以用下标索引访问,例如a[0,2]表示二维张量a的第0行第2列的标量元素。算子(operator)是dnn中对张量执行的基本操作,一个算子通常有若干个输入张量和一个输出张量。dnn中的算子可以是简单的数学运算,如加法和乘法,也可以是更复杂的运算,如矩阵乘法、卷积和池化。dnn算子大部分可以用张量表达式(tensor expression,te)表示,张量表达式通常包含循环轴(loop axis)、张量、求和符号以及其他标量运算符号,比如矩阵乘法可以表示为c[m,n]=∑ka[m,k]×b[k,n],其中m,n,k为循环轴,a,b,c是张量(a、b为输入张量,c为输出张量)。te中对输出张量进行索引的循环轴被称为空间轴(spatial-axis),和输出张量的张量轴一一对应,参与求和符号的循环轴被称为时间轴(temporal-axis),例如前面的例子中,m,n是空间轴,k是时间轴。算子x的所有空间(时间)轴记作x.s(x.t),第i个空间(时间)轴记作x.si(x.ti)。dnn可以表示为一个有向无环图(directedacyclic graph,dag),dag中的节点为dnn的算子,边为算子之间的数据依赖,若算子u的输出张量是算子v的一个输入张量,则在u,v之间有一条边,dnn的调度指dag中算子的执行顺序,该顺序需要满足算子之间的数据依赖,若u到v之间有一条边,则在调度中u的执行次序需要在v之前。

2、在微型控制器单元(mcu)等小型设备(tiny device)上部署dnn的做法正变得日益普遍,这一趋势为物联网(iot)领域的人工智能广泛应用奠定了基础。这些小型设备普遍具备有限的存储容量,典型配置包括不超过2mb的静态随机存取存储器(sram)和几mb容量的可扩展只读闪存(flash)内存。例如,stm32f767zi mcu就配备了512kb的sram和初始容量为2mb的可扩展flash。在小型设备上部署dnn时,模型权重通常会被存储在相对容量较大的flash内存中,而在推理(执行)过程中生成的中间张量则必须分配到容量有限的sram中。然而,即便是专门为资源受限设备设计的网络,其中间张量的内存需求相较于小型设备有限的sram也显得相当庞大。例如,mobilenetv2和bert-tiny这类网络为了保证精度,需要处理高分辨率的图像或长序列的令牌,增加了张量的大小。此外,某些网络为了提升模型的表现力采用了复杂的结构,这在推理过程中导致了更多中间张量的产生,进一步增加了对内存的需求。

3、已有一些库和框架被开发用于在小型设备上部署深度神经网络(dnn),但它们对于中间张量内存使用的优化关注不足。cmsis-nn为小型设备提供了dnn算子的实现,但没有提供dag的调度和内存管理。tensorflow-lite micro为dnn在小型设备上的部署提供了基础的调度框架和简单的内存管理,但并没有有效的内存优化手段。tinyengine等工作通过手动编写的基于补丁切分的算子来减少内存使用,但这种方法引入了显著的延迟开销,并且仅限于简单的卷积神经网络(cnn)结构,因此难以应用于更复杂的dnn,如nasnet这样的复杂cnn或bert-tiny这样的transformer模型。serenity和hmcos等研究发现,在具有复杂结构的网络中调度算子的执行顺序可以有效减少内存使用。然而,这些内存优化是有限的,因为它们仅考虑了粗粒度的调度,即以dnn算子为单位的网络调度方式。因此,研究一种用于小型设备的基于细粒度调度的深度学习模型内存优化方法,具有十分显著的意义。


技术实现思路

1、针对以上现有技术中存在的问题,本专利技术提出了一种用于小型设备的基于细粒度调度的深度学习模型内存优化方法,将对峰值内存占用最大的dnn部分算子分割为细粒度的算子(对dnn中一部分算子的切分即为对dnn的切分),并对dnn各个算子的执行进行合理的调度,使得拆分出来的各个算子的生命期不重叠,从而可以让那些算子共享相同的内存,突破之前工作粗粒度调度限制,进一步减少内存占用。

2、本专利技术的技术方案如下:

3、一种用于小型设备的基于细粒度调度的深度学习模型内存优化方法,给定目标设备、性能开销限制(为预定比例的性能开销限制:优化后的dnn在设备上的执行时间相对于原始dnn的执行时间的多出的比例限制)、搜索时间限制和onnx格式表示的原始dnn作为输入,具体步骤包括:

4、1)将测量器编译部署到目标设备上,测量器测得出原始dnn的各个算子的性能,即执行耗时,测量值反馈给模拟器,模拟器计算原始dnn执行耗时总和,结合预定比例的性能开销限制计算优化后的细粒度dnn执行耗时总和限制,并将该耗时限制值反馈给优化器;

5、2)模拟器根据原始dnn中各个算子的调度顺序以及算子之间的依赖来计算峰值内存,计算值反馈给优化器,具体为:根据调度序列和依赖计算各个算子输出张量的活跃期,设算子v所执行的时间为t1,所有依赖v的算子都执行完的时间为t2,则时间区间[t1,t2)被称为v的活跃期,同一时间点活跃的所有算子的输出张量的大小总和即为该时间点的内存占用,所有时间点内存占用中的最大值即为该dnn峰值内存占用;

6、3)分析器对原始dnn的各个算子的循环轴之间的连接关系进行分析,构建并输出轴连接图acg给优化器,具体为:分析器根据dnn中各个算子的张量表达式te分析该算子及其所依赖的算子的循环轴的连接关系,对于dnn中一个矩阵乘法算子c以及其依赖的算子a和b,其te为c[m,n]=σka[m,k]×b[k,n],其中m,n,k为循环轴,m是c的第一个空间轴,同时索引a的第一个空间轴,n也类似,而k是c的第一个时间轴,同时索引a的第二个空间轴和b的第一个空间轴,则有循环轴之间的连接关系:a.s1→c.s1,a.s2→c.t1,b.s1→c.t1,b.s2→c.s2,其中a.s1表示算子a的第一个空间轴,b.s1表示算子b的第一个空间轴,c.s1表示算子c的第一个空间本文档来自技高网...

【技术保护点】

1.一种用于小型设备的基于细粒度调度的深度学习模型内存优化方法,其特征在于,给定目标设备、性能开销限制、搜索时间限制和ONNX格式表示的原始DNN作为输入,具体步骤包括:

2.如权利要求1所述的用于小型设备的基于细粒度调度的深度学习模型内存优化方法,其特征在于,所述步骤1)将测量器编译部署到目标设备上,是通过USB进行烧录。

3.如权利要求1所述的用于小型设备的基于细粒度调度的深度学习模型内存优化方法,其特征在于,所述步骤1)预定比例的性能开销限制,其预定比例可调整,默认为5%。

4.如权利要求1所述的用于小型设备的基于细粒度调度的深度学习模型内存优化方法,其特征在于,所述步骤4)优化器根据ACG搜索对DNN的切分方案,对ACG中部分节点进行考虑,该被考虑的部分节点的连通分量CC的连接长度至少为2。

5.如权利要求1所述的用于小型设备的基于细粒度调度的深度学习模型内存优化方法,其特征在于,所述步骤6)模拟器调用测量器获得单个算子的性能,并将其性能数据存储,之后遇到相同形状的同类型算子会不进行测量而直接使用存储下来的性能数据。

6.如权利要求1所述的用于小型设备的基于细粒度调度的深度学习模型内存优化方法,其特征在于,所述步骤7)生成DNN的执行代码,为C++代码。

...

【技术特征摘要】

1.一种用于小型设备的基于细粒度调度的深度学习模型内存优化方法,其特征在于,给定目标设备、性能开销限制、搜索时间限制和onnx格式表示的原始dnn作为输入,具体步骤包括:

2.如权利要求1所述的用于小型设备的基于细粒度调度的深度学习模型内存优化方法,其特征在于,所述步骤1)将测量器编译部署到目标设备上,是通过usb进行烧录。

3.如权利要求1所述的用于小型设备的基于细粒度调度的深度学习模型内存优化方法,其特征在于,所述步骤1)预定比例的性能开销限制,其预定比例可调整,默认为5%。

4.如权利要求1所述的用于小型设备的基于细粒度调...

【专利技术属性】
技术研发人员:梁云陈仁泽
申请(专利权)人:北京大学
类型:发明
国别省市:

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

1