0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是张量处理单元(TPU)

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2022-04-27 09:27 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

介绍

张量处理单元( Tensor Processing Unit, TPU ) 是谷歌专门为神经网络机器学习开发的人工智能加速器 专用集成电路(ASIC) ,特别是使用谷歌自己的TensorFlow软件。谷歌于 2015 年开始在内部使用 TPU,并于 2018 年将它们作为其云基础设施的一部分并通过提供较小版本的芯片出售给第三方使用。

张量处理单元于 2016 年 5 月在Google I/O上宣布:当时该公司表示 TPU 已经在其数据中心内使用了一年多。该芯片专为 Google 的TensorFlow框架设计,用于神经网络等机器学习应用。

与图形处理单元相比,它设计用于大量低精度计算(例如低至8 位精度) ,每焦耳有更多的输入/输出操作,无需用于光栅化/纹理映射的硬件。根据Norman Jouppi的说法, TPU ASIC安装在散热器组件中,该组件可以安装在数据中心机架内的硬盘驱动器插槽中。不同类型的处理器适合不同类型的机器学习模型,TPU 非常适合CNN而 GPU 对一些全连接的神经网络有长处,而 CPU 对RNN有长处。

经过几年的发展,TPU已经发布了四个版本,下面是其发展历程:

1a874066-c5c2-11ec-bce3-dac502259ad0.png

详细介绍:<【科普】什么是TPU?>

接下来介绍一些TPU项目。

tinyTPU

https://github.com/jofrfu/tinyTPU

1a9b6992-c5c2-11ec-bce3-dac502259ad0.png

该项目的目的是创建一个与谷歌的张量处理单元具有相似架构的机器学习协处理器。该实现的资源可定制,可以以不同的尺寸使用以适应每种类型的 FPGA。这允许在嵌入式系统物联网设备中部署该协处理器,但也可以扩大规模以用于数据中心和高性能机器。AXI 接口允许以多种组合方式使用。对 Xilinx Zynq 7020 SoC 进行了评估。下面的链接中是使用vivado进行使用的一个DEMO:

https://github.com/jofrfu/tinyTPU/blob/master/getting_started.pdf

同时,该项目也是一片论文的验证项目,论文地址:

https://reposit.haw-hamburg.de/bitstream/20.500.12738/8527/1/thesis.pdf

性能

使用 MNIST 数据集训练的样本模型在不同大小的 MXU 上进行了评估,频率为 177.77 MHz,理论性能高达 72.18 GOPS。然后将实际时序测量与传统处理器进行比较:

177.77 MHz 的张量处理单元:

Matrix Width N 6 8 10 12 14
Instruction Count 431 326 261 216 186
Duration in us (N input vectors) 383 289 234 194 165
Duration per input vector in us 63 36 23 16 11

下面是其他处理器的对比结果:

Processor Intel Core i5-5287U at 2.9 GHz BCM2837 4x ARM Cortex-A53 at 1.2 GHz
Duration per input vector in us 62 763

Free-TPU

https://github.com/embedeep/Free-TPU

1abae484-c5c2-11ec-bce3-dac502259ad0.png

编译好的BOOTbin,因为TPU和引脚没关联,所以可以直接进行使用验证。

https://github.com/embedeep/Free-TPU-OS

1acce22e-c5c2-11ec-bce3-dac502259ad0.png

描述

Free TPU是用于深度学习 EDGE 推理的商业 TPU 设计的免费版本,可以部署在任何 FPGA 设备上,包括 Xilinx Zynq-7020 或 Kintex7-160T(这两个都是生产的好选择)。实际上,不仅是 TPU 逻辑设计, Free TPU还包括支持所有 caffe 层的 EEP 加速框架,可以在任何 CPU 上运行(如 Zynq-7020 的 ARM A9 或 INTEL/AMD)。TPU 和 CPU 在深度学习推理框架的计划下相互协作(任何交替顺序)。

系统结构

1adf7498-c5c2-11ec-bce3-dac502259ad0.png

对比

1b007d0a-c5c2-11ec-bce3-dac502259ad0.png

1b27e32c-c5c2-11ec-bce3-dac502259ad0.png

在用户看来,Free-TPU和EEP-TPU功能相同,但推理时间不同。

这是一个极其完整的项目,关于怎么运行,怎么调用都有很详细的步骤,这里就不再赘述了,更多详情,请访问:

https://www.embedeep.com

SimpleTPU

https://github.com/cea-wind/SimpleTPU

1b4946a2-c5c2-11ec-bce3-dac502259ad0.png

