正文
但
这就好像是编无数个谎言来圆一个谎言
,无论是CPU还是GPU,他们最早都是为了数值计算而设计,而在人工智能时代,老革命遇到新问题,大家都是在各种修修补补。
冯诺依曼体系结构的问题其实早就被人提出来,也早就有人提出了新的架构,只是没有达到可以商业化的目的,做出来也没有人用,因为以前的应用场景并没有那么多。
而如今的人工智能计算已经和数值计算的差异越来越大,如果人工智能在未来会成为一项基础能力,那么是时候思考一个全新的体系结构。
需要一个新的故事
讲到这里,既然现在计算的瓶颈在带宽和I/O,那么一个可能的答案就是:
“让数据待在那里不动,能不动,就不动。”
这个在软件层面上其实已经已经有不少尝试了,而围绕这个,半导体就有很多技术出来了,主要可以分为三大方向。
第一、增加带宽
比如被英特尔收购人工智能创业公司Nervana Systems,Nervana的芯片在设计上把存储和计算单装在一起(HBM),物理上离得很近,时钟频率就可以跑得很高。
Nervana Systems里面用到了HBM技术,通过提升存储的速度和带宽的增加来提升计算效率。英伟达最新的Pascal也用了这个技术。
第二、充分利用带宽
在内存成为瓶颈的时候,现在大量带宽没有充分利用,比如通常现在的DDR(内存)存储接口,一次读的是一块数据,而有很多数据读取是浪费的,里面被充分利用的数据可能只是一小部分。
所以思考如何充分利用带宽是一个优化的方向。
第三、提高单个字节的计算量(computation per byte)
计算数据来自于外部存储,如果把一个字节读完,一次计算就送回来,一读一写总I/O就是2倍的数据量也就是2字节。
如果把一个字节读完,然后把所有相关的计算尽量多做,比如八次计算全部完成只需要一次读写操作,那么单个字节的计算量就翻了八倍。