当前位置:   article > 正文

SMOL:Jointly Optimizing Preprocessing and Inference for DNN-based Visual Analytics,VLDB,2020_smolx

smolx

Summary

应用场景:
二分类查询,例如:查询图片中有没有汽车。以及聚合问题,例如:查询视频中的汽车数量。
解决的问题:
图像分类
Baseline:
TAHOMA:降低全分辨率图像的采样率,改善DNN的执行力,并未降低预处理成本,它的输入格式固定以及目标模型都是固定的。
BlazeIt:使用特殊的NN作为控制变量,训练单个NN。使用固定的输入格式
描述:
随着硬件的发展,Smol发现预处理的成本比训练的成本高,所以提出了降低预处理成本的思路方法。
Motivation:
之前的工作:使用代理或者专用NN,过滤输入,减少DNN执行时间(NoScope、BlazeIt、TAHOMA、AQP),
但是忽略了预处理(或将图像数据解码、转换和传输加速器的过程)的时间。
作者提出了两种见解:a)DNN的精度和吞吐量与其输入格式密切相关;b)预处理操作可以放在CPU和加速器上。
这为加速推理提供了两个新的机会:a)基于成本的方法,利用低分辨率的视觉数据来提高精度或改善吞吐量;b)输入和硬件感知的方法,将预处理操作放在CPU或加速器上,并正确地进行流水线计算。
Goal:
Smol的目标是优化端到端的查询时间,除了DNN执行的计算成本,还包括预处理的计算成本。在可用的硬件资源上实现最高的吞吐量,即最小化预处理成本,最大化吞吐量。

Problem/Challenges:

Solution:
首先,我们引入了新的方法,通过使用原生存在的低分辨率视觉数据来实现准确性吞吐量的权衡。 通过我们新的预处理感知成本模型,我们可以选择输入格式和DNN组合,以实现更好的精度/吞吐量权衡。

其次,我们决定将预处理操作放在CPU或者加速器上,以平衡DNN执行和预处理的吞吐量。此外,为了实现高性能的流水线推理,我们构建了一个优化的运行时引擎,用于端到端的DNN推理。我们的优化运行时引擎充分地利用流水线执行、内存管理和高性能线程来充分利用现有的硬件资源。
预处理:调整大小、裁剪、像素级归一化、数据类型转换、通道重排序
一些优化:
(1)高效使用硬件资源
(2)优化预处理步骤
(3)预处理操作的位置选择
(4)图像解码的优化
6.1(1)为了有效地使用所有可用的硬件资源,Smol必须高效地进行流水线计算,使用线程,使用/重复使用内存
由于执行DNNs需要在CPU和加速器上进行计算,因此Smol必须进行重叠计算。要做到这一点,Smol 采用多生产者、多消费者(MPMC)排队系统,以实现多线程。生产者对视觉数据进行解码,消费者进行DNN执行。Smol使用多个消费者,利用多个CUDA流。由于预处理是数据并行的,而且发行CUDA内核是低开销的,我们发现,将生产者数量设置为等于vCPU核数,对于非NUMA服务器来说是一种高效的启发式方法。
高效使用MPMC排队系统的重要性能优化是重用内存并复制到加速器。此前的工作主要集中在高效的预处理上。用于训练的内存缓冲区必须传递包含预处理的 图像给调用者,这就无法实现有效的内存重用。与此相反,调用Smol的人只需要推理结果,而不需要中间的预处理缓冲区。因此。Smol可以重复使用这些缓冲器。此外,加速器需要需要固定的内存以进行有效的内存传输。重复使用固定的内存,可能使性能得到大幅提升。Smol进一步超额分配内存,以确保生产者线程不会与消费者线程竞争。
(2)优化通用的预处理操作
预处理:调整大小、裁剪、像素级归一化、数据类型转换、通道重排序
为了优化这些步骤,Smol会将预处理步骤接受为计算定向、无环图(DAG),并对这些步骤进行基于规则和基于成本的组合优化。为了优化一个计算DAG,Smol将详尽地生成可能的执行计划,应用基于规则的优化来过滤掉计划,并执行基于成本的优化来在剩余的计划中进行选择。
Smol包含了允许操作重排序的规则,以生成可能的执行计划集。
a、归一化和数据类型转换可以放在计算图的任何一点。
b、归一化、数据类型转换和通道重排序可以融合。
c、调整大小和裁剪可以互换。
一旦Smol生成所有可能的执行计划,Smol就会应用以下规则来修剪计划。
a、像素越少,调整大小越便宜。
b、 数据类型越小,调整大小越便宜(例如,int8调整大小比float32调整大小便宜)。
c、融合总是能提高性能。
我们目前手动实现融合,但也可以应用代码生成来生成这些内核。给定一组基于规则的修剪后的计划,Smol通过计算每个计划中给定数据类型的算术运算次数来近似计算成本。Smol会选择最便宜的计划。

