赞
踩
应用场景:
二分类查询,例如:查询图片中有没有汽车。以及聚合问题,例如:查询视频中的汽车数量。
解决的问题:
图像分类
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倍的端到端吞吐量改进。
深度神经网络(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执行的方法,包括预处理操作的硬件和输入感知放置。
主要针对神经网络的推理过程,证明了预处理的成本在推理中占主导地位。
为了减少预处理和DNN执行之间的不平衡,我们开发了一个新颖的系统,Smol。Smol的目标是执行端到端的批量视觉分析查询。与之前的工作不同,Smol的目标是优化端到端查询时间,除了DNN执行的计算成本外,还包括预处理的计算成本。
为了执行这些视觉分析查询,Smol使用基于成本的模型来生成跨越预处理和DNN执行的查询计划。Smol在其优化的端到端推理引擎中执行这些计划。对于一个给定的查询系统(如Tahoma或BlazeIt),必须将Smol的成本模型集成到系统中
部署设置:
在这项工作中,我们专注于高吞吐量的批处理设置。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)。我们在下面详细描述这些优化。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。