QWen 3.5plus总结的总结基准测试结果的正确方法

原文地址:https://dl.acm.org/doi/epdf/10.1145/5666.5673

如何用统计撒谎:总结基准测试结果的正确方法

作者:PHILIP J. FLEMING 和 JOHN J. WALLACE

在文献中,性能结果经常使用性能比率的算术平均值来总结,在某些情况下导致错误的结论(参见文献[2]中的表2和表3),或者至少是不恰当的统计(参见文献[3]中的表12和13)。我们希望通过指出为什么不应该使用算术平均值来总结归一化的性能数字,并说明为什么几何平均值是更合适的度量,来阐明在报告结果时这种对统计的无意误用。我们以一些简单规则的形式来做这件事,以改进性能基准测试结果的统计分析。

总结性能基准测试结果的三条规则

在根据某些指标(如目标代码大小、运行时间或吞吐量)比较计算机时,通常的做法是运行基准测试,将结果归一化到一台"已知机器",然后对这些归一化的量求平均。希望用一个数字来表示相对系统性能当然是可以理解的,因为我们想要对一台机器相对于其他机器的价值得出简单的结论。然而,为了使这些结论有意义和有用,应该遵守以下三条规则。

规则1:不要使用算术平均值来平均归一化的数字

N个数字的算术平均值是这些数字的和除以N。当从归一化的数字计算算术平均值时,结果是毫无意义的。在表I中(源自文献[2]中报告的一个例子),所有运行时间都归一化到机器R。然后对这些归一化的数字求平均,得出的结论是机器M比R慢1%,机器Z慢7%。

然而,如果我们归一化到机器M而不是R(如表II所示),我们必须得出结论:R现在比M慢32%。这怎么可能?这是不可能的。问题在于算术平均值,它对归一化的数字给出毫无意义的结果。

用一个简单的例子来说明算术平均值的问题,考虑三台机器,其基准测试运行时间如表III所示。对于基准测试1,机器Y的速度是机器X的两倍,但对于基准测试2,速度是X的一半。同样,对于基准测试1,机器Z的速度是机器X的一半,但对于基准测试2,速度是X的两倍。直观上,这三台机器具有等效的性能:每台机器在一个基准测试上比其他机器慢,但在另一个基准测试上以相同的比率更快。然而,如果我们归一化到机器X并计算算术平均值,我们发现机器Y和Z比X慢25%。

更糟糕的是,如果我们归一化到机器Y并计算算术平均值(表IV),我们发现机器Y现在比X快25%,比Z快两倍以上,尽管X和Z的总基准测试运行时间少于Y。显然,在这种情况下算术平均值是毫无价值的:当不加区别地使用时,它会导致非常错误的结论。

作为已经讨论内容的推论,现在引入规则1.1是相关的:归一化数字的和也是毫无意义的。这是相当明显的,因为和仅仅是算术平均值的N倍。

规则2:使用几何平均值来平均归一化的数字

N个数字的几何平均值是这些数字的乘积的1/N次方。与算术平均值不同,几何平均值在应用于归一化的数字时是有意义的。在表V中,重复了我们简单的XYZ例子中的数字,但这次使用几何平均值。现在结论更有用:显示这些机器大致相等。

即使我们归一化到机器Y而不是X,结果也是一样的(表VI)。

如果像表VII那样,我们对表I中呈现的结果使用几何平均值而不是算术平均值,那么我们得出结论:机器M比机器R快14%,机器Z快16%------与原论文中提出的结论非常不同。在表VIII中得出了相同的结果,其中运行时间归一化到机器M而不是机器R,因为1.17是0.86的倒数。此外,通过直接从几何平均值比较机器M和机器Z而不重新归一化,我们看到对于这些基准测试,机器M比机器Z慢2%(0.86/0.84 = 1.02)。

能够不考虑归一化而比较平均值是一个重要的性质,并且是几何平均值所独有的,如"证明几何平均值是归一化测量唯一正确的平均值"一节所示。

为了总结这个讨论,我们提出规则2的两个推论:

规则2.1: 无论数字如何归一化,都可以使用几何平均值。

规则2.2: 即使数字没有归一化,也可以使用几何平均值;然后可以对得到的平均值进行归一化。

规则3:每当这个"总和"有意义时,使用原始的、未归一化结果的和(或算术平均值)

有时,基准测试结果的和是有意义的:例如,一组基准测试的总运行时间。然而,重要的是使用原始的、未归一化的数据来计算这个和,因为我们已经表明,对归一化的数字求和(或取算术平均值)会给出毫无价值的结果。然后可以取这些未归一化和的比率来确定相对性能。

当对原始结果求和或取算术平均值时,隐含的意思是每个单独的基准测试具有同等的重要性。然而,典型情况下,你想要加权每个基准测试结果以模拟真实负载。

