历史上的今天
今天是:2025年07月28日(星期一)
2020年07月28日 | AI边缘推理与数据中心的差别在哪儿
2020-07-28 来源:EEWORLD
翻译自——EEtimes
虽然推理加速器最初用于数据中心,但它们已经迅速发展到应用程序的边缘推理,如自动驾驶和医学成像。通过这种转变,客户发现,同样的加速器,在数据中心处理图像很顺利,但移到边缘推断方面却显得糟糕。其实原因很简单:一个处理数据池,而另一个处理的是数据流。
当你在batch = 1时进行批处理时,池子里待处理的batch就会很多。在数据中心,客户通常是数据的处理池,比如被标记的照片。其目标是用最少的资源和功耗以及最佳的延迟来处理尽可能多的照片。
另一方面,边缘推断应用程序需要处理数据流。我们通常的相机每秒拍摄30帧,每帧通常是200万像素。通常情况下,每幅图像需要33毫秒,每秒大约30帧。当你有一个图像从一个流进来,它如何被处理取决于它需要做什么。
例如,使用推理进行零售分析的商店可能会计算给定时间排队的人数。在这个例子中,他们真的不需要几个小时甚至几天的结果。然而,如果你驾驶一辆使用自动驾驶功能的汽车,你只有毫秒来处理图像,否则你可能会撞到人。虽然在这两个例子中,相机每3毫秒生成1帧图像,但使用的推理加速器非常不同。
让我们看看数据流发生了什么。
首先,您需要清理图像以去除诸如光线条纹之类的东西,然后应用推理。当推理完成后,您需要采取一个行动,根据你正在处理的活动,所有这些都需要在特定的时间内发生。如果你不需要几个小时的结果,你可以对图像进行批处理。在这种情况下,延迟就无关紧要了。重要的是用最少的成本和能量处理最多的图像。
最常犯的一个错误就是在选择边缘推断解决方案时没有考虑延迟和流媒体吞吐量。比方说,你有一台每秒能处理30帧的推理加速器,另一台每秒能处理15帧。
大多数人自然而然地认为每秒30帧的解决方案更好——其实你错了。
每秒30帧的加速器可能会获得比较可观的吞吐量,原因是它有三个引擎,每个引擎都有不同的延迟。最典型的是英伟达Xavier推理加速器。Xavier的深度学习引擎处理图像大约需要300毫秒,GPU大约需要90毫秒。如果客户有两个深度学习引擎+GPU都在运行,他们可能会在数据池中获得显著的吞吐量。

但是,如果它需要从数据流一次处理一个图像,它就不能有效地使用深度学习引擎,吞吐量会显著下降。在这种情况下,你需要观察哪个执行单元的延迟最短,即GPU的延迟为90毫秒。分割成1000毫秒就是每秒的帧数,这意味着这个吞吐量实际上只有每秒10帧(而不是宣传的每秒30帧)。
x Logix购买了一台Xavier AGX,并将其配置为NX模式(该软件测量芯片的功率,当功率超过15W时,会调低芯片的时钟,以防止芯片过热)。
然后,我们通过Nvidia Xavier NX软件流运行三个模型(YOLOv3加上我们客户的两个模型),并在芯片上运行,测量每张图像的延迟。我们还通过自己的InferX X1性能评估器运行了相同的模型。
显然,Nvidia不能为我们自己客户的机型发布基准测试,但YOLOv3的数据是在Xavier AGX上发布的,而不是在NX上发布的——而且他们发布的数据是使用GPU和两个DL加速器的综合吞吐量。对于Batch= 1,GPU有可接受的延迟。
不同的领域对应不同的处理器
关注自动驾驶和航空航天等应用程序的客户要处理数据流,所以可能只关心流吞吐量。即使它们是空闲的,它们也不能利用运行较慢的执行单元,因为它们需要在下一个图像可用之前处理第一个图像。在这些应用程序中,要跟上图像流是至关重要的,因为如果不这样做,就需要存储越来越多的数据。如果应用程序是自动驾驶,这将延长延迟时间,并可能导致严重后果。
总之,如果你正在研究推理加速器,请明白它们是为什么而优化的。
今年推出的大多数推断加速器都是为ResNet-50进行优化设计的,本人认为是一个糟糕基准测试,因为它使用了小图像,比如224×224。

对于像自动驾驶这样的应用程序,一般是需要处理200万像素的1440×1440级别的图像。对于这些应用程序,YOLOv3是一个更好的基准测试。
我们也开始看到与ResNet-50和YOLOv3有着截然不同的新模型。在生物医学工程或医学成像等市场,他们处理不同类型的传感器,而非行人目标的检测和识别,他们以一种非常不同的方式使用神经网络。在YOLOv3上运行良好的加速器可能在这些模型上运行得更好。
简单介绍一下YOLOv3,它是YOLO (You Only Look Once)系列目标检测算法中的第三版,相比之前的算法,尤其是针对小目标,精度有显著提升。下面我们就来看看在算法中究竟有哪些提升。
YOLOv3算法

