谷歌TPU(Tensor Processing Unit)
https://cloud.google.com/tpu/docs/intro-to-tpu?hl=zh-cn
CPU的工作模式和GPU工作模式的区别
CPU 最大的优点是它们的灵活性。您可以在 CPU 上为许多不同类型的应用加载任何类型的软件。对于每次计算,CPU 从内存加载值,对值执行计算,然后将结果存储回内存中。与计算速度相比,内存访问速度较慢,并可能会限制 CPU 的总吞吐量。这通常称为冯·诺依曼瓶颈。
现代 GPU 通常包含 2500 - 5000 个 ALU。大量处理器意味着可以同时执行数千次乘法和加法运算。不过,GPU 仍然是一种通用处理器,必须支持许多不同应用和软件。因此,GPU 与 CPU 存在相同的问题。对于数千个 ALU 中的每一次计算,GPU 都必须访问寄存器或共享内存,以读取运算对象以及存储中间计算结果。
TPU是用于神经网络工作负载的矩阵处理的专用集成电路(ASIC),TPU 的主要任务是矩阵处理,这是乘法和累加运算的组合。TPU 包含数千个乘法累加器,这些累加器彼此直接连接以形成大型物理矩阵。这称为脉动阵列架构(和9个存内核心的架构一样)。在单个处理器上,Cloud TPU v3 包含两个 128 x 128 ALU 的收缩阵列。
工作流如下:
TPU 主机将数据流式传输到馈入队列中。TPU 从馈入队列加载数据,并将其存储在 HBM 内存中。计算完成后,TPU 会将结果加载到馈出队列中。然后,TPU 主机从馈出队列读取结果并将其存储在主机的内存中。
为了执行矩阵操作,TPU 将参数从 HBM 内存加载到矩阵乘法单元 (MXU) 中。
然后,TPU 从内存加载数据。每次执行乘法运算时,所得结果都会传递给下一个乘法累加器。输出是数据和参数之间所有乘法结果的总和。在矩阵乘法过程中,不需要访问内存。因此,TPU 可以在神经网络计算中实现高计算吞吐量。
XLA 编译器
在 TPU 上运行的代码必须由加速线性代数 (XLA) 编译器编译。XLA 是一种即时编译器,可利用机器学习框架应用发出的图,并将图的线性代数、损失和梯度分量编译成 TPU 机器代码。程序的其余部分在 TPU 宿主机上运行。XLA 编译器是 TPU 运行时的一部分,运行时在 TPU 宿主机上运行。
TPU适合下面内容:
• 由矩阵计算主导的模型
• 在主训练循环内没有自定义 TensorFlow/PyTorch/JAX 操作的模型
• 需要训练数周或数月的模型
• 有效批量大小较大的大型模型
Cloud TPU 不适合以下工作负载:
• 需要频繁分支或包含许多元素级代数运算的线性代数程序
• 以稀疏方式访问内存的工作负载
• 需要高精度算法的工作负载
• 主训练循环中包含自定义操作的神经网络工作负载
综上,由非矩阵运算(如 add、reshape 或 concatenate)主导计算的程序可能无法实现较高的 MXU(矩阵乘法单元) 利用率。
Edge TPU
Google 设计了 Edge TPU 协处理器来加速低功耗设备上的机器学习推断。一个 Edge TPU 每秒可执行 4 万亿次操作(4 TOPS),能耗仅 2 瓦特,换句话说,每瓦特可获得 2 TOPS。例如,Edge TPU 能够以低能耗的方式以接近每秒 400 帧的速率执行先进的移动视觉模型,例如 MobileNet V2。
https://zh.wikipedia.org/wiki/%E5%BC%A0%E9%87%8F%E5%A4%84%E7%90%86%E5%8D%95%E5%85%83
系统机构术语
https://cloud.google.com/tpu/docs/system-architecture-tpu-vm?hl=zh-cn
TPU 芯片
TPU 芯片包含一个或多个 TensorCore。TensorCore 的数量取决于 TPU 芯片的版本。每个 TensorCore 由一个或多个矩阵乘法单元 (MXU)、一个矢量单元和一个标量单元组成。
MXU 由脉动阵列中的 128 x 128 乘法累加器组成。 MXU 在 TensorCore 中提供大部分计算能力。每个 MXU 能够在每个周期执行 16K 乘法累加操作。所有乘法均接受 bfloat16 输入,但所有累加均以 FP32 数字格式执行。
该矢量单位用于一般计算,例如激活和 softmax。标量单位用于控制流、计算内存地址和其他维护操作。
TPU 立方体
4x4x4 拓扑。这仅适用于 3D 拓扑(从 v4 TPU 版本开始)。
TensorCores
TPU 芯片具有一个或两个 TensorCore,用于运行矩阵乘法。
TPU Pod
TPU Pod 是通过专用网络分组的一组连续的 TPU。TPU Pod 中的 TPU 芯片的数量取决于 TPU 版本。
切片
Pod 切片是位于同一 TPU Pod 内的一系列芯片,这些芯片由高速芯片间互连 (ICI) 连接。切片根据芯片或 TensorCore 进行描述,具体取决于 TPU 版本。条状标签形状和条状标签拓扑也是指切片形状。
多切片与单切片
多切片是一组切片,将 TPU 连接扩展到芯片间互连 (ICI) 连接之外,并利用数据中心网络 (DCN) 在切片之外传输数据。每个切片中的数据仍然由 ICI 传输。利用这种混合连接,Multislice 可实现多个切片的并行性,并且允许您为单个作业使用的 TPU 核心数量超出单个切片能够容纳的 TPU 核心数量。
TPU 可用于在单个切片或多个切片上运行作业。
2023.4.4,由 Norman Jouppi、大卫・帕特森等人发表的论文《 TPU v4: An Optically Reconfigurable Supercomputer for Machine Learning with Hardware Support for Embeddings 》详细介绍了自研的光通信器件是如何将 4000 多块芯片并联成为超级计算机,以提升整体效率的。
TPU v4 的性能比 TPU v3 高 2.1 倍,性能功耗比提高 2.7 倍。基于 TPU v4 的超级计算机拥有 4096 块芯片,整体速度提高了约 10 倍。对于类似大小的系统,谷歌能做到比 Graphcore IPU Bow 快 4.3-4.5 倍,比 Nvidia A100 快 1.2-1.7 倍,功耗低 1.3-1.9 倍。
https://finance.sina.cn/2023-04-05/detail-imypimne9357334.d.html
https://cloud.google.com/tpu/docs/v4?hl=zh-cn
2024.4.10,谷歌云TPU v5p上市,这是我们迄今为止最强大、可扩展的 TPU。 TPU v5p 是下一代加速器,专门用于训练一些最大、要求最高的生成式 AI 模型。单个 TPU v5p Pod 包含 8960 个协同运行的芯片,是 TPU v4 Pod 中芯片数量的 2 倍多。除了规模更大之外,TPU v5p 还可以在每个芯片上提供超过 2 倍的 FLOPS 和 3 倍的高带宽内存。当客户使用更大的切片时,它还可以实现吞吐量的近线性改进,在切片大小增加 12 倍(从 512 个芯片到 6144 个芯片)的情况下实现 11.97 倍的吞吐量。
https://cloud.google.com/blog/products/compute/whats-new-with-google-clouds-ai-hypercomputer-architecture
https://cloud.google.com/tpu/docs/v5p?hl=zh-cn
v5p 版本的系统架构。每个 TensorCore 均有四个矩阵乘法单位 (MXU)、一个矢量单位和一个标量单位。单个 v5p Pod 中有 8960 个芯片。可以安排的最大作业是 96 个立方体(6144 个芯片)作业。v5p 的最大形状为 16x16x24(6144 个芯片、96 个立方体)。
https://cloud.google.com/tpu/pricing?hl=zh-cn#estimate-cost
v4 TPU 中有两个 TensorCore,所以租一个v4芯片有两个TensorCore可以调用。