谷歌TPU(Tensor Processing Unit)

embedded/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/embedded/23572.html

相关文章

汕头联想 ibm x3500 M5服务器上门维修记录

汕头联想服务器现场检修;汕尾IBM服务器故障维修;揭阳戴尔服务器维修;汕头ERP服务器维修;潮阳地区各种服务器故障维修;各类服务器主板齐全; 分享一例从东莞到汕头某染料厂维修ibm system x3500 M5服务器的真…

服务器被CC攻击怎么办

遇到CC攻击时,可采取以下措施:限制IP访问频率、启用防DDoS服务、配置Web应用防火墙、增加服务器带宽、使用负载均衡分散请求压力。 处理服务器遭遇CC攻击的方法如下: 1. 确认攻击 你需要确认服务器是否真的遭受了CC攻击,这可以…

PostgreSQL在云时代的崛起:开源解决方案驱动多云环境下的灵活性与成本效益

在这个充满挑战的市场中,疫情和商业动态的剧变使得市场更加错综复杂,企业面临更高的期望和竞争。开发者和商业领袖都必须适应更强大的基础设施弹性和可扩展性,以确保企业能够更好地生存和发展。 每一位经验丰富的开发人员都明白,…

68.网络游戏逆向分析与漏洞攻防-利用数据包构建角色信息-自动生成CPP函数解决数据更新的问题

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…

包 与 访问修饰符

1. 包 1.1 包的三大作用 1. 区分相同名字的类 2. 当类很多时,可以很好的管理类[看Java API文档] 3. 控制访问范围 1.2 包基本语法 package com.zakeau; 说明: 1. package关键字,表示打包. 2. com.zakedu : 表示包名 1.3 包的本质分析(原理) 包的本质实际上就是创建不同的…

【1646】医院人员管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 医院人员管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

Adobe推出AI视频超分辨率工具VideoGigaGAN

🦉 AI新闻 🚀 Adobe推出AI视频超分辨率工具VideoGigaGAN 摘要:Adobe公司最新推出的AI工具VideoGigaGAN,利用上采样技术将视频分辨率从128128提升至10241024。这一工具基于GigaGAN模型开发,专注于生成视频超分辨率&am…

Selenium-Webdriver的原理与机制

一,Selenium有关理论知识 1,简介 Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox&…