文章目录
更新 2021-09-27
最新结果可以查看 :
1. MLPerf Inference Rules
1.1 Inference Division
MLPerf Inference分为封闭分区(Closed Division)和开放分区(Open Division)。
-
封闭分区需要使用等同于参考实现的预处理,后处理和模型。封闭分区允许校准量化,但不允许任何再训练。
-
开放分区只限制使用相同的数据集,它允许使用任意的预处理或后处理和模型,包括重新训练。
MLPerf Inference为每个Benchmark都提供了参考实现。这些参考实现本身并没有进行优化,也不是为了测量软件框架或硬件平台的“真实”性能。它们的目标是让硬件和软件供应商基于参考实现进行优化,并将优化后的结果作为MLPerf Inference的优化解决方案提交给MLPerf。
1.2 Test Scenarios
MLPerf Inference有2个基本概念: sample
和query
。
- sample(样本)是运行inference的单位,例如一个image或sentence。
- query(查询)是一组进行Inference的N个sample。例如单个query包含8个image。
为了能够对各种推理平台和用例进行代表性测试,MLPerf定义了四种不同的场景,如下所述。
single stream
:模拟例如用户使用智能手机拍照的真实场景。在测试中LoadGen发送初始查询,然后在处理上一个查询后不断发送下一个查询。每次查询只包含1个sample,可以理解为batchsize=1。single stream度量标准是第90百分位延迟。注意,最后衡量的结果是Tail Latency而不是average Latency。multiple stream
:评估例如检测障碍物的多摄像头汽车系统的真实场景。LoadGen运行多次测试来测量系统能够支持的最大stream数,度量标准是支持的流的数量。(每个query中的Sample的数量等于stream的数量)server
:评估在线请求数据中心服务,衡量服务器吞吐量这样的实际场景。LoadGen使用多个query来确定系统可以支持的每秒查询(QPS)中的最大吞吐量值,指标是QPS。(每个query只包含1个Sample)offline
:评估实际场景,例如批处理系统。LoadGen运行单次测试来测量系统吞吐量。在测试开始,LoadGen一次发送所有query给Inference系统。
Load Generator是MLPerf的负载生成器,用于生成query,跟踪query的Latency并验证结果的准确性。每次运行LoadGen都会使用四种模式之一来评估系统的性能,最后提交的结果可以是{models, scenarios}的任意组合。
1.3 General rules
1)系统和框架必须可用
如果要测量公开可用且广泛使用的系统或框架的性能,则必须使用公共可用且广泛使用的系统或框架版本。
如果要测量实验性的框架或系统的性能,则必须让你使用的系统和框架可获得并且可复制。
2)必须共享Benchmark implementations
用于基准实施的源代码必须是开放源代码,允许商业实体自由使用基准测试。只要结果被积极使用,代码就必须可用。
3)所有随机数必须基于固定随机种子和确定性随机数发生器,以保证每次生成的随机数都是固定的。固定种子将在基准提交截止日期前一周公布。
4)不能够以任何形式编码input dataset信息。
5)测试结果的可复制性是强制的,无法复制的结果不能作为有效结果。
1.4 Data Sets Rules
1)对于Inference Benchmak测试,MLPerf 提供了以下数据集:
- accuracy数据集,用于确定提交是否符合质量目标,并用作验证集
- speed/performance 数据集,是用于测量性能,它是acc