它也充分显示出,由于受到人工智能发展的影响,利润可观的电脑芯片市场正经历着如何剧烈变动。 那位不知名的对冲基金经理也嗅到了即将来临的变化,但不确定它将以什么形式到来。 可是,当这些公司开始用新的方式——深度神经网络(人工智能的分支形式)来解决问题,提供服务时,他们就得使用与之相匹配的处理器了,如谷歌专为机器学习设计的 Tensor 处理器(TPU)。 另外,还有数不清的公司已大量配备图形处理器(GPU)——他们这样做,无非是想通过更高效的芯片加速智能手机和其他设备中人工智能的应用。 英特尔和英伟达对谷歌自己制造 TPU 感到十分恐慌。但在谷歌和类似公司中,GPU 的分量同样也很重。 英伟达是这类特殊芯片的主要制造商。 上述提到的谷歌使用的 TPU 和微软使用的 FPGA 皆是为此服务。百度则使用的是 GPU,虽然它不太适用于这一过程,但配合着相应的软件也能完成任务。
TPU 架构 TPU被设计成一个协处理器,通过PCI-E总线与CPU进行数据交换,同时,TPU自己不会主动去内存中取指令,所有运行指令都是CPU通过PICE主动发送到TPU的指令缓存buffer中去执行 ,所以其实TPU其实更像是一个单纯的计算单元协处理器。 [tpu-arct.png] TPU的核心是 256*256的矩阵运算单元,能够计算8bit的整数乘法及加法。 TPU使用了4级的流水线,来充分利用矩阵运算单元。TPU中,计算和存储单元占据了接近70%的面积,控制单元仅有2%。 [perf.png] [perf-figure.png] 功耗 谷歌的数据显示,能耗比GPU和CPU高出很多 [pw.png] TPU设计调整 结果是TPU很吃内存带宽,带宽提高4倍,性能能提高三倍。
精美礼品等你拿!
谷歌的这款芯片被称作 Tensor Processing Unit,简称 TPU,是Google专门为深度学习定制的芯片。 第一次出现是在2016年的Google I/O大会上,最近在体系结构顶级会议 ISCA 2017 上面,描述 TPU 的论文被评为最佳论文,让TPU又火了一把。 不适合训练,适合做推断,TPU是一种ASIC,先用GPU训练神经网络,再用TPU做推断。 • 一个TPU的MAC是Tesla K80的25倍,片上内存容量达到K80的3.5倍,而且体积更小。 Jouppi说,虽然 TPU 有很多矩阵乘法单元,但 TPU 比“GPU 在思路上更接近浮点单元协处理器”,TPU 没有任何存储程序,仅执行从主机发送的指令。
1 TPU分类和收费标准 1.1 分类和计费说明 地区 抢占式TPU Cloud TPU 美国 \$1.35/hour \$4.5/hour 欧洲 \$1.485/hour \$4.95/ hour 亚太区地区 \$1.566/hour \$5.22/hour 抢占式 TPU 是 Cloud TPU 在需要将资源分配给另一项任务时,可以随时终止(抢占)的 TPU。 抢占式 TPU 的费用要比普通 TPU 低廉得多。 TPU 以 1 秒钟为增量单位进行计费。 为了连接到 TPU,我们必须配置一台虚拟机(单独结算)。要注意的是虚拟机和TPU是分别计费的。 也就是说仅在启动 TPU 之后,Cloud TPU 的计费才会开始;在停止或删除 TPU 之后,计费随即停止。 抢占式 TPU 的费用是每小时 $1.35,而非普通 TPU 的每小时 $4.50。
扯了这么多,本帖只想弄清楚下面 WHAT-WHY-HOW 灵魂三问: WHAT:TPU 是什么? WHY:为什么 TPU 在神经网络上有效? HOW:怎么玩 TPU + Keras? 1 WHAT TPU 是什么? 张量处理器 (Tensor Processing Unit, TPU) 是 Google 为机器学习定制的人工智能加速器专用集成电路,专为 Google 的深度学习框架TensorFlow 而设计的。 最后看看专门为矩阵计算设计的 TPU? 1.4 TPU TPU 是 google 专门为大型神经网络里面的大型矩阵运算而设计的,因此不是通用处理器。 try block 里面分别检测出 TPU,并创建 TPU 分布式策略,然后用 keras_to_tpu_model 来将 model 装成 tpu_model。 之后就可以愉快的训练模型了。
谷歌刚刚有了自己的人工智能芯片 TPU,这种芯片已经广泛用于谷歌的数据中心,成为其网络帝国的引擎。每台安卓手机的谷歌语音搜索指令都会经由 TPU 处理。 这只是芯片业巨大变革的开始,CNBC 等媒体 4 月 20 日 的报道指出,谷歌 TPU 的开发者们正在秘密成立的创业公司 Groq 重新集结,开发类似的人工智能芯片;而传统芯片厂商,如英特尔、IBM 谷歌在本月初推出 TPU 时称:「它是我们的第一块机器学习芯片。」在谷歌发表的论文中,TPU 在一些任务中的处理速度可达到英伟达 K80 GPU 与英特尔 Haswell CPU 的 15-30 倍。 而在功耗测试中,TPU 的效率也比 CPU 和 GPU 高 30-80 倍(当然,作为对比的芯片并不是最新产品)。 ? 谷歌宣称随着 TPU 的应用,它为谷歌节约的成本可以打造另外 15 个数据中心。
1 TPU分类和收费标准 1.1 分类和计费说明 地区 抢占式TPU Cloud TPU 美国 $1.35/hour $4.5/hour 欧洲 $1.485/hour $4.95/hour 亚太区地区 $1.566/hour $5.22/hour 抢占式 TPU 是 Cloud TPU 在需要将资源分配给另一项任务时,可以随时终止(抢占)的 TPU。 抢占式 TPU 的费用要比普通 TPU 低廉得多。 TPU 以 1 秒钟为增量单位进行计费。 为了连接到 TPU,我们必须配置一台虚拟机(单独结算)。要注意的是虚拟机和TPU是分别计费的。 也就是说仅在启动 TPU 之后,Cloud TPU 的计费才会开始;在停止或删除 TPU 之后,计费随即停止。 = tpu.rewrite(axy_computation, inputs) tpu_grpc_url = TPUClusterResolver( tpu=[os.environ['TPU_NAME
前面刚学习了Google的第一代TPU,写了篇《似懂非懂Google TPU》,很多朋友一起讨论,纷纷议论说好像也不是很牛逼?怎么可能,Google在技术上还是很有追求的。 这还没过几个月,Google CEO Sundar Pichai 在 5月18日I/O 大会上正式公布了第二代 TPU,又称 Cloud TPU 或 TPU 2.0,继续来看下TPU 2.0有什么神奇之处 第一代 TPU 它被做为一种特定目的芯片而专为机器学习设计,并用在 AlphaGo 的人工智能系统上,是其预测和决策等技术的基础。 Google 还找到一种方法,使用新的电脑网络将 64 个 TPU 组合到一起,升级为所谓的TPU Pods,可提供大约 11,500 万亿次浮点运算能力。 ? 除了速度,第二代 TPU 最大的特色,是相比初代 TPU 它既可以用于训练神经网络,又可以用于推理。
如果想尝试使用Google Colab上的TPU来训练模型,也是非常方便,仅需添加6行代码。 在Colab笔记本中:修改->笔记本设置->硬件加速器 中选择 TPU 注:以下代码只能在Colab 上才能正确执行。 可通过以下colab链接测试效果《tf_TPU》: https://colab.research.google.com/drive/1XCIhATyE1R7lq6uwFlYlRsUr5d9_-r1s % return(model) 三,训练模型 #增加以下6行代码 import os resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu ='grpc://' + os.environ['COLAB_TPU_ADDR']) tf.config.experimental_connect_to_cluster(resolver) tf.tpu.experimental.initialize_tpu_system
芯片的其余部分很重要,值得一试,但 TPU 的核心优势在于它的 MXU——一个脉动阵列矩阵乘法单元。 TPU的其余部分 上面设计了出色的脉动阵列,但仍有大量工作需要构建支持和基础部分以使其运行。 TPUv1 的系统图和布局模型 主机接口将通过 PCIe 连接到加速器(TPU)。 它将您的 TF 图转换为线性代数,并且它有自己的后端可以在 CPU、GPU 或 TPU 上运行。 Pods Google云中的 TPU 存在于“pod”中,它们是具有大量计算能力的大型机架。 单个 TPU 通常不足以以所需的速度训练大型模型,但训练涉及频繁的权重更新,需要在所有相关芯片之间分配。 TPU发展历史 结论 这是我能找到有关TPU工作原理的所有信息,可能她并不完整,但是我希望你明白了TPU的工作原理。 TPU 是一个非常好的硬件,但它可能在 v1 出现之前就已经存在多年了。
XLA将CNN模型与分布式多处理环境中的Google Cloud TPU(张量处理单元)连接起来。在这个实现中,使用8个TPU核心来创建一个多处理环境。 用PyTorch和TPU实现CNN 我们将在Google Colab中实现执行,因为它提供免费的云TPU(张量处理单元)。 import os assert os.environ['COLAB_TPU_ADDR'] 如果启用了TPU,它将成功执行,否则它将返回‘KeyError: ‘COLAB_TPU_ADDR’’。 你也可以通过打印TPU地址来检查TPU。 TPU_Path = 'grpc://'+os.environ['COLAB_TPU_ADDR'] print('TPU Address:', TPU_Path) ?
如果想尝试使用Google Colab上的TPU来训练模型,也是非常方便,仅需添加6行代码。 ='grpc://' + os.environ['COLAB_TPU_ADDR']) tf.config.experimental_connect_to_cluster(resolver) tf.tpu.experimental.initialize_tpu_system INFO:tensorflow:Found TPU system: INFO:tensorflow:Found TPU system: INFO:tensorflow:*** Num TPU Cores TPU Workers: 1 INFO:tensorflow:*** Num TPU Cores Per Worker: 8 INFO:tensorflow:*** Num TPU Cores Per :TPU:0, TPU, 0, 0) INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task
谷歌的张量处理单元(Tensor Processing Unit,后文简称TPU)是完成较早,具有代表性的一类设计,TPU采用基于脉动阵列设计的矩阵计算加速单元,可以很好的加速神经网络的计算。 本系列文章将利用公开的TPU V1相关资料,对其进行一定的简化、推测和修改,来实际编写一个简单版本的谷歌TPU,以更确切的了解TPU的优势和局限性。 1. 完成SimpleTPU的设计 在 谷歌TPU概述和简化中给出过SimpleTPU的框图,如下图所示。 ? 在 TPU中的指令并行和数据并行中对整个处理单元的体系结构进行了分析和论述,包括指令并行和数据并行两个方面。 那么,如何在TPU中的指令并行和数据并行中提到的设计思路下,将TPU中的脉动阵列及其实现和神经网络中的归一化和池化的硬件实现中提到的计算单元充分的利用,是完成Simple TPU设计的最后一部。
TPU是一个定制的特定于应用程序的集成电路(ASIC),专门为TensorFlow上的机器学习工作负载定制。谷歌两年前推出了TPU,去年发布了第二代云TPU。 第一代TPU仅用于推理,而云TPU则适用于推理和机器学习训练。使用四个定制ASICs构建的云TPU提供了一个健壮的64GB的高带宽内存和180TFLOPS的性能。 在向公众开放之前,谷歌已经在内部广泛地实施了这些TPU。阿尔法狗(AlphaGo)使用48个TPU进行推断,在围棋游戏中击败了人类冠军。云TPU为缩短机器学习模型的训练时间提供了很好的解决方案。 当云TPU发布的时候,Google为机器学习研究人员提供了1000个免费设备。Lyft是美国第二大打车公司,自去年以来,一直在其自动驾驶系统中使用云TPU。 虽然现在将云TPU誉为AI芯片冠军还为时尚早,但它的发布让研究者们兴奋,标志着谷歌雄心勃勃的进军人工智能加速器领域的开始。
TPU一直是谷歌的秘密武器,皮查伊表示该芯片曾被用于驱动AlphaGo人工智能,后者打败了顶级围棋选手李世石。看来,TPU性能的优越性已经稍有体现了。 皮查伊没有就TPU的具体细节详细阐述,但其博客上提到谷歌已研究TPU超过一年时间,并发现TPU能为机器学习提供比所有商用GPU和FPGA更高量级的指令,这基本相当于7年后的科技水平。 过去一年,TPU得到了十分广泛的使用。“如果你使用云语音识别服务,它就会使用TPU的性能。如果你使用Android语音识别服务,它也会使用TPU的性能,”霍泽尔称。 谷歌TPU通过PCI-E协议连接至计算机服务器,可以快速提升人工智能软件的性能。霍泽尔称,这是谷歌首次尝试为人工智能任务设计专用硬件。 他表示,随着人工智能市场的成熟,谷歌“很可能”为特定人工智能任务开发更多专用处理器。 不过,这并不代表CPU和GPU将会被淘汰。
本系列文章将利用公开的TPU V1相关资料,对其进行一定的简化、推测和修改,来实际编写一个简单版本的谷歌TPU,以更确切的了解TPU的优势和局限性。 TPU微架构的描述。 从数据流和计算单元出发对TPU进行分析固然容易很多,但如果想理解TPU的设计思想,依旧需要回到其架构设计上进行分析。这一部分内容有些超出了我现有的能力,不当之处还请多多指正。 TPU的指令集 TPU的指令集采用CISC设计,共计有十多条指令,主要的五条指令包括 Read_Host_Memory 将数据从CPU的内存中读取到TPU的Unified Buffer上 Read_Weights TPU论文中介绍其采用四级流水线设计,Simple TPU中采用了两级流水线,来完成控制过程。
本系列文章将利用公开的TPU V1相关资料,对其进行一定的简化、推测和修改,来实际编写一个简单版本的谷歌TPU,以更确切的了解TPU的优势和局限性。 本文将对TPU中的矩阵计算单元进行分析,并给出了SimpleTPU中32×32的脉动阵列的实现方式和采用该阵列进行卷积计算的方法,以及一个卷积的设计实例,验证了其正确性。 脉动阵列和矩阵计算 脉动阵列是一种复用输入数据的设计,对于TPU中的二维脉动阵列,很多文章中构造了脉动阵列的寄存器模型,导致阅读较为困难,而实际上TPU中的二维脉动阵列设计思路十分直接。 如上图所示,右侧是一个乘加单元的内部结构,其内部有一个寄存器,在TPU内对应存储Weight,此处存储矩阵B。 类似TPU中的设计,采用INT8作为计算阵列的输入数据类型,为防止计算过程中的溢出,中间累加结果采用INT32存储。
随着人工智能尤其是机器学习应用大量涌现,处理器市场群雄争霸。各厂商纷纷推出新的芯片产品,都想领跑智能时。但问题是,谁会担当这个角色呢? 1 谷歌为何要自己打造TPU? 在谷歌博客里,Jouppi突出强调了TPU以下性能: 我们产品的人工智能负载,主要利用神经网络的推理功能,其TPU处理速度比当前GPU和CPU要快15到30倍。 运行神经网络,TPU的每瓦性能更高 随着谷歌在人工智能领域的发展,对硬件的需求越来越大,这款TPU处理器谷歌已经秘密研发了3年,并投入到谷歌自身各个项目中进行了实践。 例如,在机器学习人工智能系统RankBrain中,TPU用来帮助谷歌处理搜索结果并为用户提供更加相关的搜索结果;在街景Street View中,TPU则用来提高地图与导航的准确性。 不管是谷歌还是百度,都在寻找一种未来人工智能能够广泛应用的基础。 虽然目前谷歌TPU是自产自销,不会对外出售,但TPU的出现仍会对英特尔、英伟达这样的芯片厂商产生巨大冲击。
TPU芯片介绍 Google定制的打机器学习专用晶片称之为TPU(Tensor Processing Unit),Google在其自家称,由于TPU专为机器学习所运行,得以较传统CPU、 GPU降低精度 但是Kaggle和谷歌在它的一些比赛中分发了免费的TPU时间,并且一个人不会简单地改变他最喜欢的框架,所以这是一个关于我在GCP上用TPU训练PyTorch模型的经验的备忘录(大部分是成功的)。 ? 注意,在TPU节点上也有运行的软件版本。它必须匹配您在VM上使用的conda环境。由于PyTorch/XLA目前正在积极开发中,我使用最新的TPU版本: ? 使用TPU训练 让我们看看代码。 1) DataParallel并行持有模型对象的副本(每个TPU设备一个),并以相同的权重保持同步。 我们测量了在训练循环中每秒处理的图像,根据该指标,所描述的TPU配置要比Tesla V100好得多。 ?
提供全球领先的人脸识别、文字识别、图像识别、语音技术、NLP、人工智能服务平台等多项人工智能技术。
扫码关注腾讯云开发者
领取腾讯云代金券