在先前的“AI芯片推理性能比拼,Nvidia称第一”一文中,我们提到MLPerf公布了AI芯片推理性能测试基准跑分结果,但可能有很多读者就算看了那些表格仍然一头雾水,因为有些系统看来相似但是分数却大不相同,而且也搞不清楚数字高低究竟是代表什么…
为此笔者请教了以色列AI芯片新创公司Habana Labs的研究科学家Itay Hubara,他非常好心地解释了MLPerf表格中不同的分组(categories)、赛程(divisions)、模型(models)以及情境(scenarios)所代表的意义;以下与大家分享我的学习心得。
MLPerf的AI芯片性能跑分列表并不是那么简单明了容易懂。
(来源:MLPerf)
分组
其中“现货”(available)意味着该系统目前在市场上已经买得到,其软件堆栈必须已经完全准备就绪,而且提供跑分结果的公司得让社群能重现其结果。这意味着不在该公司SDK中的所有程序代码必须要上传到MLPerf的Github平台。
在“预览”(preview)分组中的系统,意味着提交分数的公司需要让该产品在MLPerf下一次(预计是明年夏天)公布AI芯片推理性能分数时上市,而在这个分组中的公司不需要提供所有的软件。此外还有“研发与其他”(Research, Development, Other)组别,这意味着此分类中的系统仍在原型阶段,还没有量产计划,提交分数的单位也不需要分享任何软件。
赛程
封闭赛程(Closed Division)是要让各系统能够直接比较,参与的公司必须要遵守严格的规范,包括使用一套标准的预先训练模型参数(model weights)。开放赛程(Open Division)则被Hubara形容为像是“牛仔世界”(wild west),参与者不需要遵循什么规则,不过必须透露它们做了那些变更,诸如重新训练了模型,或者是进行了微调。
参与开放赛程的业者透过让自家算法工程师大显身手来展现优势,举例来说,Habana Labs在开放赛程中的分数,其延迟性降低到只有封闭赛程中的四分之一,充分发挥了Goya芯片的性能。不过基于封闭与开放赛程的本质,并不适合将封闭赛程与开放赛程中的分数拿来比较,或是将开放赛程中的分数各自比较。
模型
MobileNet-v1与ResNet-50 v1.5都是以ImageNet数据集进行推理的影像分类模型,MobileNet是手机用的轻量化网络,ResNet-50相较之下属于较重量级、适合较大的加速器使用。
MobileNet-v1与ResNet-34的SSD算法都是用来进行物体侦测,SSD的全名为单次多框侦测器(Single Shot MultiBox Detector),是一种用来侦测个别物体以进行某个图片中的物体分类之算法,必须搭配MobileNet或ResNet的分类算法使用。
MobileNet是较轻量化的模型,适用于较低分辨率的图片(300 x 300或0.09 Mpix);ResNet-34模型则能支持较高分辨率的影像(1,200 x 1,200或1.44 Mpix)。这些模型都是使用COCO (Common Objects in Context)数据集进行推理。
GNMT则是唯一并非以卷积神经网络或是图像处理为基础的测试基准,它是用于语言翻译(在这里的案例是德文翻英文)的递归神经网络(recurrent neural network)。
情境
总共有4种不同的情境,两种是边缘的推理,另外两种是数据中心的推理。其中单数据流(Single Stream)只是测量推理单一影像──样本总数(batch size)为1──所需时间,单位是毫秒(milliseconds.);在这个项目中,分数越低越好,而这种情境可能是相对应于一次执行单一影像推理的手机。
多数据流(Multi-Stream)则是量测某系统一次能处理多少影像数据流(样本总数大于1),依据不同模型,延迟在50~100毫秒之间。在这个项目中,分数越高越好;表现优良的系统最后可能是出现在配备很多个对着不同方向摄影镜头的自动驾驶车辆,或者是保全摄影机系统。
在服务器(Server)情境中,多个使用者会在随机时间内发送请求给系统,量测指针是该系统能在特定的延迟时间内支持多少请求;这里的数据流不像是多数据流情境那样持续,困难度会更高,因为样本数可能是动态的。数字越高代表成绩越好。
脱机(Offline)情境可能是对一本相簿中的影像之批处理,其中的数据能以任何顺序进行处理。这个情境没有延迟的限制,以每秒多少影像(images per second)为单位量测其处理量,数字越高代表成绩越好。
加速器数量(Number of accelerators)
这个量测基准是比较系统而非芯片;有些系统可能有一个主芯片一个加速器芯片,而最大规模的系统拥有128颗Google的张量处理器(TPU)加速器芯片。这里的分数并未针对每个加速器正规化(normalised),因为主芯片也扮演要角,它们与加速器的数量大致呈现线性关系。
为何有些分数是空白的?
MLPerf并未要求参与者提供每一种情境或模型的测试结果,用于终端平台的组件可能只会选择提交单一数据流与多数据流情境的分数;数据中心平台就可能会选择只提供服务器与脱机情境的测试分数。而显然每一家公司都选择提交它们认为最能表现其系统优点的分数。
还有另一个可能因素是,如Hubara举例解释,Habana的分数字段空白,是因为该公司来不及在这一次成绩公布的截稿收件时间内提交测试分数。此外在GNMT翻译模型项目提交分数的公司也比较少,因为这个模型现在被广泛认为已经过时,很多公司偏好花时间布署较新的算法,例如BERT。
仅供参考
而整体说来,MLPerf的分数是量测纯粹性能,但为某个实际应用选择一套系统当然还需要考虑许多其他因素。例如在这一系列成绩单中,并没有关于功耗的量测(据说下一个版本的测试基准会将这个项目囊括其中)。
成本也是一个未包括的指标;而显然如果一套系统只有一颗加速器芯片,另外一套则有128颗加速器芯片,两者在价格上一定也会不同。MLPerf的表格也列出了每一套系统使用的主处理器,这可能会带来额外的成本,而且也可能会需要昂贵的水冷系统。
至于系统主机的外观(Form Factor)──例如行动/手持式(mobile/handheld)、桌上型/工作站(desktop/workstation)、服务器(server)、边缘/嵌入式(edge/embedded)则是由系统制造商自行提供的指针,并非每一个分组中严格限制的基准参数。
在MLPerf表格右侧,点击每一个系统的“细节”(details)连结,则能看到该系统更详细的软硬件规格,值得参考。在其详细规格中的某些部份是必填信息,有些不是;但从中可以得知像是散热等系统要求。
编译:Judith Cheng 责编:Yvonne Geng
(参考原文: Understanding MLPerf Benchmark Scores,by Sally Ward-Foxton)