张量处理单元旨在加速矩阵乘法,特别是对于多层感知器和卷积神经网络。

此实现主要遵循 Google TPU Version 1,该架构在

https://arxiv.org/ftp/arxiv/papers/1704/1704.04760.pdf

中有介绍。

主要特点

Simple TPU 的主要特性包括

Int8 乘法和 Int32 累加器

基于 VLIW 的并行指令

基于向量架构的数据并行

以下是 Simple TPU 可以支持的一些操作。

1b7133ce-c5c2-11ec-bce3-dac502259ad0.png

资源占用情况

1b8fa2b4-c5c2-11ec-bce3-dac502259ad0.png

虽然该工程比较完整,后续也有DEMO演示,但是该工程使用HLS制作的,详细信息可以查看下面的网址

https://www.cnblogs.com/sea-wind/p/10993958.html

tiny-tpu

https://github.com/cameronshinn/tiny-tpu

谷歌的TPU架构:

1bab16d4-c5c2-11ec-bce3-dac502259ad0.jpg

1bc0e216-c5c2-11ec-bce3-dac502259ad0.png

Tiny TPU是基于 FPGA 的 Google张量处理单元的小规模实现。该项目的目标是了解加速器设计从硬件到软件的端到端技术,同时破译谷歌专有技术的低层次复杂性。在此过程中,我们探索了小规模、低功耗 TPU 的可能性。

该项目在 Quartus 15.0 上综合并编程Altera DE1-SoC FPGA 上。

1bde5094-c5c2-11ec-bce3-dac502259ad0.png

更多详细信息:

https://github.com/cameronshinn/tiny-tpu/blob/master/docs/report/report.pdf

TPU-Tensor-Processing-Unit

https://github.com/leo47007/TPU-Tensor-Processing-Unit

介绍

在有两个矩阵需要做矩阵乘法的场景下,矩阵A(选择权重矩阵)与矩阵B(选择矩阵)相,每一个一个都是 32x32。最后他们开始做每个矩阵的乘法,每个矩阵的因素将首先转换成一个顺序输入 TPU 中,输入其特定的矩阵,然后再将这些单元最多向连接的方向输入。在下一个周期中,每个单元将其权重和数据方向赋予下一个格。从左到右。

1bf48576-c5c2-11ec-bce3-dac502259ad0.png

因为这个项目有中文的详细介绍,所以就不过多赘述了。

https://zhuanlan.zhihu.com/p/26522315

Systolic-array-implementation-in-RTL-for-TPU

https://github.com/abdelazeem201/Systolic-array-implementation-in-RTL-for-TPU

1c176726-c5c2-11ec-bce3-dac502259ad0.png

如下图所示,在有两个矩阵需要做矩阵乘法的场景下,矩阵A(命名权重矩阵)与矩阵B(命名数据矩阵)相乘,每个矩阵为8x8。一旦他们开始做矩阵乘法,两个矩阵的这些系数将首先转换成一个顺序输入到 TPU 中,然后输入到每个特定的队列中。然后这些队列将最多向其连接的单元输出 8 个数据,这些单元将根据它接收到的权重和数据进行乘法和加法。并且在下一个周期中,每个单元格将其权重和数据转发给下一个单元格。权重从上到下,数据从左到右。

1bf48576-c5c2-11ec-bce3-dac502259ad0.png

该项目虽然完成了相关的目的,但是只是完成了相关工作,实际使用时需要进行一些优化。

1c41695e-c5c2-11ec-bce3-dac502259ad0.png

super_small_toy_tpu

https://github.com/dldldlfma/super_small_toy_tpu

1c7098be-c5c2-11ec-bce3-dac502259ad0.png

如果说上面几个TPU比较复杂,那么这个就可以用“精简”来形容了。

整个代码非常精简,适合入门想研究TPU的人。

1c8f61cc-c5c2-11ec-bce3-dac502259ad0.png

AIC2021-TPU

https://github.com/charley871103/TPU

https://github.com/Oscarkai9139/AIC2021-TPU

https://github.com/hsiehong/tpu

1ca9c4b8-c5c2-11ec-bce3-dac502259ad0.png

这个项目是AIC2021-TPU,类似的项目有很多,都是理论研究的项目,和上面的项目一样都是非常非常适合入门研究的人员,里面的理论都是极其详细的。

1cd94e72-c5c2-11ec-bce3-dac502259ad0.png

systolic-array

https://github.com/Dazhuzhu-github/systolic-array

verilog实现TPU中的脉动阵列计算卷积的module

data为实验数据

source为源码

testbench 测试各个模块用的testbench

