买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:北京大学
摘要:本发明一种用于嵌入式设备的基于细粒度调度的深度学习模型内存优化方法,属于深度学习模型领域。本发明输入深度学习模型DNN到分析器,分析器根据DNN中各个算子的TE分析该算子及其所依赖的算子的循环轴的连接关系,输出轴连接图ACG给优化器;优化器根据ACG搜索对DNN的切分方案,将DNN转换为细粒度的DNN,并对其进行调度;将细粒度DNN及其调度交给模拟器评估其内存占用,通过测量器获得其执行性能,将内存和性能数据反馈给优化器进行迭代搜索,以得到最优的细粒度DNN及其调度,据此生成DNN的执行代码,并编译部署在目标设备上。本发明在不超过5%的性能开销的前提下,能够显著优化众多流行深度神经网络DNN运行时的内存需求,拓宽了DNN在小型设备上的应用范围。
主权项:1.一种用于小型设备的基于细粒度调度的深度学习模型内存优化方法,其特征在于,给定目标设备、性能开销限制、搜索时间限制和ONNX格式表示的原始DNN作为输入,具体步骤包括:1将测量器编译部署到目标设备上,测量器测得出原始DNN的各个算子的性能,即执行耗时,测量值反馈给模拟器,模拟器计算原始DNN执行耗时总和,结合预定比例的性能开销限制计算优化后的细粒度DNN执行耗时总和限制,并将该耗时限制值反馈给优化器;2模拟器根据原始DNN中各个算子的调度顺序以及算子之间的依赖来计算峰值内存,计算值反馈给优化器,具体为:根据调度序列和依赖计算各个算子输出张量的活跃期,设算子v所执行的时间为t1,所有依赖v的算子都执行完的时间为t2,则时间区间[t1,t2被称为v的活跃期,同一时间点活跃的所有算子的输出张量的大小总和即为该时间点的内存占用,所有时间点内存占用中的最大值即为该DNN峰值内存占用;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的第一个空间轴,A.s2表示算子A的第二个空间轴,B.s2表示算子B的第二个空间轴,C.s2表示算子C的第二个空间轴,C.t1表示算子C的第一个时间轴;再以不同算子的循环轴作为节点,根据连接关系作为边,构建ACG;4优化器根据ACG搜索对DNN的切分方案,将原始DNN切分为细粒度DNN;其中,每个切分方案由若干个ACG的连通分量CC和切分因子PF组成,将原始DNN沿ACGCC切分成细粒度DNN,ACGCC贯穿的每个算子都沿着对应的循环轴切分为若干个相同形状的细粒度算子,每个细粒度算子在被切分的循环轴上的长度都等于PF;5优化器对切分后的细粒度DNN应用反转后续遍历RPO算法获得算子调度序列;6优化器将步骤4的细粒度DNN和步骤5的调度序列输出给模拟器,模拟器根据细粒度DNN中各个算子的调度顺序以及算子之间的依赖来计算细粒度DNN执行过程中的峰值内存,并调用测量器获得单个算子的性能,并将其性能数据存储,计算各算子性能总和,再将峰值内存和各算子性能总和反馈给优化器;7优化器根据反馈的内存和性能数据,排除超过预定比例的性能开销的切分方案;进一步迭代搜索切分方案,即重复步骤4~本步骤,直到搜索时间超过给定的搜索时间限制,优化器选出目前最优的切分方案,即得到在性能损失不超过给定限制且内存占用最低的细粒度DNN以及其调度序列,最后据此生成DNN的执行代码,并编译部署在目标设备上。
全文数据:
权利要求:
百度查询: 北京大学 一种用于小型设备的基于细粒度调度的深度学习模型内存优化方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。