第三十课 更多的芯片
虽然 GPU 现在是目前模型训练的主流芯片然后大家很多时候在做预测的时候也在 C PU 上做预测,但实际上来说这个在慢慢的发生改变。今天看一下目前的一些这样子的芯片。
上图是个手机芯片,可以看到有很多计算单元,比如CPU、DSP等等。
首先讲一下 DSP,DSP 叫做 digital signal processing 就叫数字信号处理芯片,最早就是说给数字信号处理作用的,它主要是给点积、卷积、快速傅里叶变化设计的。它的一个特点是说它功耗非常低,它的性能也挺高的。大家用 DSP 用的不是那么多,是因为首先它的编程和调试非常困难。
FPGA叫做可编程阵列,它是一块硬件,但是它里面有大量的可以用来编程的逻辑单元。但是 FPGA的逻辑单元是可以编程的。而且里面那些连接是可以改变的。一般来说它的编程语言是Verilog用的多, vhdl用的比较多。
缺点是工具链不是很行;FPGA编译是看板子有多大,太大的话编译很痛苦。
它是一个特定芯片,就是我就针对于某一个应用做的特定的芯片。性能不错,还很便宜。它的核心是下图的东西。
systolic array有一堆 process element 的阵列,叫 PE 阵列,可以认为每一个 PE 里面可以做一个矩阵乘法、加法这样的简单运算,而且它设计成了一个2d的形状,所以它就是用来设计用来做矩阵乘法的。
下面演示一下做矩阵乘法的过程:
假设要做一个 Y 等于 W 乘以 X W 是一个3乘3的矩阵,那 X 是一个3乘2。那么结果就是一个三乘二对吧?之所以放个3乘3是因为因为systolic array是个3乘3的,所以W 最好是跟array 的形状是一样。
输入有三个通道,这个地方每次以每个通道能进一个,一次进一个元素,
再往右移一列。然后上一个时间的结果往下移一列。下面时间以此类推。
注意结果的表示。
基本上可以看到是说GPU当CPU当然是灵活信用性最好了。所有东西基本上你所有的代码都在CPU能跑,但它性能其实计算性能是最差的。GPU它的灵活性还不错,就说你用 CUDA, 用 opencl都还不错 ,在同样的价位的情况下DSP的性能可能更好一点。然后FPGA和ASC性能功耗都可以,就是不灵活。