data-preprocessing 原本是要写将卷积操作用python预先imtocol操作的,但后来直接使用matlab生成数据进行测试了

tpu_v2

https://github.com/UT-LCA/tpu_v2

1cf57534-c5c2-11ec-bce3-dac502259ad0.png

项目没有多余的介绍,整个项目是基于Altera-DE3设计,EDA工具是Quartus II。

1d09d60a-c5c2-11ec-bce3-dac502259ad0.png

google-coral-baseboard

https://github.com/antmicro/google-coral-baseboard

1d28fe7c-c5c2-11ec-bce3-dac502259ad0.png

NXP i.MX8X 和 Google 的 Edge TPU ML 推理 ASIC(也可作为Coral Edge TPU 开发板的一部分)的基板的开放硬件设计文件。该板提供标准 I/O 接口,并允许用户通过统一的柔性扁平电缆 (FFC) 连接器与两个兼容 MIPI CSI-2 的视频设备连接。

1d63cbb0-c5c2-11ec-bce3-dac502259ad0.png

PCB 项目文件是在 Altium Designer 14.1 中准备的。

1d76fe74-c5c2-11ec-bce3-dac502259ad0.png

该项目是一个硬件方案,谷歌Coral Edge TPU的硬件验证方案。

neural-engine

https://github.com/hollance/neural-engine

大多数新的 iPhone 和 iPad 都有神经引擎,这是一种特殊的处理器,可以让机器学习模型变得非常快,但对于这种处理器的实际工作原理,公众知之甚少。

Apple 神经引擎(或 ANE)是NPU的一种,代表神经处理单元。它就像 GPU,但 NPU 不是加速图形,而是加速卷积和矩阵乘法等神经网络操作。

ANE 并不是唯一的 NPU——除了 Apple 之外,许多公司都在开发自己的 AI 加速器芯片。除了神经引擎,最著名的 NPU 是谷歌的 TPU(或 Tensor Processing Unit)。

这个项目并不是一个实现TPU的项目,但是是一个关于Apple 神经引擎(或 ANE)介绍及相关文档的集合的项目。

总结

今天介绍了几个TPU的项目,因为在国内TPU可能很多人都没有听说过,所以接下来我会出几篇文章介绍一下。同时这些项目前面几个非常完整,完全可以优化后进行商业推广(注意开源协议),最后几个项目是一些补充的知识,想要了解相关的知识的朋友可以查看一下。

最后,还是感谢各个大佬开源的项目,让我们受益匪浅。后面有什么感兴趣方面的项目,大家可以在后台留言或者加微信留言,今天就到这,我是爆肝的碎碎思,期待下期文章与你相见。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1656

    文章

    22292

    浏览量

    630425
  • Verilog
    +关注

    关注

    30

    文章

    1370

    浏览量

    114159
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136236

