谷歌TPU(Tensor Processing Unit)

ops/2024/9/23 6:10:09/

谷歌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/ops/19039.html

相关文章

react引入iconfont的svg图标

react引入iconfont的svg图标 本文目录 react引入iconfont的svg图标普通图标通过link引入css组件内引入css使用 svg图标通过script引入js组件内引入js使用 通过封装组件自定义封装组件中调用 通过antd封装使用 普通图标 通过link引入css <link rel"stylesheet" h…

JVM体系结构

1. JVM简介 1.1 什么是JVM JVM&#xff08;Java Virtual Machine&#xff09;是Java平台的核心组件之一。它是一个运行Java字节码&#xff08;Java bytecode&#xff09;程序的虚拟机&#xff0c;是Java程序跨平台运行的基石。 JVM的主要功能如下&#xff1a; 1、Java字节码执…

课时107:正则表达式_进阶知识_登录检测

1.1.3 登录检测 学习目标 这一节&#xff0c;我们从 需求简介、简单实践、小结 三个方面来学习 基础知识 简介 在很多的应用交互页面&#xff0c;经常会出现一些用户输入的信息&#xff1a;账号登录场景: 比如用户名、密码、手机号、邮箱之类的校验信息手机号匹配 准备手机…

第十五届蓝桥杯省赛第二场C/C++B组E题【遗迹】题解

解题思路 错解 贪心&#xff1a;每次都移动至当前最近的对应方块上。 反例&#xff1a; s s s abxac t t t abac 贪心结果&#xff08;下标&#xff09; 0 → 1 → 0 → 4 0 \rightarrow 1 \rightarrow 0 \rightarrow 4 0→1→0→4&#xff0c;答案为 5 5 5。 正确结…

【JavaScriptthreejs】对于二维平面内的路径进行扩张或缩放

目标 对指定路径 [{x,y,z},{x,y,z},{x,y,z},{x,y,z}.........]沿着边缘向内或向外扩张&#xff0c;达到放大或缩小一定范围的效果&#xff0c;这里我们获取每个点&#xff08;这里是Vector3(x,y,z)&#xff09;,获取前后两个点和当前点的坐标&#xff0c;计算前后两点的向量&a…

kotlin 编写一个简单的天气预报app (七)使用material design

一、优化思路 对之前的天气预报的app进行了优化&#xff0c;原先的天气预报程序逻辑是这样的。 使用text和button组合了一个输入城市&#xff0c;并请求openweathermap对应数据&#xff0c;并显示的功能。 但是搜索城市的时候&#xff0c;可能会有错误&#xff0c;比如大小写…

为什么 Facebook 不使用 Git?

在编程的世界里&#xff0c;Git 就像水一样常见&#xff0c;以至于我们认为它是创建和管理代码更改的唯一可行的工具。 前 Facebook 员工&#xff0c;2024 年 首先&#xff0c;我为什么关心&#xff1f; 我致力于构建 Graphite&#xff0c;它从根本上受到 Facebook 内部工具的…

表格的单元格合并和表头的合并——vxe-table

vxe-table的官网&#xff1a;https://vxetable.cn/#/table/advanced/mergeCell在你的项目中下载安装完成后&#xff0c;先在main.js文件中引入&#xff1a; import VXETable from vxe-table import vxe-table/lib/style.css Vue.use(VXETable)一、单元格合并 效果图&#xff…