谷歌TPU(Tensor Processing Unit)

devtools/2024/11/13 9:04:00/

谷歌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 是通过专用网络分组的一组连续的 TPUTPU 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上市,这是我们迄今为止最强大、可扩展的 TPUTPU 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可以调用。


http://www.ppmy.cn/devtools/23843.html

相关文章

ansible安装教程

一、启动系统前,加一块光驱,把安装镜像文件放到光驱中 二、配置Yum文件 [rootlocalhost ~]# cd /etc/yum.repos.d/ [rootlocalhost yum.repos.d]# rm -f * [rootlocalhost yum.repos.d]# vi cdrom.repo [BaseOS] nameBaseOS baseurlfile:///media/BaseO…

在idea中连接mysql

IDE(集成开发环境)是一种软件应用程序,它为开发者提供编程语言的开发环境,通常集成了编码、编译、调试和运行程序的多种功能。一个好的IDE可以大幅提高开发效率,尤其是在进行大型项目开发时。IDE通常包括以下几个核心组…

如何实现直播声卡反向给手机充电功能呢?

在数字化时代的浪潮中,声卡作为多媒体系统的核心组件,扮演着声波与数字信号相互转换的关键角色。它不仅能够将来自各类音源的原始声音信号转换为数字信号,进而输出到各类声响设备,更能够通过音乐设备数字接口(MIDI)发出合成乐器的…

aspose.word 在已有模板表格中动态插入新行

通过已有模板进行进行动态行,aspose版本为21.6 问题,使用insertAfter插入新行后,没有与原表格合并,而是形成了新的表格,这明显不符合要求,最后使用克隆行的方法进行插入,与原表格完美融合 主要…

Python正则表达式

Python中的正则表达式是通过内置的re模块来支持的。正则表达式是一种用于字符串搜索和操作的强大工具,它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。 以下是Python中使用正则表达式的基本方法: ### 1. 导入模块 在使用正则表达式之前…

pytest 的 request fixture:实现个性化测试需求

在之前深入理解pytest-repeat插件的工作原理一文中,我们看到pytest_repeat源码中有这样一段 pytest.fixture def __pytest_repeat_step_number(request): marker request.node.get_closest_marker("repeat") count marker and marker.args[0] …

「Kafka」Kafka基础知识入门介绍(三)

「Kafka」Kafka基础知识入门介绍(三) 一、消息主题1. 创建主题 二、生产数据1. 命令行模式2. Java代码模式 三、消费数据1. 命令行模式2. Java代码模式 「Kafka」Kafka理论知识解读(一) 「Kafka」Kafka安装和启动(二&a…

数据分析-numpy

数据分析 numpy Numpy 是一个开源的 Python 科学计算库,用于快速处理任意维度的数组。Numpy 支持常见的数组和矩阵操作,对于同样的数值计算任务,使用 NumPy 不仅代码要简洁的多,而且 NumPy 在性能上也远远优于原生 Python&#…