深度学习笔记28 其他硬件 TPU DSP ASIC FPGA 单机多卡并行


Digital Signal Procession(DSP):数字信号处理芯片

  为数字信号处理算法设计:点积、卷积、FFT

  低功耗,高性能,比移动GPU快5倍,功耗还更低。

  利用VLIW(vary long instruction word)非常长的指令,一条指令计算上百次累加或者乘法。

  劣势:

    编程和调试困难,同时编译器质量良莠不齐。

FPGA:可编程阵列

  是一块有大量的可编程逻辑单元和可配置的连接的硬件

  编程语言:VHDL,Verilog

  通常比通有硬件高效,比CPU高效,理论上也可以做到比GPU高效

  工具链质量良莠不齐。

  一次编译需要数小时(因为这个编译是将整个逻辑单元烧一次板子,是物理上的改变,而不是软件上的改变(也是烧钱))

AI ASIC(一种给特定应用用的“GPU”,没有通用性,因此设计门槛就很低了)

  这也是深度学习的一个热门领域。

  大公司都在造自己的芯片,最著名的就是Google的TPU芯片,能够媲美NVIDIA GPU的性能,已经在Google上大量部署,核心是systolic array

  一般设计出的AI ASIC不会直接烧出来,而是现在FPGA上跑,没啥问题了再流片。

     卷积其实可以换算成矩阵乘法,一般卷积都可以通过调整输入输出来将这个运算变成一个矩阵乘法。

     

 (越往右性能越高功耗越低)

 单机多卡并行

  一台机器上可以安装多个GPU,在训练和预测时,我们将一个小批量计算切分到多个GPU。

  常用的切分方案:

    数据并行

      将小批量分成N块,每个GPU拿到完成参数计算一块数据的梯度。

      通常这样性能更好。

      当一个模型能用单卡计算时,通常使用数据并行拓展到多卡上。

    模型并行

      将模型分成N块,每个GPU拿到一块模型计算它的前向和后向结果。

      通常用于模型大到单GPU放不下的情况下,这个很难说会不会提高性能。

    通道并行(数据、模型并行)

Q&A

1、FPGA一大客户是华为,用于路由器里面的芯片。FPGA相对于ASIC的好处是可以改,比如3G变4G,加一些协议栈之类的,我可以在原来的芯片上改或者加一些东西进去,不需要重新做一块新的芯片。

2、用TPU的话,一般都要跑TensorFlow或者jax。

3、移动端才关心功耗,部署在云上的东西不关心功耗。关心功耗主要是因为续航和散热,电不是问题。

4、硬件一定是要生态圈的,硬件往往决定了软件和算法的研究方向。(这里的perception非常有意思,可以二刷)