L3-1 ML Hardware

本次我们要掌握

1.Calculate important performance metrics(指标) for ML hardware
2.Optimize the compute and memory efficiency of ML hardware
3.Analyze emerging ML hardware architectures

1.Hardware metrics and roofline

1.1杂谈

端到端:就是直接从识别对象到识别结果
Pasted image 20240828152233.png

硬件之分,通用的硬件,灵活性高,但是特定运算乏力
专用的硬件,灵活性低,
Pasted image 20240828153140.png

1.2 干货 性能指标

Pasted image 20240828153843.png
FLOPs/s这个指标是一个非常粗略的性能指标,为什么?因为它实际上标榜的是峰值,甚至有可能是理论指标。换个模型就完蛋了。性能腰斩。
Pasted image 20240828154601.png
内存的指标
Pasted image 20240828154647.png
DNN的性能有下面两个,注意运算次数乘法和加法算两次,同时关于存储,我们需要包括参数和中间的激活值。
Pasted image 20240828154832.png
Roofline Plot (屋顶模型),定量描述,给定硬件,在不同的工作负载下,能达到怎么样的性能指标。

横坐标是运算强度,是神经网络本身决定,就是对1byte的数据来说,需要多少次运算。纵坐标是性能,是硬件决定,每秒多次运算。各自的单位在坐标轴上
Pasted image 20240828155211.png
这个很简单啊,BW-Limited区域是单位Byte需要的运算很少,比如一个饭店,有一百个厨师。结果你一次就搬运10份原材料,那么剩下90位师傅只能看着,那就没有发挥出硬件计算能力,这是由于带宽受限导致的。所以性能表现不好

红色的区域,还是上面的例子,即使你一次搬运500份原材料,但是你只有100个厨师,那么此时是没有意义的。你处理不了这么多。你的处理能力达不到。此时就是计算受限了。

为什么斜率代表内存带宽?我们想一想红线和蓝线的交点代表什么。在这个计算强度下,性能达到了峰值。纵轴代表每秒钟完成多少次运算,横轴代表对于单位Byte,需要完成多少次运算。根据斜率的定义,其计算得到的应该就是每秒钟提供了多少Byte。即内存带宽。
Pasted image 20240828155658.png
横坐标强度好定义
Pasted image 20240828160256.png
用更大的存储芯片是不行的,因为它不能让数据快点达到片上。
Pasted image 20240828160537.png
这个对应小问题的4,精度下降相当于
Pasted image 20240828161903.png
所以横坐标右移动
Pasted image 20240828160704.png
这个时候换成了DDR4,斜率变大,直接达到了计算限制
Pasted image 20240828162158.png
解决办法就是超频
Pasted image 20240828162323.png
Here is a big big but,这些模型根本摸不到边啊!!事实上,随着模型的变化,适配性的问题。很多运算逻辑是不干活的。因此就会Below the roofline。
Pasted image 20240828162736.png
这个图神了,你看同样的模型,在不同硬件跑的性能不一样,没到roofline.
Pasted image 20240828163415.png
不同的硬件,支持的精度不一样。比如正常而言,这个网络是基于INT16的,但是我这个硬件就只支持INT8,那也没办法,只能跑。精度可能有影响,但也能跑。此时运算强度自然也会变化。(但此时我们也认为是DNN改变了,而不是硬件本身改变了计算强度,是硬件改变了DNN,DNN改变了计算强度)
Pasted image 20240828163542.png

做一个总结

Pasted image 20240828163708.png
这是DNN性能的一个图。
Pasted image 20240828163741.png

nuo yi man