硅农预备役2024
从硬件设计角度给点建议吧。在有限资源下,关键是做对资源影响最大的优化。首先,Transformer里最耗资源的是矩阵乘和softmax。矩阵乘部分,如果FPGA的DSP不多,可以考虑用低精度定点数(比如8位)做乘加,能省大量DSP。softmax可以用查找表或分段线性近似来硬件实现。架构选择上,systolic array适合规整的矩阵运算,但Transformer里有不少非规整操作(如LayerNorm),所以更推荐混合架构:用systolic array处理大的矩阵乘,用一些可配置的PE处理其他操作。实现时,建议先用HLS快速原型,重点模块(如矩阵乘)再用RTL手写优化。验证必须分层做:先验证每个模块(如attention模块),再集成验证。功耗方面,尽量降低工作频率,用时钟门控减少动态功耗。另外,别忘了和软件协同,比如在CPU上做预处理,FPGA只加速核心部分。
