论文标题
使用自动层缓存提高基于DNN的软件服务的性能
Improving the Performance of DNN-based Software Services using Automated Layer Caching
论文作者
论文摘要
深度神经网络(DNN)已成为许多应用程序域(包括基于Web的服务)的重要组成部分。这些服务都需要高吞吐量和(接近)实时功能,例如,对用户的请求做出响应或反应,或者按时处理传入数据的流。但是,DNN设计的趋势是朝着具有许多层和参数的较大模型,以实现更准确的结果。尽管这些模型通常是预训练的,但是在如此大的模型中,计算复杂性仍然相对显着,从而阻碍了低推断潜伏期。实施缓存机制是用于加速服务响应时间的典型系统工程解决方案。但是,传统的缓存通常不适合基于DNN的服务。在本文中,我们提出了一种端到端自动化解决方案,以根据其计算复杂性和推理延迟来提高基于DNN的服务的性能。我们的缓存方法采用了DNN模型和早期出口的自我介绍的思想。提出的解决方案是一种自动化的在线层缓存机制,如果提前出口之一中的高速缓存模型足够充满最终预测,则可以在推理时间提早退出大型模型。本文的主要贡献之一是,我们将该想法作为在线缓存,这意味着缓存模型不需要访问培训数据并仅根据运行时的传入数据执行,从而适用于使用预训练模型的应用程序。我们的实验会导致两个下游任务(面部和对象分类)表明,平均而言,缓存可以将这些服务的计算复杂性降低到58 \%(就FLOPS计数而言),并将其推断潜伏期提高到46 \%,而准确度的降低到零下降到零。
Deep Neural Networks (DNNs) have become an essential component in many application domains including web-based services. A variety of these services require high throughput and (close to) real-time features, for instance, to respond or react to users' requests or to process a stream of incoming data on time. However, the trend in DNN design is toward larger models with many layers and parameters to achieve more accurate results. Although these models are often pre-trained, the computational complexity in such large models can still be relatively significant, hindering low inference latency. Implementing a caching mechanism is a typical systems engineering solution for speeding up a service response time. However, traditional caching is often not suitable for DNN-based services. In this paper, we propose an end-to-end automated solution to improve the performance of DNN-based services in terms of their computational complexity and inference latency. Our caching method adopts the ideas of self-distillation of DNN models and early exits. The proposed solution is an automated online layer caching mechanism that allows early exiting of a large model during inference time if the cache model in one of the early exits is confident enough for final prediction. One of the main contributions of this paper is that we have implemented the idea as an online caching, meaning that the cache models do not need access to training data and perform solely based on the incoming data at run-time, making it suitable for applications using pre-trained models. Our experiments results on two downstream tasks (face and object classification) show that, on average, caching can reduce the computational complexity of those services up to 58\% (in terms of FLOPs count) and improve their inference latency up to 46\% with low to zero reduction in accuracy.