神经网络如何运算

在我们对比 CPU、GPU 和 TPU 之前,我们可以先了解到底机器学习或神经网络需要什么样的计算。如下所示,假设我们使用单层神经网络识别手写数字。


如果图像为 28×28 像素的灰度图,那么它可以转化为包含 784 个元素的向量。神经元会接收所有 784 个值,并将它们与参数值(上图红线)相乘,因此才能识别为「8」。其中参数值的作用类似于用「滤波器」从数据中抽取特征,因而能计算输入图像与「8」之间的相似性:

这是对神经网络做数据分类最基础的解释,即将数据与对应的参数相乘(上图两种颜色的点),并将它们加在一起(上图右侧收集计算结果)。如果我们能得到最高的预测值,那么我们会发现输入数据与对应参数非常匹配,这也就最可能是正确的答案。

简单而言,神经网络在数据和参数之间需要执行大量的乘法和加法。我们通常会将这些乘法与加法组合为矩阵运算,这在我们大学的线性代数中会提到。所以关键点是我们该如何快速执行大型矩阵运算,同时还需要更小的能耗。

CPU 如何运行

因此 CPU 如何来执行这样的大型矩阵运算任务呢?一般 CPU 是基于冯诺依曼架构的通用处理器,这意味着 CPU 与软件和内存的运行方式如下:

图:CPU 如何运行

CPU 最大的优势是灵活性。通过冯诺依曼架构,我们可以为数百万的不同应用加载任何软件。我们可以使用 CPU 处理文字、控制火箭引擎、执行银行交易或者使用神经网络分类图像。

但是,由于 CPU 非常灵活,硬件无法一直了解下一个计算是什么,直到它读取了软件的下一个指令。CPU 必须在内部将每次计算的结果保存到内存中(也被称为寄存器或 L1 缓存)。内存访问成为 CPU 架构的不足,被称为冯诺依曼瓶颈。

虽然神经网络的大规模运算中的每一步都是完全可预测的,每一个 CPU 的算术逻辑单元(ALU,控制乘法器和加法器的组件)都只能一个接一个地执行它们,每一次都需要访问内存,限制了总体吞吐量,并需要大量的能耗。

GPU 如何工作

为了获得比 CPU 更高的吞吐量,GPU 使用一种简单的策略:在单个处理器中使用成千上万个 ALU。现代 GPU 通常在单个处理器中拥有 2500-5000 个 ALU,意味着你可以同时执行数千次乘法和加法运算。

图:GPU 如何工作

这种 GPU 架构在有大量并行化的应用中工作得很好,例如在神经网络中的矩阵乘法。实际上,相比 CPU,GPU 在深度学习的典型训练工作负载中能实现高几个数量级的吞吐量。这正是为什么 GPU 是深度学习中最受欢迎的处理器架构。

但是,GPU 仍然是一种通用的处理器,必须支持几百万种不同的应用和软件。这又把我们带回到了基础的问题,冯诺依曼瓶颈。在每次几千个 ALU 的计算中,GPU 都需要访问寄存器或共享内存来读取和保存中间计算结果。

因为 GPU 在其 ALU 上执行更多的并行计算,它也会成比例地耗费更多的能量来访问内存,同时也因为复杂的线路而增加 GPU 的物理空间占用。

TPU 如何工作


当谷歌设计 TPU 的时候,我们构建了一种领域特定的架构。这意味着,我们没有设计一种通用的处理器,而是专用于神经网络工作负载的矩阵处理器。

TPU 不能运行文本处理软件、控制火箭引擎或执行银行业务,但它们可以为神经网络处理大量的乘法和加法运算,同时 TPU 的速度非常快、能耗非常小且物理空间占用也更小。

其主要助因是对冯诺依曼瓶颈的大幅度简化。因为该处理器的主要任务是矩阵处理,TPU 的硬件设计者知道该运算过程的每个步骤。因此他们放置了成千上万的乘法器和加法器并将它们直接连接起来,以构建那些运算符的物理矩阵。

这被称作脉动阵列(Systolic Array)架构。在 Cloud TPU v2 的例子中,有两个 128X128 的脉动阵列,在单个处理器中集成了 32768 个 ALU 的 16 位浮点值。

我们来看看一个脉动阵列如何执行神经网络计算。首先,TPU 从内存加载参数到乘法器和加法器的矩阵中。

图:TPU 如何工作

然后,TPU 从内存加载数据。当每个乘法被执行后,其结果将被传递到下一个乘法器,同时执行加法。因此结果将是所有数据和参数乘积的和。在大量计算和数据传递的整个过程中,不需要执行任何的内存访问。

这就是为什么 TPU 可以在神经网络运算上达到高计算吞吐量,同时能耗和物理空间都很小。

因此使用 TPU 架构的好处就是:成本降低至 1/5。

