【技术实现步骤摘要】
一种针对深度学习推理服务系统的GPU调度优化方法
[0001]本专利技术属于计算机系统结构与人工智能
,具体涉及一种针对深度学习推理服务系统的GPU调度优化方法。
技术介绍
[0002]随着数据的爆炸式增长、核心算法的改善和硬件算力的提升,深度学习技术为人工智能的发展与应用带来难以估量的价值,也已被广泛应用于计算机视觉、语音识别和自然语言处理等领域。深度学习主要包括“训练”和“推理”这两个阶段。训练阶段是根据输入数据,利用优化算法不断调整深度神经网络(Deep Neural Networks,DNN)权重的过程,是构建模型的过程。由于输入数据和DNN权重参数的数量较大,训练这些DNN模型通常需要大量的算力,且耗时几小时到几天才能完成训练过程。
[0003]GPU(Graphics Processing Unit,图像处理器)和TPU(Tensor Processing Unit,张量处理器)等硬件加速器,凭借能够对数据进行简单重复操作的强大能力,成为DNN模型训练加速的主流硬件。当DNN模型训练完毕后,就可以开始对输入数据进行预测,进而进入到推理阶段。DNN模型的在线推理服务是深度学习技术一个重要的可落地应用场景,其将DNN模型部署于云端数据中心,为租户提供推理服务,使计算资源受限的移动设备也能通过该服务来支持深度学习应用。推理任务在早期更多被部署于CPU(Central Processing Unit,中央处理器)。随着DNN模型的加大,在CPU上运行推理任务难以满足端到端的实时性需求(延时小于100 ...
【技术保护点】
【技术特征摘要】
1.一种针对深度学习推理服务系统的GPU调度优化方法,包括如下步骤:S1.对调度优化参数进行初始化;S2.获取当前时刻下,深度学习推理服务系统的待处理任务,基于深度学习推理服务系统的系统参数,预测待处理任务中各个模型在新一轮周期内的吞吐量需求;S3.开启新一轮周期,基于步骤S2得到的各个模型在新一轮周期内的吞吐量需求,在周期时长内对各个模型的吞吐量进行调整和分配;S4.当前周期结束后,重复步骤S2~S3,直至深度学习推理服务系统终止运行,完成针对深度学习推理服务系统的GPU调度优化。2.根据权利要求1所述的针对深度学习推理服务系统的GPU调度优化方法,其特征在于步骤S1所述的对调度优化参数进行初始化,具体包括:系统定义的全局共享数据中包括了模型变量数组models[2][m]、模型状态索引si和与模型状态索引si对应的模型状态锁变量si_lock,为每个模型设置模拟队列和请求队列;其中,models[2][m]用于存储状态信息,存储状态信息包括各模型吞吐量需求的估算值和当前周期的实际吞吐量;m为模型数量,models[2][m]数组每列对应一个模型的状态信息,将models[2][m]中各元素和si的初始值设置为0,且si的取值限定为0或1;为避免预测过程和调度过程在模型状态信息上的读写冲突,调度过程仅从si值指定的行来读写models[2][m]数组中各列存储的模型状态,预测过程则从si
′
值指定的行来读写models[2][m]数组各列存储的模型状态,其中,si
′
=(si+1)%2,%为求余符号;并行执行的预测过程个数为n个,并行执行的调度过程个数为k个,m、n、k均为自然整数,m取值需满足大于等于1,n、k的具体取值根据系统的硬件配置进行设定;每个模型的请求队列用于存储该模型等待响应的推理请求,模拟队列用于存储步骤S2所述预测流程涉及到的推理请求。3.根据权利要求2所述的针对深度学习推理服务系统的GPU调度优化方法,其特征在于步骤S2所述的基于深度学习推理服务系统的系统参数,预测待处理任务中各个模型在新一轮周期内的吞吐量需求,具体为采用如下步骤进行吞吐量需求的预测:A.将所有模型平均分配给各个预测过程:系统存在的模型个数为m个,并行执行的预测过程个数为n个,m、n均为自然数,m取值满足大于等于1,n的具体取值根据系统的硬件配置进行设定且大于等于1;前n
‑
1个预测过程分配到的模型个数为个,为向上取整符号,最后1个预测过程分配到的模型个数为m%n个,其中%为取余操作;B.启动预测过程估算新一轮周期内所有模型的吞吐量需求:针对当前模型,预测过程假定该模型独占GPU计算资源,模拟调度该模型尚未完成的请求,计算模拟调度情况下,一个周期时长内能够响应成功的推理请求数,并将计算结果作为该模型在新一轮周期内的吞吐量需求;C.所有预测过程在完成估算任务后结束;D.获取模型状态锁变量si_lock,更新模型状态索引si为si=si',为调度过程发布新一轮周期内的模型状态数据,并在更新结束后释放模型状态锁变量;E.结束本轮预测流程;预测过程针对单个模型估算吞吐量需求的细化流程具体包括:
(1)复制当前模型的请求队列中所有请求到该模型的模拟队列中;(2)清空当前模型待发布的状态数据:假定当前模型的编号为i,models[(si+1)%2][i]所对应的元素为该模型待发布的状态数据;每个模型状态数据包含两个成员变量:sim_solo和goodput;其中,models[(si+1)%2][i].sim_solo为编号为i的模型的sim_solo成员变量,用于记录为当前模型估算的吞吐量需求,models[(si+1)%2][i].good...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。