天道好轮回,苍天饶过谁。近日英伟达称,他们被要求停止向中国出口两种用于数据中心的GPU A100和H100,AMD也表示,已经收到新的要求,MI250出口到中国将会受限。A100,MI250等高端型号的GPU最主要特点就是可以提供双精度FP64类型的算力,而国产GPU一般在FP16也就是半精度数据处理方面不差,在FP32类型的处理能力上表现就一般了,FP64几乎是缺失的状态。
这里的16,32是指输入变量的位数,比如FP16是指一个由16个二进制位所表示的变量,也就是说FP32与FP64的差距是2的32次方(42亿)倍,这一方面将对我国人工智能领域的发展带来一定影响,另一方面也会制约我国勘探、气象、生物医药等对于数据精度要求较高领域的发展速度,甚至很可能是之前EDA禁令的后手组合,不过无论这个政策的本意如何,现在这颗时代的沙却让英伟达非常受伤。
被误伤的英伟达
8月25日英伟达公布了的二季度的财报和三季度的指引。从财报来看,二季度公司收入67亿美元,同比增长3%,环比下降19%,大大低于英伟达5月份预测的81亿美元。当季GAAP下每股摊薄收益为0.26美元,比去年同期下降72%,比上一季度下降59%;调整后每股收益为0.51美元,较上年同期下降51%,较上一季度下降63%,公司游戏部门收入已经大幅下滑,并且悲观预计公司营收第三季度还将同比下降17%,导致其股价在盘后交易中下跌约5%。而在限制令出台后,人们也越来越多担心,此前支撑英伟达业绩高速增长的数据中心业务未来将持续降温,因此英伟达在上周又跌了近5%。
不过英伟达的业绩坠落,主要还是因为显卡的供需关系出现逆转,由于以比特币为代表的数字货币价格一蹶不振,导致GPU显卡的最大买方-“矿厂”大规模去产能,转手成为卖方,这其中最明显的信号就是自发布以来一直溢价销售的RTX30系列GPU显卡,在8月份瞬间打折也卖不出去了。
这次A100的限制令又将对英伟达的数据中心业务产生影响,因此英伟达的股价可能还难言底部。不过英伟达虽然很受伤,但是这对于限制令的初衷来说明显属于误伤,真正的目标还是人工智能和需要高精度数据模拟的工业软件。
人工智能的影响-精益求精的训练,不求甚解的推理
最近经常能够看到计算机专业的结业生在社交平台吐槽大厂的面试、笔试题难度卷出天际,但实际入职后所从事的工作,却偏向于重复劳动式的搬砖,在我拿到今年某大厂算法岗的笔试题之后,的确印证了这种情况,但这种现象也说明了人们在学校里学习时对于精细度要求很高,但真正走向工作当中虽然会急剧上升,但实际对于知识掌控精细度与全面度的要求却下降了。
类比在人工智能方面,可以做以下解读,一般来说人工智能分为训练和推理两个阶段,其中训练可以类比于人类的学习行为,一般在学习的过程中都要打破沙锅问到底,力求精益求精;而推理则类比于所学知识的落地,一般都要留有模糊空间,乃至不求甚解的效果可能也不差。虽然这个类比不完全吻合,但是基本的道理是没有差很多的,也就是模型训练时对精度的要求往往比AI推理时对精度的要求高得多。
从目前AI的发展趋势来看,也的确有着“大力出奇迹”的迹象,比如谷歌科学家直接在T5的论文指出:“越大的模型往往表现更好。这表现扩大规模可能仍然是实现更好性能的方式。”这一方面表现为的人工智能模型的参数规模越来越大,现在没有个上千亿参数的模型简直都不好意思和人打招呼,比如那个会自动艺术创作的DALL.E参数规模突破1500亿;
另一方面也是业界对于模型参数的精度要求越来越高,业界也越来越依赖高精度算力的处理能力提升。但是凭心而论很多模型都是精度要求过剩的,只要费心优化模型,这个限制令对于AI方面的影响尚不至于无解。
核心打击方向-工业软件
如果说人工智能方面降低精度还不会伤肋动骨,但是对于很多对于精度要求很高的领域来说这个限制令的打击可能就难以承受了。其实早在芯片禁令之前,最早被西方列入限制清单的就是以MATLAB为首的工业软件,而我们工业软件差距最大的部分就在于仿真与模拟。这方面一是要长时间的经验积累,另一方面对于算力精度的要求也比较高,精度下降往往意味着失之毫厘差以千里,对于医疗、气象、勘探等领域的工业软件来说尤其如此。
而且笔者认为这次高端GPU的禁令很可能是之前EDA禁令的手续组合拳,EDA从本质上讲就是工业软件,美国限制EDA的使用本质上限制了我国自研先进制程的芯片的制造进程。而且我们看到目前国际EDA三巨头都纷纷推出自己的AI FOR EDA产品,从公开资料上看新思科技推出的DSO.ai,就在探索搜索空间、观察设计随时间的演变情况,同时调整设计选择、技术参数和工作流程,虽然这些AI FOR EDA的产品代码都不开源,但是笔者认为这些AI技术实际对于精度的要求肯定不低。
精度优化-曲线救国的方向
正如前文所说,我国国产的GPU往往在双精度类型FP64方面,目前都没有什么突破性进展,这在之前A100没有限制之前还无所谓,但目前限制来了,针对半精度FP64乃至8位整数类型(int8)的专门优化工作已经势在必行。
据笔者所知这方面业界已经有所探讨,以深度神经网络为例,神经元可以抽象为对于输入数据乘以权重以表示信号强度乘积加总,再由ReLU、Sigmoid等应用激活函数调节,本质是将输入数据与权重矩阵相乘,并输入激活函数,对于有三个输入数据和两个全连接神经元的单层神经网络而言,需要把输入和权重进行六次相乘,经典CNN中无论GEMM的矩阵乘法运算还是卷积的乘加计算都是使用fp32也就是用32位字长的数字来表示的,在这种情况下如果我们可以使用int 8来作为输入表示此以过程,其计算量至少可以下降75%。尤其在图像处理的场景下,通常由fp32到int8的转换,精度损失是低于1%的。因此在针对int8类型的计算加速也就是业界都在探讨的话题。
这方面英特尔酷睿12代中的VNNI指令集很好的完成了这个加速的过程,比如火山引擎在VNNI的优化下int8上实现了从人脸照片到三维模型的图像映射。腾讯通过一个FP32向int8的转换以及VNNI的加持,实现了一个可以实时生成用户3D头像的模型,在精度降低1%的情况下,性能还提升了4.23倍。另外英特尔和阿里云在Ice Lake上也针对自然语言处理的Transformer模型进行了深度优化,通过VNNI的加速实现了3倍的性能提升。
而且针对FP32向int8的转换工作,英特尔提供一款名为LPOT的开源工具,使用LPOT用户基本上不需要写代码,就可以直接将TensorFlow的模型,从FP32换成int8,同时保证非常高的精确性,这里推荐给大家。
写在最后
无论是高精度GPU还是EDA是一种需要长时间积累才能取得突破的领域,而我们在IT基础设施领域的研发力量太薄弱了,以EDA为例,国内所有EDA厂商的研发人员加在一起可能都不到2000人,还不如Synopsys一家的开发力量强,想突破一要增加研发人员,二要沉下心来积累,结硬寨打硬仗,不要试图走捷径。