本文主要来自中国工程院院士郑纬民2023年9月在大模型创业大会上的公开演讲。 海外英伟达GPU算力卡一卡难求而且价格昂贵,但是国产卡生态依然存在问题 。国产算力要支持大模型训练要把生态做好:第一,就是做好编程框架,利用基本算子快速构建人工智能模型,以降低编写人工智能模型的复杂度。例如:PyTorch,TensorFlow。 第二,实现并行加速,为多机多卡环境提供人工智能模型并行训练的能力,确保能够支持数据并行、模型并行、流水线并行、张量并行等。 第三,做好通信库,提供跨机跨卡的通信能力,支持人工智能模型训练所需的各种通信模式,能根据底层网络特点充分利用网络通信带宽。 第四,做好算子库,算子库提供人工智能模型所需基本操作的高性能实现,要求尽可能覆盖典型人工智能模型所需的操作,要求算子库能充分发挥底层硬件的性能。 第五,做好Al编译器。人工智能程序的目标代码依靠AI编译器生成。对于算子库不能提供的操作,通过Al编译器可以自动生成高效目标代码。因此,做好Al编译器非常重要。 第六,做好编程语言,要求能够编写人工智能模型的基本算子,覆盖底层硬件功能以充分发挥硬件性能。同时,支持在异构处理器上编写并行程序。 第七,做好调度器,提供在大规模系统上高效调度人工智能任务的能力。通过设计高效调度算法,提高集群资源利用率。 第八,做好内存分配系统,针对人工智能应用特点提供高效的内存分配策略。第九,做好容错系统,提供在硬件发生故障后快速恢复模型训练的能力。第十 ,做好存储系统,支持训练过程中高效的数据读写(检查点、训练数据等)。 国产AI芯片生态非常重要,芯片性能反而是其次。第一是基于国外或者别的芯片编制的软件要比较容易移植到国产AI芯片的系统中,第二是新写的软件写起来比较顺比较好编,常见算子库都有提供。现在的情况就是生态不太好,做的不够好不够全。 根据中国工程院院士郑纬民在2023年大模型创业大会上的结论,国产Al芯片只要达到国外芯片60%的性能,把生态做好了客户也会满意。到70-80%效果更佳,客户不会因为芯片只有别人的60%而明显感觉不好。 大模型基础设施还要做好平衡设计。一般有四点考虑: 第一,叫系统平衡性原则:半精度运算性能与双精度运算性能的平衡。设计一台人工智能计算机中不仅要考虑半精度运算性能,还要考虑双精度运算能力,双精度与半精度运算性能之比为1:100比较合适。根据科学计算和大模型训练的发展趋势,变精度平衡设计的思想很重要,适应科学计算和更广泛的Al算法和应用提供保障。 第二,做好网络平衡设计。机器由成千上万块卡组成,卡与卡之间需要网络连 接,网络设计究竟怎么连?不能只是针对CNN算法,还要考虑大规模预训练模型对系统的要求,因为大规模预训练模型需要高带宽,低延迟的网络,因此不是简单的用网络连接起来就行。现在是多台机器训练,不可能是单节点训练,不可能是一台机器一块卡就行了,因为受限于计算性能和内存,模型很难在一台机器上做,一定是多台机器几千块卡几万块卡,这就是分布式训练,通过不同并行模式,扩展模型规模与吞吐量。 第三,体系结构感知的内存平衡设计,内存需要保证数据访问不阻塞。大模型数据量非常大,数据要放到内存里去,当多个CPU多个核心同时访问内存,比如有一台机器里面有390个核同时发送请求,那么这些在网上就会造成网络堵塞,降低吞吐量。另外还有一种情况,如果390个核都去访问某一个存储部件 ,那这个部件也会受不了,因此要做好负载均匀。 第四,I/O子系统平衡设计。硬盘的性能相对慢一点,但现在好在有ssd和U盘了。现在每台机器基本上有u盘,而ssd比u盘快,要做的就是把512台机器*6块SSD卡组成一个大池子。大模型一训练就是一礼拜甚至一个月,训练时间特别长,要求机器在这段时间里一礼拜都不能出错,无论硬件还是软件。 往往大规模机器基本上都会出错,比如两万块卡的系统基本每两三个小时就要出错一次,并非系统做的不好,本身就是这样的技术水平。因此这种大规模大软件一般都会采用检查点设置,假设每两个钟头出错一次,那么每执行一个半小时就停一次,把当前硬件、软件、操作系统的状况整个执行情况现场保留下来到硬盘里面。保留完又开始训练,假如出错了回到上一个检查点就行了。