系统开源否:
开源
https://github.com/stanford-futuredata/smol
数据集开源否:
开源:
图像数据集:bike-bird,animals-10,birds-200,and imagenet
视频数据集:BlazeIt中的数据集:night-street, taipei, amsterdam, and rialto
运行环境:
公共云上
流程:
Smol的架构图包括三部分:计划生成器、成本估算器、执行引擎
输入包括一组DNN,可视输入格式以及可选约束,输出包括最佳的一组计划。
(1)计划生成器用于生成查询计划;
(2)对于生成的每个计划,成本估算器将估计预处理和DNN推理的相对成本,并决定在何处放置预处理操作(CPU或者加速器上),以实现最高的吞吐量;
(3)计划选择器选择最优的查询计划,查询引擎执行查询。

在这里插入图片描述

摘要

虽然深度神经网络(DNNs)是一种越来越流行的查询大型数据集的方法,但其大量的运行时间仍然是一个活跃的研究领域。因此,研究者们提出了一些系统和优化方案,通过允许用户在准确性和速度之间进行权衡来降低这些成本。在这项工作中,我们研究了现代加速器上的视觉分析系统中的端到端DNN执行情况。通过一项新颖的测量研究,我们表明数据的预处理(如解码、调整大小)可能是现代硬件上许多视觉分析系统的瓶颈。
为了解决预处理的瓶颈,我们为端到端视觉分析系统引入了两种优化方法。首先,我们介绍通过使用
本地存在的低分辨率的
视觉数据来实现准确性和吞吐量权衡的新颖方法。其次,我们为高效的视觉DNN推理开发了一个运行时引擎。这个运行时引擎a)有效地以流水线方式进行预处理和DNN推理,b)以硬件和输入感知的方式将预处理操作放在CPU或GPU上,c)有效地管理内存和线程以实现高吞吐量执行。我们在一个新的系统Smol中实现了这些优化,并在八个视觉数据集上对Smol进行了评估。我们表明,在固定的精度下,它的优化可以比最近在视觉分析中的工作实现高达5.9倍的端到端吞吐量改进。

1、介绍

