本文章涉及到一些名词及计算,需要时间大概在10—30分钟。 大神绕道
在不同平台运行相同模型,往往会出现不同的表现力(这里指的是所花的时间)。在实际的开发过程中,经常需要选择符合当前模型的硬件条件,过高或过低的配置都会对产品有一定的弊端。今天就来简单的谈谈深度学习中,平台与模型自身的性能,如何根据自己的模型来选择合适的硬件。
我们由一个问题开始:计算量为A且访存量为B的模型在算力为C且带宽为D的计算平台所能达到的理论性能上限E是多少?(出自Roof-line Model )
也许会有很少一部分人,会被这问题搞懵逼,我们慢慢来分析。
问题中一共有两个东西:模型、计算平台。其次模型中又有计算量、访存量,计算平台中有算力、带宽,一共四个参数。
模型的计算量:单个样本完成一次前向推导所发生的浮点数计算次数,单位是FlOPS。也被称为模型的时间复杂度
模型的访存量:单个样本完成一次前向推导所发生的内存数据交换总量,单位是Byte。也被称为模型的空间复杂度
计算平台的算力α:一个平台使出全力时,每秒可以完成的浮点数计算次数,单位是FlOPS/s
计算平台的带宽β:一个平台使出全力时,每秒可以完成的内存数据交换量,单位是Byte/s
不难看出模型和平台的参数两者是一一对应的。
我们再引出两个参数:
模型的计算强度I:表示模型推导时,每发生Byte个数据交换时,发生的浮点计算次数,由模型的计算量/模型的访存量得到。单
位是FlOPS/Byte。其值越大,表示模型越好,效率越高
平台的计算强度Imax:表示平台在单位数据交换时,发生的浮点数计算次数。单位是FlOPS/Byte
不难发现两者的单位相同,那么我们就可以开始比较了。
模型理论性能P:指的是模型在平台上运行时 每秒能发生的浮点数计算次数,单位是FLOPS/S
计算瓶颈区域Compute-Bound:无论模型的计算强度I有多大,模型的理论性能P其最高能达到的是平台的算力α。当模型计算强度I大于平台计算强度Imax,此时,我们可 以说是模型到达了 Compute-Bound,已经利用了平台的全部算力。
带宽瓶颈区域Memory-Bound:当模型计算强度I小于平台计算强度Imax时,模型的理论性能由计算平台的带宽β*模型的计算强度I得出
可以画出图表:
使用数学表达式为:
举一个简单的案例:(下次再举吧,有人催我就举,没人催我不想举了,^-^)