近一直在卷公司的项目,好久没时间动笔。希望能顺利出好结果。
本文是参考论文[1]的阅读笔记,这篇paper是Jeff Dean在2020 International Solid-State Circuits Conference(ISSCC)上的keynote talk的配套论文。
简而言之,就是深度学习的迅猛发展带来的硬件需求。
比如,众所周知,采用了深度学习以后,ImageNet上的错误率从2010年的28%降到2017年的2.3%。
但这些深度学习的idea,实际上在1960s~1990s上就有很多人尝试,但因为算力的不足没有带来很好的产出。直到21世纪,算力经过这么多年的摩尔定律的加持之后,我们才有能力搞这么大的模型。
但是,摩尔定律开始失效,1985年到2003年,CPU性能每1.5年翻一倍,2003年到2010年,每两年翻一倍。而现在,预期要20年才能翻一倍。
摩尔定律和后摩尔定律时代的算力增长见下图
而模型算力的需求如下:
深度学习模型有三个特点,让它们和通用计算不同。
所以,一方面,它需要支持的计算少,另一方面,深度学习的应用却越来越广。所以,为深度学习设计特有的硬件是必须的。
对于Inference来说,8bit整数运算对很多重要的模型来说都足够了。在未来,甚至可以用更低的精度,以及其他的一些偏重稀疏的技术。
TPUv1的核心就是一个65536的8bit 乘-累加单元,它的峰值吞吐量是92 TeraOps/second(TOPS)。TPUv1平均比它那时的CPU和GPU快15-30倍。考虑到能耗的话,TOPS/Watt可以达到30-80倍。它设计出来后,可以支持Google 95%的模型需求。
而TPUv1的设计经验还可以被借鉴去做device上的硬件,从而带来更多的应用。
雨石说: Pixel 6上搭载了第一款TPU,在2021年发布。
现在,市面上有几家专做硬件的大公司,以及有超过两位数的接受过风险投资的芯片研发startup。比如
除此之外,alibaba也在专注于做inference专有芯片。
不同的硬件公司有不同的侧重。比如,一些公司避开了大内存的DRAM或HBM,只专注于fit SRAM的小模型所用的芯片; 另一些则在设计中包括了大内存来支持大尺寸的模型; 一些比如Cerebra在探索晶片级集成;其他的,比如Google Edge TPU,在专注于在edge devices上的低功耗芯片
为训练设计硬件比为单芯片推理更难,因为大数据大模型,训练会花费大量的时间,为了缩短这些时间,就需要我们在设计的时候考虑到并行化和分布式系统。所以,设计训练用芯片需要我们设计一个大规模整体的系统,既要考虑到单个芯片的设计,又要兼顾超级电脑上的高性能互联。
上图给大家展示了TPUv2的设计图,双核,每个核可以支持两个128x128的矩阵相乘,芯片有16GB的高带宽内存HBM,(TPUv3是32G)。下图则展示了1024个TPUv3的部署,分为8组,组成了32x32的环形网络结构,提供100Petaflop/s的峰值算力。
TPUv2和TPUv3使用自定义的浮点类型格式,bfloat16,跟IEEE定义的半精度16bit float不同,更适合机器学习模型。
bfloat16原先是在DistBelief中为了压缩模型来降低带宽需求而设计的,后来被用在Tensorflow中。
下图展示了不同数字格式的区别:
很多事实表明,深度学习中的计算,更关注数字的动态区间而非精度,而在芯片运算中,数字之间的计算主要是尾数(上图中Mantissa)的计算,所以,bfloat16比fp16要少很多计算。
现在的芯片设计需要18到24个月来完成,再加上半导体制造和安装等,一代芯片需要2到5年的时间。显然,这无法适应现在深度学习的发展需求。
而芯片的设计,比如,在placement和route环节,需要很多人类专家的参与,在高层设计完成以后,一般就不改了。因为改了就会花费很多的时间从头再来。
而Placement和route环节,可以看成是序列决策问题,即放置各种单元,以及它们之间的各种连接,在这些都完成之后,我们才可以知道这个芯片的性能。所以这块就是一个典型的强化学习问题。
所以,可以使用机器学习的方法来进行芯片设计,有两个好处
随着计算机视觉的发展,很多半导体制造流程中的视觉检查问题可以用更自动化的方法来完成。
另一个机会则是用机器学习来优化计算系统中的已有的启发式规则,包括编译器,操作系统,文件系统,网络堆栈等。
比如,编译器中就有很多手写的启发式规则:哪些逻辑inline,选择哪些指令序列,内存中如何展开数据结构等。
底层网络则需要决定何时增加或降低TCP的窗口,是否以及怎样压缩数据等。
联系客服