深度神经网络(NNs)现在为一系列视觉分析任务和系统提供动力,因为它们的准确性很高,但最先进的DNN可能在计算上很昂贵。例如,精确的物体检测方法的执行速度可以慢到3-5帧每秒(fps)。
为了高效地执行视觉分析查询,系统构建者们已经开发了一些优化方案,以权衡准确性和吞吐量:更精确的DNN在计算上更昂贵。这些系统中的许多系统(例如,NoScope,BlazeIt,Tahoma和AQP)通过使用代理或专门的NN来加速视觉分析查询,这些NN近似于较大的目标DNN。 这些专门的NN比目标DNN的执行成本低5个数量级,用于过滤输入,从而减少目标DNN的执行次数
此前的工作只关注减少DNN执行时间。这些系统是在最近的DNN加速器推出之前建立的,因此是在旧的加速器上进行基准测试的。在这种情况下,这些系统正确地假设DNN执行时间是压倒性的瓶颈。例如,Tahoma在NVIDIA K80 GPU上进行基准测试,它以159张图像/秒的速度执行ResNet-50(一种历史上昂贵的DNN)。
然而,随着加速器编译器的发展,这些系统忽略了端到端DNN推理中的一个关键瓶颈:预处理,或者说解码、转换和向加速器传输图像数据的过程。在同类测量研究中,我们表明,当使用硬件加速器和编译器的先进技术时,预处理成本往往在端到端DNN推理中占主导地位。例如,历史上昂贵的ResNet-50在推理优化的NVIDIA T4 GPU上的吞吐量提高了28倍。因此,ResNet-50现在的吞吐量比基于CPU的图像预处理高出9倍,这使得预处理成为瓶颈,在推理优化的g4dn.xlarge亚马逊网络服务(AWS)实例上,该实例采用了NVIDIA T4。这种效率的提升可以转化为功耗和美元成本:预处理所需的功耗约为DNN执行的2.3倍,成本为11倍(§7)。Google Cloud的T4推理优化实例也具有类似的结果。这些不平衡只会随着最近的视觉分析系统使用的较小的专用NN而变得更高。
根据这些观察,我们研究了预处理和DNN执行的更有原则的联合优化的机会,我们利用了两个见解:a)DNN的精度和吞吐量与其输入格式密切相关,b)预处理操作可以放在CPU和加速器上。因此,我们不把输入格式看作是固定的,而是考虑将输入作为DNN架构搜索和训练中的一个关键步骤。
利用这些机会的一个关键要素是选择查询计划的成本模型。我们纠正了之前工作中的错误假设,即DNN执行在端到端DNN推理中占主导地位。相反,我们提出了一个具有预处理功能的成本模型,并验证了我们的成本模型比之前的成本模型更准确。虽然我们的预处理感知成本模型很简单,但它可以实现下游优化。
首先,我们提出了使用本机存在的低分辨率视觉数据的方法,以实现更高效、输入感知的准确性/吞吐量权衡。 图像和视频服务网站往往具有原生的低分辨率数据,例如,Instagram有缩略图,YouTube存储同一视频的多种分辨率。即使本地不存在低分辨率数据,我们可以对视觉数据进行部分解码。因此,我们可以使用本地存在的数据或部分解码来降低预处理成本。然而,天真地使用这种减少的 保真数据会降低精度。为了恢复精度,我们提出了一种增强的DNN训练程序,该程序明确使用数据增强来达到目标分辨率。此外,我们表明,在低分辨率数据上使用更大、更准确的DNN可以比在全分辨率上使用小型DNN精度更高。在我们新的预处理感知成本模型的支持下,我们可以选择输入格式和DNN组合,以实现更好地 准确性/吞吐量的权衡。
其次,我们决定将预处理操作放在CPU或加速器上,以平衡DNN执行和预处理的吞吐量。此外,为了实现高性能的流水线执行,我们构建了一个优化的运行时引擎,用于端到端可视化DNN推理。我们优化的运行时引擎充分地使用流水线执行、内存管理和高性能线程,以充分利用现有的硬件资源。
我们在Smol中实现了这些优化,Smol是一个端到端DNN推理的运行时引擎,可以整合到现有的视觉系统中。我们使用Smol来实现查询处理方法的两个现代视觉分析系统,BlazeIt[37]和Tahoma[8],并在八个视觉数据集上评估Smol,包括 视频和图像数据集。我们通过公有云上的基准测试验证了我们的成本模型选择 ,并表明Smol可以在最新的GPU硬件上实现高达5.9倍的吞吐量提升与近期视觉分析的工作相比。
综上所述,我们做出了以下贡献。
(1)我们表明,当充分使用现代硬件时,预处理成本在基于DNN的端到端分析中占主导地位。
(2) 我们说明了如何使用原生编码的低分辨率视觉数据格式和专门的NN来实现输入感知的准确性/吞吐量权衡。
(3) 我们提出并实现了进一步平衡预处理和DNN执行的方法,包括预处理操作的硬件和输入感知放置。

2、端到端推理的一些测试研究

主要针对神经网络的推理过程,证明了预处理的成本在推理中占主导地位。

3、Smol 概述

为了减少预处理和DNN执行之间的不平衡,我们开发了一个新颖的系统,Smol。Smol的目标是执行端到端的批量视觉分析查询。与之前的工作不同,Smol的目标是优化端到端查询时间,除了DNN执行的计算成本外,还包括预处理的计算成本
为了执行这些视觉分析查询,Smol使用基于成本的模型来生成跨越预处理和DNN执行的查询计划。Smol在其优化的端到端推理引擎中执行这些计划。对于一个给定的查询系统(如Tahoma或BlazeIt),必须将Smol的成本模型集成到系统中

