功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构( 四 )


在选取的过程中,会加一个非常强的penalty strength,使99.9%的weight全都变成0,这样可以使选取的信号最具有代表性。对penalty加的是一个叫做Minimax concave penalty(MCP),用于剪枝算法。
选取有代表性的信号,基于这些信号,重新训练一个线性的模型,这个线性的模型就是最终的模型。这是第一步,也是最重要的一步。

选用 MCP算法的原因
在剪枝的时候,选用的是 MCP算法,而不是很多人熟悉的Lasso或是其它的。是因为要让选取的Q远小于M,penalty实际上就要加的非常大,因此惩罚很大。
功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构
文章插图
图注:对不同的weight,Lasso和MCP的惩罚
如图所示,Lasso很简单,它是一视同仁的,weight越大,惩罚就越大。如果这样就相当于所有的weight都在被惩罚。这会导致,在惩罚性很大的情况下,即使那些不是0的weight,也会被压在一个非常小的值,模型就会变得不准确。由此基于一个不准确的模型,选出来的信号我们认为也是不准确的。
为了避免这种情况,所以我们使用了MCP。而使用MCP,当weight大到一定程度时,不会继续增大penalty。用MCP训练的模型,在整个训练过程中准确率都是比较高的,基于准确的模型做的剪枝,我们认为也是比较准确的。
另外我们观察到MCP选择的信号,彼此之间的相关性更小,这说明我们选的信号是有代表性的。
全自动机器生成的基本算法
除了APOLLO的算法之外,我们还有一套算法来提供训练数据来源。我们用纯机器自动生成很多workload,基于这些workload,来生成上述的input x 、label y等等,workload的生成有一套遗传算法。
开始有一些随机 workload,由于是随机生成的,因此它的功耗比较低。我们选取里面功耗高的做crossover或mutate,这就是遗传算法基本操纵。然后生成一些更高功耗的workload,一代又一代功耗会不断增加。
最后生成的workload,我们把它叫做power virus,它们的功耗非常高。这样我们就既得到了低功耗的workload,又有高功耗的,把两个掺在一起,训练数据就很全面了,就能够很准确的训练模型,这是我们全自动机器生成的一个基本算法。
实验结果
功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构
文章插图
首先我们的实验是基于Neoverse N1和Crotex A77这两个CPU来做的,因此我们既测了服务器端,又测了移动端的CPU,让保证它在所有的CPU上都有很好的表现。
测试的时候也需要workload,这些workload是工程师手动写出来的,非常具有代表性。我们选选择了12个,既有有低功耗也有高功耗,还有快速变化的和保持不变的,覆盖了各种类型。
功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构
文章插图
预测的结果:粉色的是真实的值,绿色的是预测的值
结果表明,预测的结果和真实的值具有很明显的相关性,匹配度很高。
我们测了它的error,MAE(mean absolute error)和RMSE(这两个值是越小越好)小于10%,(该值越大越好)高于0.95,说明准确率非常高。
同时我们计算了每个workload的MAE,发现所有类型的workload的MAE都少于10%,这说明了它的准确性。并且即使是7%的错误,也是由于清晰度太高,导致每个cycle之间有一个小错误这个是很难避免的。如果从一个更大的measurement window来算平均power,就会更准确。
事实上,APOLLO可以对任何一个measurement window进行计算,而不仅仅是 per-cycle。