与云相比,移动系统受计算资源限制。然而众所周知,深度学习模型需要大量资源 。为使设备端深度学习成为可能,应用程序开发者常用的技术之一是压缩深度学习模型以降低其资源需求,但准确率会有所损失。尽管该技术非常受欢迎,而且已被用于开发最先进的移动深度学习系统,但它有一个重大缺陷:由于应用程序开发者独立开发自己的应用,压缩模型的资源-准确率权衡在应用开发阶段的静态资源预算的基础上就被预先确定了,在应用部署后仍然保持不变。
然而,由于开启新应用、关闭现有应用和应用优先级改变等事件,这些系统的可用运行时资源是动态变化的。因此,如果可用运行时资源无法满足压缩模型的资源需求,这些同时运行的应用就会互相争夺资源,导致流视频的处理帧率较低。另一方面,在有额外的运行时资源时,压缩模型也无法利用这些额外资源来修复准确率损失。
本文提出了一种新型框架 NestDNN,将运行时资源的动态变化纳入考量,生成一种资源感知的多重租赁设备端深度学习移动视觉系统。NestDNN 用灵活的资源-准确率权衡代替了固定的资源-准确率权衡。在运行时方面,该框架为每个深度学习模型动态地选择最优资源-准确率权衡,以满足模型对系统可用运行时资源的需求。采用这种方法,NestDNN 可以高效利用移动视觉系统中的有限资源,最大化所有并行应用程序的性能。
挑战与对策。NestDNN 的设计面临两大挑战。(i)现有方法的局限在于:压缩模型的资源需求和准确率之间的权衡是固定的。因此,第一大挑战在于设计一个能让深度学习模型提供灵活的资源-准确率权衡的方案。一种朴素的方法是在移动系统中安装所有具备可能资源-准确率权衡的模型变体。然而,由于这些模型变体各自独立,这种方法无法扩展,在移动系统同时运行多个深度学习模型(每个模型又有多个变体)时不具备可行性。(ii)为每个同时运行的深度学习模型选择资源-准确率权衡非常关键。这是因为不同的应用具有不同的推断准确率和处理延迟目标。以路况监督无人机为例:一个通过车辆计数来检测交通拥堵的应用不需要很高的准确率,但要求低延迟;而一个读取车牌的应用程序需要很高的车牌读取准确率,但不需要实时响应 [39]。
为应对第一个挑战,NestDNN 部署了一个新的模型剪枝和复原方案(recovery scheme),将深度学习模型转换为紧凑的多容量模型(multi-capacity model)。这一多容量模型由一组派生模型组成,每个派生模型提供不同的资源-准确率权衡。与彼此独立的传统模型变体不同,容量(即资源需求)较小的派生模型与拥有较大容量的派生模型共享模型参数,使其自身嵌入到较大容量的派生模型中,而无需占用额外的内存空间。采用这种做法,这种多容量模型可以提供多个资源-准确率权衡,其内存占用也较为紧凑。
为了应对第二个挑战,NestDNN 将每个并行应用的每个派生模型的推断准确率和处理延迟编码为一个成本函数。在给定所有成本函数的情况下,NestDNN 使用资源感知运行时调度器(resource-aware runtime scheduler)为每个深度学习模型选择最优资源-准确率权衡,并确定分配给每个模型的最佳运行时资源,以同时最大化整体推断准确率,最小化所有并行应用程序的总体处理延迟。
据我们所知,NestDNN 是第一个支持资源感知的多重租赁设备