计算机系统包括计算机原理与体系结构、操作系统、程序设计语言与编译器、分布式系统等,是计算机领域的重要研究方向,在AI大模型出现的背景下,计算机系统的教学需要发生哪些变化?
首先,AI软件栈是非常复杂的,比传统软件栈的层次可能还要多一些,包括:①AI处理芯片及其指令集(ISA);②通用异构编程模型(如CUDA);③基础算子库(包括AI算法里面常用的矩阵乘法、卷积、激活函数等);④通信库;⑤编译器与变异优化;⑥编程框架;⑦分布式框架等。
可以看到,AI大模型其实涉及非常丰富的软件层次,还涉及很多新的优化方法。比如,传统的编译优化基本上是等价变换,就是把一组计算等价地变换成另一组计算,在这个过程中删除冗余的计算。然而,在AI计算的优化里有很多不等价变化,如AI模型的量化,把原来的16位权重变成8位甚至4位,把原来的浮点数存成整数。这个时候怎么做才能够既减少大小,又保证精度尽量不下降?这涉及算法模型与编译优化的互动。另一类不等价变换是模型的稀疏化。正常的神经网络计算,主要是稠密矩阵的计算。实际上,它里面的参数有一些可能比较小,把它变成0效果也很好,于是就出现了一些体系结构,如英伟达,它支持所谓结构化稀疏,即每4个元素里有2个是0两个非0,都可以用它里面的稀疏张量单元支持这种操作。另外一种优化也是在算法层面的,如果Transformer中每一个query都有对应的数据结构支持,它会非常大,有人做的简化就是所有的query都共享一个K和V,它需要的空间就小很多,但问题是精度就不好,因此又出现了grouped-query进行折衷。
因此,AI大模型对整个计算机系统的发展及其教学产生了比较大的影响。计算机系统主要有两个驱动力:一个是底层硬件的变化,一个是上层应用的变化。现在大模型很明显已经占了非常主要的计算基础设施的投资以及计算的时间和成本。对于这样的AI大模型的训练和推理,对应的系统要有什么样的变化,教育如何适应这些变化是摆在计算机系统教育者面前的紧迫问题。计算机系统本来就是由应用驱动的。过去的一些典型的应用,像大数据、移动计算,还有更早期的数据库OLTP等也驱动了计算机系统的发展。AI大模型体现出了更强的综合性,它的算法不完全是传统的计算机算法,其实更像是统计模型,统计算法在里面起到比较大的作用。当然,有软件也要有硬件综合起来。因此,做系统的人(包括系统软件和硬件)需要对算法和统计模型有更好的理解,要达到优化的目的,需要了解算法和模型层面能够做什么,硬件和软件分别可以做什么。这样的综合能力也对传统的系统能力培养课程提出了更高的要求。
传统的系统能力培养课程要针对这一变化进行调整。以笔者在清华开设的“编译优化”课程为例,主要还是采用编译经典教材“龙书”的内容,包括数据流分析、过程间分析、循环分析、自动并行化等基于等价变换和冗余删除的传统编译优化内容,对于量化、稀疏化这些“近似等价变化”维度的AI模型优化还没有覆盖。对于体系结构课程来说也是有类似的问题:硬件到底提供什么样的功能?例如英伟达根据模型参数的稀疏性,在张量运算单元TensorCore上实现了结构化稀疏技术,但如何将模型最优地变换为结构化稀疏参数是一个需要软硬件协同考虑的过程。统计模型对误差有较好的容忍能力,低位宽的数据运算格式有助于提升运算性能和访存压力,FP8这种八位的浮点数和新的FP4四位的浮点数,对于模型的训练和推理来说是否能够有效使用起来?传统的体系结构更多的是理解应用的计算模式和访存模式,对精度和统计类的一些问题,是缺乏了解的,这些都需要在系统能力培养的课程中补足。
从教学的角度来讲,要求教育者更加深入地了解统计和AI模型,在传统的数据结构和确定性算法的基础上,增加统计的、非确定性的、有误差的算法与系统组件,全面修订现有的系统能力相关课程内容。
作者简介:陈文光,男,清华大学计算机系王建筑讲席教授,研究方向为分布与并行处理以及编程系统,cwg@tsinghua.edu.cn。