MLPerf推理基准:测试场景、模型与数据集

聊到AI芯片的推理性能,圈内人绕不开的一个话题就是MLPerf Inference。我个人习惯把它叫做「芯片界的奥运会」——虽然这个比喻有点老套,但确实贴切。你想想看,各家芯片厂商拿着自己的硬件上去跑一轮,分数一出来,高下立判。

今天我们就来拆解一下MLPerf Inference的核心内容。说白了,就是三个测试场景、一堆标准模型和数据集。搞懂了这些,你再去读那些白皮书,就不会一头雾水了。

一、三大测试场景:Offline、Server、SingleStream

MLPerf Inference定义了三种典型的推理场景。为什么是三种?因为实际部署中,芯片面临的工作负载是不一样的。我在项目中遇到过不少团队,只盯着一个场景优化,结果换了个场景就露馅了。

1. Offline场景

这个场景最简单粗暴。你把所有数据一次性丢给芯片,看它多久能处理完。衡量指标是吞吐量,单位是「样本/秒」。

嗯,这里要注意:Offline场景不关心单条数据的延迟。你想想看,数据中心做批量推理时,谁在乎某一张图片多花了0.1毫秒?只要整体吞吐够高就行。

核心指标:吞吐量(Queries Per Second, QPS)

我刚开始做芯片验证时,总觉得Offline场景太简单。直到有一次,我们在某款边缘芯片上跑Offline测试,发现吞吐量死活上不去。查了半天,原来是DMA带宽成了瓶颈。你看,看似简单的场景,背后藏着不少坑。

2. Server场景

Server场景模拟的是在线服务。数据是逐个到达的,芯片必须尽快响应。衡量指标是延迟,通常看P99延迟——也就是99%的请求都能在多少毫秒内完成。

这个场景对芯片的调度能力要求很高。我曾经见过一款芯片,Offline吞吐量漂亮得很,一到Server场景就露怯——因为它的硬件调度器设计得太死板,无法处理细粒度的请求。

避坑指南:我曾经在优化Server场景时,只盯着平均延迟看。结果上线后,用户投诉不断。后来才发现,P99延迟比平均延迟高了整整一个数量级。从那以后,我养成了习惯:Server场景必须看P99,甚至P999。

3. SingleStream场景

SingleStream,顾名思义,就是单条数据流。芯片一次只处理一个请求,处理完一个再处理下一个。这个场景衡量的是单次推理延迟

你可能会问:这跟Server场景有什么区别?区别在于,Server场景允许芯片同时处理多个请求(只要硬件支持),而SingleStream严格串行。说白了,SingleStream测试的是芯片的「裸延迟」——没有任何并行处理的掩护。

场景 数据到达方式 核心指标 典型应用
Offline 批量到达 吞吐量 数据中心批量推理
Server 逐个到达 P99延迟 在线推荐系统
SingleStream 串行到达 单次延迟 移动端实时推理

二、模型与数据集:MLPerf的「考题」

MLPerf Inference的模型和数据集是精心挑选的。它们覆盖了计算机视觉、自然语言处理、推荐系统、语音识别等主流AI应用。我个人觉得,这套「考题」设计得相当合理——既考验了芯片的计算能力,也考验了内存带宽和调度能力。

1. 计算机视觉模型

  • ResNet-50 v1.5:经典中的经典。图像分类任务,数据集是ImageNet(2012年版)。这个模型对卷积运算的优化要求很高。我建议所有芯片团队先把ResNet-50跑顺了,再去碰其他模型。
  • SSD-MobileNet v1:目标检测模型。数据集是COCO。这个模型的特点是轻量级,适合边缘设备。但轻量不代表简单——它的后处理逻辑(NMS)对芯片的CPU核是个考验。
  • SSD-ResNet-34:也是目标检测,但比SSD-MobileNet大得多。数据集同样是COCO。这个模型考验的是芯片在大模型上的推理能力。
个人经验:我在优化SSD-ResNet-34时,发现大部分时间都花在了特征图的后处理上。后来我们专门为NMS设计了一个硬件加速单元,推理延迟直接降了40%。所以说,别只盯着卷积层优化,后处理往往是隐藏的瓶颈。

2. 自然语言处理模型

  • BERT-Large:NLP领域的「重量级选手」。数据集是SQuAD v1.1(问答任务)和IMDB(情感分析)。BERT对芯片的矩阵乘法单元和内存带宽都是巨大考验。我记得第一次在自家芯片上跑BERT时,内存带宽直接被打满了。
  • GPT-J:6B参数的大语言模型。数据集是CNN Daily Mail(摘要生成)。这个模型是MLPerf后来加入的,专门用来考验芯片在大模型推理上的能力。说实话,目前能在边缘设备上跑GPT-J的芯片屈指可数。

3. 推荐系统模型

  • DLRM:深度学习推荐模型。数据集是Criteo Terabyte(点击率预测)。DLRM的特点是既有密集特征(Dense Features),也有稀疏特征(Sparse Features)。稀疏特征的查找和嵌入操作,对芯片的内存访问模式是个挑战。
注意:DLRM的稀疏特征查找,很容易成为性能瓶颈。我曾经见过一个团队,把DLRM的矩阵乘法优化得飞起,结果稀疏查找部分慢了10倍。嗯,这就是典型的「木桶效应」。

4. 语音识别模型

  • RNN-T:循环神经网络转写器。数据集是LibriSpeech。RNN-T的特点是既有编码器(Encoder),也有解码器(Decoder),还有联合网络(Joint Network)。这个模型对芯片的序列处理能力要求很高。

三、知识体系总览

下面这张图,是我自己整理的MLPerf Inference知识体系。你可以把它当作一张「地图」——每次做性能调优时,对照着看看自己卡在了哪个环节。

MLPerf Inference 知识体系 三大测试场景 标准模型 数据集 Offline(吞吐量) Server(P99延迟) SingleStream(单次延迟) ResNet-50 / SSD / BERT GPT-J / DLRM / RNN-T 覆盖CV / NLP / Rec / ASR ImageNet / COCO SQuAD / Criteo LibriSpeech / CNN Daily 核心指标:吞吐量 vs 延迟 不同场景关注不同指标,模型和数据集决定了测试的覆盖度 性能调优需要综合考虑计算、内存、调度三个维度

四、性能调优的切入点

搞清楚了场景、模型和数据集,接下来就是性能调优了。我个人习惯从三个维度入手:

  1. 计算维度:矩阵乘法单元(MAC阵列)的利用率。说白了,就是看芯片的算力有没有被充分榨干。
  2. 内存维度:数据搬运的效率。很多芯片算力很强,但内存带宽跟不上,结果就是计算单元在「等数据」。
  3. 调度维度:任务分配和流水线设计。尤其是Server场景,调度器的设计直接决定了P99延迟。
一个小技巧:我在做性能调优时,会先用Offline场景把计算和内存的瓶颈找出来。等Offline跑顺了,再切换到Server场景去优化调度。这样一步步来,不容易乱。

好了,关于MLPerf Inference的测试场景、模型和数据集,我们就聊到这里。记住一句话:基准测试不是为了跑分,而是为了发现问题。分数再高,如果解决不了实际问题,那也是白搭。


专注资料整理