去年,谷歌曾在I/O开发者大会上透露了一款名为TPU的芯片,全称Tensor Processing Unit 张量处理器,是不是有点眼熟?(谷歌推出的机器学习框架叫tensorflow)。
这款谷歌自己研发的处理器,也是专门用于提高机器学习的运算效率。但是自打去年I/O开发者大会以来,谷歌并没有公开任务细节,直到上周。
上周,谷歌发表了一篇论文《In-Datacenter Performance Analysis of a Tensor Processing UnitTM》,详细披露了TPU的细节,这篇论文有75位联合作者,也是醉了。
了解这个TPU,我们先熟悉一点硬件知识。这个很重要,硬件决定了运算效率,意味着宝贵的时间。打个比方,跑一个模型,别人家的孩子只要2秒,而你要3分钟,写论文,别人家的孩子跑模型要一周,那你就要两年了,还能赶上毕业吗?
了解处理器,我们先从CPU入手。
1. CPU
CPU主要由运算逻辑器(ALU, Arithmetic and Logic Unit)和控制器(CU, Control Unit)组成:
- ALU:运算逻辑器主要执行运算操作(如算术运算、逻辑运算、移位运算、复杂运算等)。
- CU: 控制器负责对指令进行译码,并且发出信号,用来控制每条指令所要执行的各个操作。
- 此外,CPU还包括若干寄存器、高速缓冲存储器(Cache),以及实现它们之间联系的数据(data)、控制及状态的总线(Bus)。
什么是寄存器和高速缓冲存储器?如果把CPU比作人的大脑,内存就相当于人的记忆,Cache就相当于提取出来的临时记忆,寄存器就相当于大脑正在思考的事情。因此寄存器是内存阶层中最顶端,最快速取用资料的途径。其次是Cache,再次是CPU外部的内存。
CPU的内部结构很复杂,这里不做冗述,特点是通用性强,能处理不同的数据类型,执行起来有条不紊,它像一辆战车,缓缓的推进,完成一个个艰巨的任务。
但随着数据规模的扩大、同时对处理速度的要求越来越高,CPU有时只能让人干捉急,人们逐渐把目光投向了GPU。
2. GPU
GPU的全称是Graphics Processing Unit,图形处理器,之所以叫图形处理器,因为它最初被用来进行运行绘图运算。
处理图像时,图像上的每一个像素点都需要被处理,这种处理任务的特点是,量很大,但是单个任务又很小,这时用CPU这样的战车就不合适了,而GPU——我把它比作步兵,一拥而上同时作战。
一张图来对比一下CPU和GPU:
GPU的计算单元很多,但控制逻辑很简单,且省去了Cache,它适合去执行计算量大的任务。
3. TPU
TPU是一种ASIC,ASIC不再专门介绍,毕竟硬件知识一篇文章讲不完。大概意思就是,专门为某一项功能开发的专用集成芯片。这里的TPU,就是谷歌专门为机器学习开发的芯片。相关细节我还没有看论文,目前总结下来有这么几个点值得mark一下:
- TPU专用于推论inference,这个推论指的是使用训练好的模型进行推算;
- TPU处理速度比当前GPU和CPU快15~30倍(对比的分别是英伟达的Tesla K80和英特尔的至强E5-2699 v3);
- 除了处理速度,TPU的功耗效率也提升了30~80倍;
- 驱动这些应用的神经网络,其代码只需要100~1500行,代码以Tensorflow为基础。
- 目前谷歌图像搜索(Google Image Search)、谷歌照片(Google Photo)、谷歌云视觉 API(Google Cloud Vision API)、以及AlphaGo中都能看到TPU的影子。
- END -