例如,在表IX中,重复了我们简单的XYZ例子,基准测试1消耗我们负载混合的60%,基准测试2消耗40%。这意味着机器X现在比Z"快"14%,比Y"快"36%。这个结论成立,无论我们如何归一化算术平均值,因为我们从原始的(未归一化的)数据开始。

证明几何平均值是归一化测量唯一正确的平均值

早些时候,我们展示了使用算术平均值来平均归一化的测量如何导致不一致,而使用几何平均值则不会。在本节中,我们提供一个证明,说明几何平均值是唯一具有乘法性质的平均值,因此是当前上下文中唯一合适的平均值度量。虽然这个结果不代表原创数学(即,通过对数变换等价于文献[1]中的定理4),但为了方便读者,这里进行了展示。

乘法性质可以简单地表述为:乘积的平均值等于平均值的乘积。更准确地说,假设我们有N个感兴趣的基准测试β₁,...,βN,以及三台机器X、Y和Z,我们想要比较它们的性能。在这些机器上运行基准测试后,我们发现βi在机器X上运行了xi秒,在机器Y上运行了yi秒,在机器Z上运行了zi秒。然后我们形成比率ai = yi/xi和bi = zi/yi。习惯上说机器X运行βi的速度是机器Y的ai倍,同样,机器Y运行βi的速度是机器Z的bi倍。我们也可以得出结论:机器X运行βi的速度是机器Z的aibi倍,机器Y运行βi的速度是机器X的ai⁻¹倍。通过选择一个数字,比如A,来总结机器X和机器Y之间的整体性能比较,我们现在可以转到这样的陈述:总体而言,机器X在β₁,...,βN上的速度是机器Y的A倍。如果我们现在选择一个数字B,并断言总体而言机器Y的速度是机器Z的B倍,那么常识将规定机器X的速度应该是机器Z的AB倍。这就是乘法性质:A和B的乘积应该等于a₁b₁,...,aNbN的平均值。(数值示例,参见第220页的表V、VI和VII)。

为了用数学公式表述这个问题,令A = f(a₁,...,aN)。换句话说,A是a₁,...,aN的某个未知函数f。我们假设ai > 0。由于A是无权重的期望值或平均值,函数f必须满足以下三个性质:

性质1(自反性质): f(a,...,a) = a

性质2(对称性质): f(a₁,...,an) = f(aσ(1),...,aσ(n)) 对于数字1,...,n的所有排列σ。这第二个性质保持f的参数顺序不影响A。

性质3(乘法性质): f(a₁b₁,...,anbn) = f(a₁,...,an)f(b₁,...,bn)

我们声称性质1到3唯一地刻画了几何平均值。要看到这一点,首先注意几何平均值确实满足性质1到3。我们现在证明,如果f满足性质1到3,那么f(a₁,...,an)是几何平均值。

观察到,对于任何r > 0,

r = f(r,...,r)

= f(r,1,...,1)f(1,r,...,1)...f(1,...,1,r)

= f(r,1,...,1)^n

第一个等式来自性质1,第二个是通过重复应用性质3得到的,最后一个是性质2。因此,对于任何r > 0,f(r,1,...,1) = r^(1/n)。最后,我们注意到性质2和3,连同上面的计算,意味着:

f(a₁,...,an) = f(a₁,1,...,1)f(1,a₂,1,...,1)...f(1,...,1,an)

= Π(i=1到n) f(ai,1,...,1)

= Π(i=1到n) ai^(1/n)

现在可以看出,满足性质1到3的A的唯一选择是几何平均值。

作为最后的说明,注意加权几何平均值(它也满足乘法性质)可以如下计算:令w₁,...,wN是权重,使得w₁+...+wN = 1。然后加权平均值是:

Π(i=1到N) ai^wi

无权重的平均值是情况wi = 1/N,i = 1,...,N。

结论

在本文中,我们已经证明了为什么几何平均值适合总结归一化的基准测试结果,以及为什么在这种情况下使用算术平均值会导致严重错误的结论。

然而,应该明确指出,当存在大方差时,任何数据平均值的度量都是误导性的。因此,我们认为任何有意义的数据总结都应该包括对数据的最小值和最大值以及平均值的某种提及。这提供了关于相对于所选基准测试集的相对性能的保证的上下界。

参考文献

  1. Aczel, J. Functional Equations. Academic Press, New York, 1966, p. 239. 关于函数方程的综合教科书。

  2. Heath, J.L. Re-evaluation of RISC I. Comput. Archit. News 12, 1 (Mar. 1984), 3-10. RISC与CISC的性能比较。

  3. Patterson, D.A., and Sequin, C.H. A VLSI RISC. Computer 15, 9 (Sept. 1982), 6-21. 正式向计算机架构引入RISC方法的里程碑式论文。

CR类别和主题描述符: C.4 [系统性能]:测量技术,性能属性

通用术语: 测量,性能

其他关键词和短语: 基准测试,几何平均值

收稿日期: 1985年5月;接受日期: 1985年8月