3.1、系统概述

部署设置:
在这项工作中,我们专注于高吞吐量的批处理设置。Smol的目标是在可用的硬件资源上实现最高的吞吐量。例如,一个视觉分析引擎可能每天都会摄取图像或视频,并在每天晚上运行一个批处理分析作业。Smol对于大型数据集上的预处理绑定工作负载最有帮助。正如我们的描述,Smol接受从训练框架导出的模型(如PyTorch、TensorFlow或Keras)并优化其推理。 因此,它被设计为在推理时使用,而不是与训练框架一起使用。
尽管如此,我们的一些技术,特别是在联合优化预处理和推理方面,也适用于低延迟或受延迟限制的吞吐量设置。
我们注意到,在高吞吐量的批处理设置中,可视化数据几乎总是以需要预处理的压缩格式存储。未压缩的视觉数据很大:一个小时的720p视频几乎是900GB的数据,而压缩视频每小时可以小到0.5GB。同样,JPEG图像可以比未压缩的静态图像小10倍。
推理:
作为输入,Smol将取一组训练好的DNN和一组本地可用的视觉数据格式(如全分辨率JPEG图像、缩略图JPEG)。我们将DNNs集表示为D,视觉数据格式集表示为F 。Smol进一步获取一组校准图像(即验证集)来估计精度。鉴于这些输入,Smol将估计成本来选择一个计划(具体来说,一个DNN和一个输入格式)。然后Smol将优化该计划并执行它。
Smol在推理时可以选择吞吐量或精度约束。如果指定了约束,Smol将选择一个遵循这些约束的优化执行计划。否则,Smol将执行最高吞吐量的计划。Smol可以通过返回一个pareto最优计划集(在精度和吞吐量方面)与其他系统集成。然后,调用系统将选择一个Smol将执行的计划。
训练:
给定一组DNN架构(如ResNets)和本地可用的格式,Smol将选择训练部分或全部的DNN。给定全分辨率数据的初始模型集,Smol将对D和分辨率的交叉乘积进行网络微调(Smol将对相同分辨率的不同格式使用相同的模型)。随着Smol的微调,在我们考虑的设置中,这个过程最多会增加30%的训练开销。Smol也可以在执行时训练这些网络。
组件:
Smol与其他系统一样实现了训练阶段。由于在之前的工作中已经对训练专门的NN进行了深入的研究,我们将讨论推迟到这个之前的工作。Smol与这些系统的不同之处仅在于它的低分辨率增强的
训练。
在推理时,Smol包含三个主要部分。1)计划生成器,2)成本估算器,3)执行引擎。我们
图2中显示了这些组件。
Smol首先通过取D×F从D和F中生成查询计划。对于每一个计划,Smol将估计预处理和DNN执行的相对成本 ,并决定将预处理置于何处 (即在CPU或加速器上)以获得最高的吞吐量。考虑到这些优化的计划,Smol将使用其成本模型估计这些计划的准确度和吞吐量。与训练相比,这个过程很便宜,所以Smol详尽地对D×F的Pareto前沿进行了基准测试。Smol使用了一个可感知预处理的成本模型,与之前忽略这些成本的工作不同。最后,如果指定了约束条件,Smol将返回最佳查询计划,如果没有指定约束条件,则返回Pareto最优查询计划集。
优化:
为了高效地执行查询,Smol进行了多项优化,以提高准确率/吞吐量的权衡,以及高效的DNN执行引擎。
简而言之,Smol通过考虑扩展的DNN集和利用本机呈现的低分辨率数据实现了精度和吞吐量的提升(§5)。相比之下,之前的工作 只考虑一种输入格式。从选定的DNN和输入格式中,Smol将通过以硬件和输入感知的方式将预处理操作放置在CPU或加速器上,高效地对计算阶段进行流水线处理,并优化常见的预处理操作,高效地执行这样的计划(§6)。我们在下面详细描述这些优化。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/156168?site
推荐阅读
相关标签
  

闽ICP备14008679号