首先如上图所示,在训练过程中对于每幅输入图像,YOLOv3会预测三个不同大小的3D tensor,对应着三个不同的scale。设计这三个scale的目的就是为了能够检测出不同大小的物体。在这里我们以13x13的tensor为例做一个简单讲解。对于这个scale,原始输入图像会被分成分割成13x13的grid cell,每个grid cell对应着3D tensor中的1x1x255这样一个长条形voxel。255这个数字来源于(3x(4+1+80)),其中的数字代表bounding box的坐标,物体识别度(objectness score),以及相对应的每个class的confidence,具体释义见上图。
其次,如果训练集中某一个ground truth对应的bounding box中心恰好落在了输入图像的某一个grid cell中(如图中的红色grid cell),那么这个grid cell就负责预测此物体的bounding box,于是这个grid cell所对应的objectness score就被赋予1,其余的grid cell则为0。此外,每个grid cell还被赋予3个不同大小的prior box。在学习过程中,这个grid cell会逐渐学会如何选择哪个大小的prior box,以及对这个prior box进行微调(即offset/coordinate)。但是grid cell是如何知道该选取哪个prior box呢?在这里作者定义了一个规则,即只选取与ground truth bounding box的IOU重合度最高的哪个prior box。
上面说了有三个预设的不同大小的prior box,但是这三个大小是怎么计算得来的呢?作者首先在训练前,提前将COCO数据集中的所有bbox使用K-means clustering分成9个类别,每3个类别对应一个scale,这样总共3个scale。这种关于box大小的先验信息极大地帮助网络准确的预测每个Box的offset/coordinate,因为从直观上,大小合适的box将会使网络更快速精准地学习。
史海拾趣
|
由于平时修理电器需要常用的维修电源,自己做了一台外壳太大,干脆购买一台吧这不从网络上选中浙江一家公司,汇款过去了当天下午给我发货来了,使用的就是圆通速递公司,大约4天以后我们当地的圆通收到货后,放了两天左右又给退回了浙江,并说我没 ...… 查看全部问答> |
|
我们在前面所举的几个例子,其称重传感器灵敏度以S = 2mv / v 考虑的,如果灵敏度S = 1mv / v 来考虑会怎么样呢?对同样是选用单只称重传感器的衡器,我们来比较一下: 称重传感器灵敏度S = 1mv / v 时:激励电压V = 12V, 最大秤量E ...… 查看全部问答> |
|
现场可编程门阵列(FPGA)技术因其提供的设计灵活性,已为系统设计人员广泛采用。非晶硅反熔丝FPGA技术尤其有用,它可以提供一种高电路密度与低功耗,以及非易失性编程和高可靠性的组合。为了充分发挥其可靠性,FPGA厂商需要考虑反熔丝的崩溃(wear-out ...… 查看全部问答> |
|
系统挂起: BatteryGetStatus!temp_vol 374 WAIT_OBJECT_0 BatteryGetStatus!temp_vol 375 :: BACKLIGHT OFF ! [A_HW] IOControl(IOCTL_POWER_SET) : D0 => D4 [A_HW] IOControl : System Power State - suspend PCF: HW_PowerDown 按 ...… 查看全部问答> |
|
89c51指令 MOV A,@R0 和MOV R0,#20H. RRC A 的作用解答 问题1. MOV A,@R0 根据89C51的指令集意思是: 若A=08H R0地址的内容为20H,则执行MOV A,@R0后 A=20H A的地址为20H吗??那么A中的内容为0了吗? 问题2. 按以下程序 RRC A ; C为PSW程序状态字的一位进位标志,又称为布尔处理器 ...… 查看全部问答> |
|
这种错误怎么回事?error CVT1100: duplicate resource. CVTRES : fatal error CVT1100: duplicate resource. type:DIALOG, name:102, language:0x0804 LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt… 查看全部问答> |
|
截取打印机的要打印的数据内容,并且提取其中一些特定的数据,给银子。 截取打印机的要打印的数据内容,并且提取其中一些特定的数据, 本地打印,并口打印机,XP系统. 如有谁能解决,请联系黄先生,QQ:28291106,msn:robotcn@msn.com.… 查看全部问答> |
|
哪位高手可以将汉字的编码范围告诉小弟啊~ 我读出一个字符,怎么判断它是一个汉字,还是无效字符。 目前我只知道0X80以下是特殊字符。。。。… 查看全部问答> |
|
随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。这里介绍学习Linux的一些建议。 一、从基础开始:常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的。例如: ...… 查看全部问答> |