作者当前地址: Philip J. Fleming, AT&T信息系统,1100 East Warrenville Road, Naperville, IL 60566;John J. Wallace, The Foxboro公司,Foxboro, MA 02035;电子邮件:foxvax!jjw

版权说明: 允许免费复制本材料的全部或部分,条件是复制品不是为了直接商业利益而制作或分发,ACM版权声明和出版物标题及其日期出现,并且声明复制是经计算机协会许可的。否则复制或重新发布需要费用和/或特别许可。

表 I. 归一化数据上算术平均值的错误使用

处理器 基准测试 R M Z
E 417(1.00) 244(0.59) 134(0.32)
F 83(1.00) 70(0.84) 70(0.85)
H 66(1.00) 153(2.32) 135(2.05)
I 39,449(1.00) 33,527(0.85) 66,000(1.67)
K 772(1.00) 368(0.48) 369(0.45)
算术平均值 (1.00) (1.01) (1.07)

括号中的数字已归一化到机器R。


表 II. 相同的原始数据,但结果不同

处理器 基准测试 R M Z
E 417(1.71) 244(1.00) 134(0.55)
F 83(1.19) 70(1.00) 70(1.00)
H 66(0.43) 153(1.00) 135(0.88)
I 39,449(1.18) 33,527(1.00) 66,000(1.97)
K 772(2.10) 368(1.00) 369(1.00)
算术平均值 (1.32) (1.00) (1.08)

括号中的数字已归一化到机器M。


表 III. 归一化数据上算术平均值的另一个错误使用

处理器 基准测试 X Y Z
1 20(1.00) 10(0.50) 40(2.00)
2 40(1.00) 80(2.00) 20(0.50)
算术平均值 (1.00) (1.25) (1.25)

括号中的数字已归一化到机器X。


表 IV. 算术平均值正在快速下沉

处理器 基准测试 X Y Z
1 20(2.00) 10(1.00) 40(4.00)
2 40(0.50) 80(1.00) 20(0.25)
算术平均值 (1.25) (1.00) (2.13)

括号中的数字已归一化到机器Y。


表 V. 几何平均值的正确使用

处理器 基准测试 X Y Z
1 20(1.00) 10(0.50) 40(2.00)
2 40(1.00) 80(2.00) 20(0.50)
几何平均值 (1.00) (1.00) (1.00)

括号中的数字已归一化到机器X。


表 VI. 几何平均值与归一化无关

处理器 基准测试 X Y Z
1 20(2.00) 10(1.00) 40(4.00)
2 40(0.50) 80(1.00) 20(0.25)
几何平均值 (1.00) (1.00) (1.00)

括号中的数字已归一化到机器Y。


表 VII. 几何平均值的另一个正确使用

基准测试 处理器 R M Z
E 417(1.00) 244(0.59) 134(0.32)
F 83(1.00) 70(0.84) 70(0.85)
H 66(1.00) 153(2.32) 135(2.05)
I 39,449(1.00) 33,527(0.85) 66,000(1.67)
K 772(1.00) 368(0.48) 369(0.45)
几何平均值 (1.00) (0.86) (0.84)

括号中的数字已归一化到机器R。


表 VIII. 不同的归一化

处理器 基准测试 R M Z
E 417(1.71) 244(1.00) 134(0.55)
F 83(1.19) 70(1.00) 70(1.00)
H 66(0.43) 153(1.00) 135(0.88)
I 39,449(1.18) 33,527(1.00) 66,000(1.97)
K 772(2.10) 368(1.00) 369(1.00)
几何平均值 (1.17) (1.00) (0.99)

括号中的数字已归一化到机器M。


表 IX. 原始数据的总和可能有意义

基准测试 权重 处理器 X 处理器 Y 处理器 Z
1 0.6 20 10 40
2 0.4 40 80 20
加权算术平均值 28 38 32
归一化到X 1.00 1.36 1.14
相关推荐
额1292 小时前
CentOS 7 安装apache部署discuz导入数据库表
数据库·centos·apache
kyriewen112 小时前
为什么我的代码在测试环境跑得好好的,一到用户电脑就崩?原来凶手躲在地址栏旁边
开发语言·前端·javascript·chrome·ecmascript·html5
大阿明2 小时前
Spring.factories
java·数据库·spring
2401_873544922 小时前
使用Fabric自动化你的部署流程
jvm·数据库·python
小北方城市网2 小时前
JavaScript 实战 —— 实现一个简易的 TodoList(适合前端入门 / 进阶)
开发语言·前端·javascript
是上好佳佳佳呀2 小时前
【前端(二)】CSS 知识梳理:从编写位置到选择器优先级
前端·css
wenlonglanying2 小时前
MYSQL的第一次作业
数据库·mysql
万岳科技系统开发2 小时前
外卖系统选型与源码与 SaaS 实践的思考
数据库·小程序
欧洵.2 小时前
MySQL:事务详细
数据库·mysql·oracle