原文标题:优秀的 Verilog/FPGA开源项目介绍(二十)- 张量处理单元(TPU)

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    直击英伟达腹地?谷歌TPU v7开放部署,催生OCS产业链红利

    电子发烧友网报道(文/莫婷婷)在AI技术飞速发展的今天,算力已成为决定企业竞争格局的核心要素。作为全球科技巨头,谷歌不仅在AI算法和大模型领域持续引领创新,更通过自主研发的张量处理单元(Tensor
    的头像 发表于 11-27 08:53 8448次阅读
    直击英伟达腹地?谷歌<b class='flag-5'>TPU</b> v7开放部署,催生OCS产业链红利

    谷歌云发布最强自研TPU,性能比前代提升4倍

    电子发烧友网报道(文/李弯弯)近日,谷歌云在官方博客上正式宣布,公司成功推出第七代TPU张量处理器)“Ironwood”,该芯片预计在未来几周内正式上市。   “Ironwood”由谷歌自主
    的头像 发表于 11-13 07:49 8152次阅读
    谷歌云发布最强自研<b class='flag-5'>TPU</b>,性能比前代提升4倍

    【Milk-V Duo S 开发板免费体验】开箱和系统体验

    的计算能力。专门设计的 TPU 调度引擎高效地为张量处理单元核心提供高带宽数据流。它还为用户提供了强大的深度学习模型编译器和软件 SDK 开发套件。 Caffe、Pytorch、ON
    发表于 08-12 22:04

    基于碳纳米材料的TPU导电长丝制备与性能研究

    、金属材料与复合材料等各领域的研究开发、工艺优化与质量监控.基于碳纳米材料的TPU导电长丝制备与性能研究【江南大学赵树强】基于碳纳米材料的TPU导电长丝制备与性能研究上海
    的头像 发表于 07-11 10:21 341次阅读
    基于碳纳米材料的<b class='flag-5'>TPU</b>导电长丝制备与性能研究

    摆脱依赖英伟达!OpenAI首次转向使用谷歌芯片

    电子发烧友网报道(文/李弯弯)近日,据知情人士透露,OpenAI近期已开始租用谷歌的张量处理单元TPU),为旗下ChatGPT等热门产品提供算力支持。这一举措不仅标志着OpenAI首
    的头像 发表于 07-02 00:59 8009次阅读

    【Milk-V Duo S 开发板免费体验】开箱、介绍、系统更新

    地为张量处理单元核心提供高带宽数据流。 为用户提供了强大的深度学习模型编译器和软件 SDK 开发套件。 Caffe、Pytorch、ONNX、MXNet、TensorFlow(Lite)等主流深度学习
    发表于 06-28 09:18

    TPU处理器的特性和工作原理

    张量处理单元TPU,Tensor Processing Unit)是一种专门为深度学习应用设计的硬件加速器。它的开发源于对人工智能(AI)和机器学习应用的需求,尤其是深度学习中的神经
    的头像 发表于 04-22 09:41 3388次阅读
    <b class='flag-5'>TPU</b><b class='flag-5'>处理</b>器的特性和工作原理

    Google推出第七代TPU芯片Ironwood

    在 Google Cloud Next 25 大会上,我们隆重推出第 7 代 Tensor Processing Unit (TPU) — Ironwood。这不仅是我们迄今为止性能最高、扩展性最佳的定制 AI 加速器,更是第一款专为推理而设计的 TPU
    的头像 发表于 04-16 11:20 1344次阅读
    Google推出第七代<b class='flag-5'>TPU</b>芯片Ironwood

    谷歌第七代TPU Ironwood深度解读:AI推理时代的硬件革命

    谷歌第七代TPU Ironwood深度解读:AI推理时代的硬件革命 Google 发布了 Ironwood,这是其第七代张量处理单元TPU
    的头像 发表于 04-12 11:10 2941次阅读
    谷歌第七代<b class='flag-5'>TPU</b> Ironwood深度解读:AI推理时代的硬件革命

    使用Python API在OpenVINO™中创建了用于异步推理的自定义代码,输出张量的打印结果会重复,为什么?

    使用 Python* API 在 OpenVINO™ 中创建了用于异步推理的自定义代码。 遇到输出张量的打印结果会重复的问题,即使输入图像不同。
    发表于 03-06 07:53

    无法调用GPU插件推理的远程张量API怎么解决?

    运行了使用 GPU 插件的远程张量 API 的推理。但是,它未能共享 OpenCL* 内存,但结果不正确。
    发表于 03-06 06:13

    Imagination D系列GPU:关于2D 双速率纹理处理

    实现景深、光晕、模糊等效果。大多数这些后处理过程都是以纹理采样为主的过滤效果,它们对算术逻辑单元(ALU)的要求不高,但受限于纹理处理单元(TPU
    的头像 发表于 02-08 14:28 681次阅读
    Imagination D系列GPU:关于2D 双速率纹理<b class='flag-5'>处理</b>

    TPU编程竞赛系列|第九届集创赛“算能杯”火热报名中!

    第九届全国大学生集成电路创新创业大赛(以下简称“集创赛”)正式开始报名。算能在处理器应用方向特别设立了“TPU赋能的边缘计算架构优化与创新应用设计”赛题,诚邀各校参赛队伍充分发挥TPU的算力优势
    的头像 发表于 02-06 13:41 1602次阅读
    <b class='flag-5'>TPU</b>编程竞赛系列|第九届集创赛“算能杯”火热报名中!

    光缆用tpu外护套用在哪些型号光缆上

    光缆用TPU(热塑性聚氨酯)外护套因其耐磨、抗拉、柔性好以及优良的防潮和阻燃性能,被广泛应用于多种型号的光缆上,特别是需要较高机械保护和恶劣环境适应性的光缆。以下是一些可能使用TPU外护套的光缆
    的头像 发表于 01-10 10:05 1377次阅读

    半导体所在光学张量处理领域取得新进展

    ,面对庞大的张量计算需求,传统的存储和处理分立的电子计算硬件面临计算延迟大、功耗高等问题,从而成为了制约人工智能领域快速进步的一大瓶颈。 光计算作为一种新兴的计算技术,具有大带宽、低延迟、低功耗等独特优势,
    的头像 发表于 01-08 11:38 651次阅读