一文搞懂 CPU、GPU 和 TPU相关推荐

  1. 一文搞懂CPU、MPU、MCU、SOC的联系与区别

    转载于read://https_www.elecfans.com/?url=https%3A%2F%2Fwww.elecfans.com%2Fd%2F1813764.html 1 CPU CPU(Ce ...

  2. 一文搞懂CPU如何控制I/O设备

    1 接口和设备:经典适配器模式 输入输出设备不只是一个设备.大部分输入输出设备,都有: 它的接口(Interface) 实际的I/O设备(Actual I/O Device) 硬件设备并非直接接入到总 ...

  3. 一文搞懂CPU运算原理

    以下是视频计算机科学速成课的笔记,感谢字幕组!!! 一.逻辑门 了解逻辑门以前,让我们来看看组成逻辑门的三极管. 这是三极管,有两个电极和一根控制线.如果控制线有输入,三极管才能导通,即如果电流从上面 ...

  4. 《一文搞懂NMS发展历程》Soft-NMS、Weighted NMS、IoU-Net、Softer-NMS、Adaptive NMS、DIoU-NMS

    <一文搞懂NMS发展历程>Soft-NMS.Weighted NMS.IoU-Net.Softer-NMS.Adaptive NMS.DIoU-NMS 文章目录 <一文搞懂NMS发展 ...

  5. 【显卡】一文搞懂显卡

    [显卡]一文搞懂显卡 文章目录 [显卡]一文搞懂显卡 1. 前言介绍 1.1 CPU和显卡的区别 1.1.1 作用不同 1.1.2 结构不同 1.1.3 应用场景不同 1.2 三个著名的显卡公司 2. ...

  6. 一文搞懂 Traefik2.1 的使用

    原文链接:一文搞懂 Traefik2.1 的使用 一文搞懂 Traefik2.1 的使用 核心概念 安装 ACME 中间件 灰度发布 流量复制 TCP 简单 TCP 服务 带 TLS 证书的 TCP ...

  7. 一文搞懂指标采集利器 Telegraf

    作者| 姜闻名 来源|尔达 Erda 公众号 ​ 导读:为了让大家更好的了解 MSP 中 APM 系统的设计实现,我们决定编写一个<详聊微服务观测>系列文章,深入 APM 系统的产品.架构 ...

  8. 一文搞懂BN、LN、IN、GN的区别

    一文搞懂BN.LN.IN.GN的区别 批归一化(BN)已经成为许多先进深度学习模型的重要组成部分,特别是在计算机视觉领域.它通过批处理中计算的平均值和方差来规范化层输入,因此得名.要使BN工作,批大小 ...

  9. 网络知识扫盲,一文搞懂 DNS

    在找工作面试的过程中,面试官非常喜欢考察基础知识,除了数据结构与算法之外,网络知识也是一个非常重要的考察对象. 而网络知识,通常是很抽象,不容易理解的,有很多同学就在这里裁了跟头.为了更好地通过面试, ...

最新文章

  1. CCF发布2020-2021中国计算机科学技术发展报告
  2. 线程池每次用都创建吗_跳槽涨薪季面试题之多线程(三)
  3. php模拟表格冻结,PHPExcel冻结(锁定)表头的简单实现方法
  4. 蓝桥杯 十进制数转八进制数
  5. LUA upvalue使用陷阱一例
  6. 把checkbox复选框转换成单选按钮radio
  7. 【转】Dynamics版本历史演进及Dynamics 365重要功能介绍
  8. 菜鸟学习笔记:Java提升篇11(Java动态性1——注解与反射)
  9. UVA 1048 Low Cost Air Travel 最短路
  10. TypeScript学习(三):联合类型及推论
  11. Git(9)-- 远程仓库的使用
  12. PostgreSQL 之 分区表
  13. java程序员选择多个offer时需要看重哪些?_27 道阿里巴巴 Java 面试题,你会几道?...
  14. php root进程保存文件夹,thinkphp5日志文件夹及文件权限问题的解决
  15. kali Linux外网渗透控制Android安卓手机系统。
  16. 腐蚀rust电脑分辨率调多少_腐蚀Rust帧数优化指南 游戏FPS提高方法说明
  17. android usb wifi驱动下载,android 平台USB wifi驱动移植及使用
  18. mac移动硬盘初始化
  19. 网络技术 | Cisco Packet Tracer 6.2安装包 安装教程
  20. on conflict的用法

热门文章

  1. From the data point of view
  2. In this year of Hors, he is an adopted son
  3. 重载运算符:作为成员函数还是非成员函数
  4. wget在进行https下载时超时不生效问题
  5. Spring_day3
  6. 【高等数学】连续可导可微(定义+证明+记忆方法)
  7. aws rds监控慢sql_探索AWS RDS SQL Server上SQL Server集成服务(SSIS)
  8. 逻辑数据库设计 - 单纯的树(邻接表、路径枚举、嵌套集、闭包表)(引)
  9. c++实现数值的整数次方(类似pow())作用
  10. HDU2161 Primes