7月18日,第五届RISC-V中国峰会上,AI分论坛聚焦于RISC-V架构在人工智能领域的创新与发展。随着生成式AI的崛起,全球科技格局正在被重塑,而RISC-V凭借其“开放、灵活、可定制”的特性,已成为构建自主AI算力基石的战略支点。SiFive联合创始人兼首席架构师Krste Asanovic在AI分论坛深入探讨了RISC-V架构如何利用其开源、开放、可扩展的特性,实现AI计算架构的革新,以及RISC-V架构在AI软硬件的最新进展和应用落地情况。
在分论坛上,Krste Asanovic发表了题为“RISC-V AI指令扩展:从向量到矩阵的架构选择与挑战”的主旨演讲。他指出,人工智能的飞速发展正以年均超过100%的算力需求增长驱动底层架构的革新。
AI用例和模型的共同点在于:需要对小型、专门的数据类型进行大量计算,同时需要大量的内存来保存模型参数,并且需要大量的内存带宽来获取参数并在层之间通信。
Asanovic强调,RISC-V支持通用计算模型,能够平衡标量、向量和矩阵功能。这种通用性使得RISC-V内核不仅可以运行非AI部分的应用程序,还可以运行AI部分,从而简化软件、降低延迟并提高利用率。此外,RISC-V能够通过多核扩展实现任意高性能,新模型也可以在为早期模型设计的RISC-V硬件上运行得相当好。不同微架构可以在当前或未来的RISC-V代际中实现标量、向量和矩阵功能的不同平衡,而无需改变编程模型。
Asanovic详细介绍了RISC-V向量扩展(RVV)对AI的重要性。向量是矩阵加速的关键,因为许多AI算法中的关键步骤无法作为矩阵乘法执行。向量性能限制了AI的吞吐量,尤其是当矩阵乘法被加速时。RVV旨在通过LMUL支持多种数据类型和混合精度操作,例如扩展乘加和缩小转换。RVV设计为编译器目标,目前已得到主要编译器框架后端的支持。在AI领域,RVV 1.0支持INT{8,16,32,64}和IEEE FP{16,32,64}。经过批准的Zvfbfmin支持向量BF16转换,而Zvbfwma则增加了向量扩展BF16乘加到FP32的功能。目前,正在讨论通过在vtype CSR中使用新的altfmt位来以一种干净的方式编码新数据类型,而无需扩展指令长度或占用太多操作码。未来,预计围绕新向量数据类型的活动将显著增加,包括对MXFP8/6/4的讨论。
Asanovic进一步探讨了RISC-V矩阵扩展的多种方法。矩阵乘法(matmul)指令可以在AI应用的关键计算部分提供显著的加速。然而,不同的RISC-V实现和应用领域可能需要不同的矩阵乘法微架构,这可能导致不同的指令集架构(ISA)选择,甚至可能根本不使用矩阵乘法。目前,RISC-V社区正在探索四种主要的矩阵扩展方法:
- 向量批量点积(Zvbdot):这是一种快速跟踪扩展,不引入新的状态,而是使用现有的向量寄存器。它可以计算多个点积,每个点积的输入长度为VLEN位。这种方法适用于较小的向量长度,也可以满足一些数字信号处理(DSP)的需求,但在较大的向量长度上无法扩展性能。
- 矩阵在向量(Matrix-in-Vector):这种方法不引入新的矩阵状态,而是将向量寄存器视为存储一个或多个矩阵块。它支持外积风格的矩阵乘法,并且随着向量寄存器长度的增加,算术强度也会增加。然而,这种方法的设计空间较大,可能需要更长时间才能达成共识。
- 向量矩阵(Vector-Matrix):这种方法为已经具有RVV的处理器添加了新的矩阵状态,以保持矩阵C。它支持外积风格的矩阵乘法,并且可以提供非常高的吞吐量,因为矩阵C的累加器状态位于算术单元附近。这种方法维护了向量ISA和内存模型,设计空间较小,预计会更快达成共识。
- 分离矩阵(Separate Matrix):这种方法引入了新的大型矩阵状态,用于存储A、B和C。它不需要RVV向量,但如果存在RVV,则可以利用它们。这种方法的设计空间最大,软件工作量也最大,预计需要最长时间才能达成共识。