什么是张量处理单元?TPU构架配置及工作原理概述
我们知道,与机器学习中的中央处理单元相比,图形处理单元的速度非常快。因此,谷歌在2016年开发了一款新芯片来优化机器学习张量运算,即张量处理单元(,Tensor Processing Unit,简称TPU)。
所有Google数据中心均已部署TPU,为Google搜索、Google照片、Google翻译和地图等应用程序提供支持。Google的张量处理单元以两种形式访问:边缘TPU和云TPU。边缘TPU是一种专门制作的开发套件,用于特定应用程序,而云TPU可以从Google的Colab笔记本访问,该笔记本为位于Google数据中心的消费者提供TPU pod。
基本概念
张量处理单元是一种专用加速器或处理芯片,用于加速机器学习工作负载。该芯片由Google设计,用于使用TensorFlow软件处理神经网络过程。张量处理单元是ASIC,主要用于通过包括本地存储器在内的小型DSP等处理元件来加速特定的机器学习工作负载。
实际上,像TensorFlow这样的开源平台用于物体检测、图像分类、语音识别、语言建模等方面的机器学习。
架构配置
张量处理单元是用于实现硬件电路的专用集成电路。这是基于CISC(复杂指令集计算机)的指令集,该指令集执行高级指令来运行旨在训练深度神经网络的困难任务。张量处理单元架构的核心存在于脉动阵列中,以优化矩阵的运算。张量处理单元架构如下所示:
张量处理单元是可编程的,类似于GPU/CPU。它主要是为单个神经网络模型而设计的,以便在多个网络(如 LSTM模型、卷积、大型和完全连接模型)上执行 CISC 指令。因此,它仍然是可编程的,尽管使用像基元这样的矩阵来代替标量或向量。
张量处理单元架构包括三个计算资源MXU、UB和AU。
- MXU是一个矩阵乘法器单元,包括65536个8位乘法和加法单元,用于矩阵运算。
- UB是一个统一缓冲区,包含24MB SRAM,用作寄存器
- AU是一个激活单元,它是Hardwired激活函数。
在张量处理单元中,创建了五个主要的高级指令集来处理资源的功能。因此,下面介绍了五种主要的高级指令集。
- Read_Host_Memory用于从内存中读取数据
- Read_Weights用于从内存中读取“读取权重”
- MatrixMultiply/Convolve指令用于与数据和权重进行卷积/相乘以收集结果
- Activate用于应用激活函数。
- Write_Host_Memory用于将结果写入内存。
张量处理单元的指令通过PCIe Gen3x16(快速外围组件互连)总线从主机传输到指令缓冲区。该架构中的内部块通常通过256字节宽的路径连接在一起。另外,在架构的右上角,矩阵乘法单元 (MMU) 是张量处理单元的核心,具有256×256 MAC,可以对有符号或无符号整数执行8位乘法和加法。
在矩阵单元下,16位乘积聚集在4兆字节的32位累加器中。4个MiB表示4,096 个、256个元素和32位累加器。这里,矩阵单元为每个周期生成单个256元素部分和。
对于矩阵单元,权重安装在整个片上权重FIFO(权重获取器)中,以便它从片外8GB DRAM(称为权重存储器)读取。因此,对于推理来说,权重是只读的,8GB只是同时支持多个活动模型。权重FIFO的深度为四格。因此,中间结果保存在片上24 MiB统一缓冲区内,该缓冲区可以为矩阵单元提供输入。
可编程DMA控制器只需将数据从CPU的主机内存和统一缓冲区传输到主机内存或向其传输数据。为了能够在Google规模上可靠地进行配置,内部和外部存储器包含内置的纠错和检测硬件。
张量处理单元芯片的平面图如下所示。这里,24MiB UB(统一缓冲区)几乎占芯片的三分之一,MMU(矩阵乘法单元)占四分之一,因此,数据路径几乎占芯片的三分之二。选择24 MiB的大小部分是为了相当于芯片上矩阵单元的间距,并且考虑到较短的开发时间表部分是为了缩短编译器。
工作原理
张量处理单元是专为机器学习而构建的ASIC,并为TensorFlow定制,能够以最大速度处理NN(神经网络)的巨大乘法和加法,同时减少过多占地面积和功耗的利用率。张量处理单元主要执行三个步骤,分别如下:
- 在TPU的第一步中,内存中的参数被加载到加法器和乘法器的矩阵中。
- 在第二步中,数据只是从内存中加载。
- 在第三步中的每个乘法过程之后,结果简单地传递给下一个乘法器,同时执行求和。之后,输出作为所有乘法的总和提供,从而产生数据和参数。
典型的云张量处理单元包括两个128x128大小的脉动阵列,单个处理器内有32,768个ALU,用于处理16位浮点值。数百个加法器和乘法器简单地直接相互连接,形成一个巨大的运算符物理矩阵,从而形成脉动阵列架构。
张量处理单元只是允许芯片更自由地降低计算精度,这意味着每次操作需要更少的晶体管。因此,由于此功能,单个芯片每秒可以处理相当多的操作。由于张量处理单元是定制的,用于处理不同的操作,例如加速训练和矩阵乘法,因此这些处理单元不适合处理其他类型的工作负载。
TPU与GPU
下面简单介绍TPU与GPU之间的区别。
TPU | GPU |
术语TPU代表“张量处理单元”。 | GPU一词代表“图形处理单元”。 |
TPU是一种专用集成电路或ASIC。 | GPU是一种专门的电子电路。 |
与GPU相比,TPU能够更快地工作,同时使用更少的资源。 | GPU能够将困难的问题分解为单独的任务并立即解决它们。 |
单个云TPU芯片包含两个基于Google的内核,该内核使用MXU通过密集矩阵计算来加速程序。 | GPU包含数百到数千个核心。在GPU中,计算可以在这些核心内执行。所以,GPU的性能也主要取决于它所拥有的核心。 |
TPU每秒仅使用2W的功率即可执行4万亿次运算。 | GPU功率高达350W。 |
TPU与CPU
TPU与CPU之间的区别包括以下几点内容:
TPU | CPU |
TPU代表张量处理单元。 | CPU是通用处理器。 |
TPU的速度是CPU的三倍。 | 与TPU相比,CPU速度较慢。 |
这些是非常高效的处理器,用于在 Tensorflow 框架内执行项目。 | CPU用于处理所有计算机输入/输出和逻辑计算。 |
强大的TPU可让你加快机器学习、人工智能和深度学习的算法和计算速度。 | 强大的CPU将确保程序和任务的顺利执行。 |
主要优点
张量处理单元的优点包括以下几点内容:
- 可以提高计算速度和效率。
- 增强了机器学习应用中最常用的线性代数计算性能。
- 减少了训练庞大而困难的机器学习模型时达到准确率的时间。
- 允许你在众多机器上扩展计算,而无需编写任何代码。
- 当前版本的TPU可以在数小时内训练模型。
- 每个操作的功耗极低,因此张量处理单元对于其用例来说非常高效。
- 与GPU相比,它具有极高的内存,支持更大的输入。
主要缺点
张量处理单元的缺点包括以下几点内容:
- 与CPU和GPU相比,TPU非常昂贵。
- 目前,TPU仅支持张量流。
- 不支持特定的张量流操作,例如用C++编写的客户操作。
- TPU不像GPU那样支持各种类型的操作。
- 谷歌的张量处理单元无可替代。
- TPU的计算并不完全像GPU/CPU。
- 这些与Linux非常匹配,其中边缘TPU与特定的Debian衍生操作系统兼容。
应用领域
张量处理单元的应用非常广泛,常见的一些应用包括:
- 谷歌的类似ASIC的张量处理单元用于机器学习。
- 这些特别用于深度学习来解决复杂的矩阵和向量运算。
- TPU可以高效地以超高速解决矩阵和向量运算,但它们必须与CPU连接才能提供和执行指令。
- 这些用于不同的深度学习应用,如计算机视觉、电子商务、欺诈检测、自动驾驶汽车、自然语言处理、农业、语音人工智能、股票交易、虚拟助理和各种社交预测。