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

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

3天内不再提示

TPU和GPU的带宽模型

zhKF_jqr_AI 来源:未知 作者:李倩 2018-10-21 09:20 次阅读

前几天,谷歌AI团队发布了一款新的语言表征模型——BERT,是来自Transformer的双向编码器表征。它的效果很强大,在11项NLP任务中都刷新了最佳成绩。

https://arxiv.org/abs/1810.04805

在计算力方面,关于BERT选择TPU还是GPU仍然存在争议。BERT用了四天时间,在4个TPU pod上完成的(共有256个TPU芯片),这是否意味着只有谷歌才能训练像BERT这样的模型呢?难道GPU已经走到尽头了吗?这里需要明确两点基础知识:

一台TPU是一个矩阵乘法单元,它仅可以进行矩阵乘法和矩阵操作。在计算矩阵乘法时,它的速度很快。

进行矩阵乘法的过程中,最慢的部分就是从主记忆体中得到元素,并将其载入处理器中。

换句话说,矩阵相乘中,最烧钱的部分是内存负载。对BERT来说,矩阵相乘应该占计算负载的90%。了解了这些背景,我们可以对这一问题进行小小的技术分析。

TPU和GPU的带宽模型

TPU上的Transformer

BERT中常见的操作是矩阵乘法:AB=C,其中A的尺寸为256×256,B为1024×1024。TPU在对矩阵执行相乘的过程中,会将矩阵分解成更小的128×128矩阵。这就意味着我们需要对A加载16个128×128的tile,从B中加载64个tile。总共就是1664=1024个128×128的负载量。在16位的条件下,这就是32MB的数据。

现在我们进一步简化它。我们假设,在进行两个记忆负载时没有延迟时间,这也是有可能的,因为通常你可以在线程并行下隐藏内存访问延迟。简单地说,这意味着,当我们等待一个128×128的矩阵副本完成时,已经完成了下一个。这样一来,我们只需要等待第一个内存副本的完成,不用等待其他的。这就是GPU速度快的核心原因,以及为什么我们要在GPU中使用多个线程,无延迟的重叠内存传输与实际情况相差无几。使用了这种简化,我们现在可以直接使用内存带宽计算为矩阵乘法加载内存所需要的时间。如果我们查看TPU的带宽,就会放发现有600GB/s,所以我们需要5.2e-05秒来传输32MB的数据。

GPU上的Transformer

对于GPU,过程相同,只不过使用更小的tile和更多处理器。和TPU相似,我们同时使用两个负载来隐藏内存延迟。对GPU来说,16位数据的tile尺寸是96×96的。如果我们用一个V100 Tesla GPU,那么需要同时运行160个tile,还会有稍许延迟。与TPU相比,这意味着,和两个能处理128×128的矩阵的单元不同,GPU有160个单元(80个SM,160个线程块,每个线程块有两个96×96的矩阵)。这也能保证我们可以通过并行隐藏内存延迟。

重复以上计算过程,可以得到下面的结果:

对矩阵A,我们有33个96×96的tile;对矩阵B,我们有121个96×96的tile。总共需要33*121=3993次负载,数据总量为70MB。V100每秒运行速度为900GB,所以内存负载可能会花7.6r-05秒。所以,我们的模型判断,在这一场景下,一台GPU比一台TPU慢32% 。注意,对一台RTX 2080 Ti GPU来说,矩阵tile是一样的,但是内存带宽减少到了616GB/s,说明RTX 2080 Ti比TPU慢了54%。

注意,可用Tensor Core的TPU和GPU都能在一次运行中分别计算矩阵乘法tile,所以,就速度来说二者是差不多的,区别就在于内存是如何被载入的。

在GPU上BERT的训练时间

利用这一数据,用V100和RTX 2080 Ti构成的GPU群组,以及高速网络和好的并行算法(例如用微软的CNTK),我们能在64台GPU上(相当于四个TPU pod)、用5天多的时间或8天半的时间训练出BERT。在有八台GPU的设备上,使用任意软件和并行算法(PyTorch或者TensorFlow),我们训练BERT需要42天或者68天。对于标准的四个GPU的台式机,我们需要99天。

带宽模型的限制

带宽模型最大的限制就是这些计算是针对特定矩阵大小的,计算的难度在各种尺寸之间都不同。例如,如果你的batch size是128,那么GPU的速度会比TPU稍快一点。如果batch size小于128,GPU的速度就会快很多。增加矩阵B的尺寸会让TPU比GPU快得多。在BERT的原始论文中,研究人员是针对TPU进行矩阵尺寸的调整,如果你用GPU训练的话就不要参考了。

未来可能遇到的限制包括融合运算,TPU可以计算额外的操作,例如非线性激活函数或矩阵乘法中的偏差。这意味着,TPU不需要从较慢的全局内存中进行加载。另外,GPU也支持这种操作,但是英伟达还未将它们实现,所以GPU用户可能无法使用这一方法。所以,用户可能会遇到1.6%的速度变慢,例如,如果你应用一个非线性函数和一个偏见,那么TPU可能会比GPU快3.2%。

32位、16位和8位的区别

如果在32位情况下重复上面的计算过程,那么TPU会比之前快5.3倍。所以数据类型的尺寸在TPU和GPU的选择上还是很重要的。

TPU不支持8位训练,但是图灵GPU可以。所以,我们也可以看看8位矩阵乘法会有怎样的表现。我此前总结了8位模型的表现,发现并不难训练。如果我们重复上面的训练,用8位GPU训练,就会发现GPU比TPU快了3倍。在四台RTX 2080 Ti上的8位训练需要21天。

结语

TPU在训练类似BERT的模型时,比GPU快32%到54%。你也可以用40到70天的时间,在八台GPU上复现BERT。而用四台普通GPU,在16位的情况下训练出BERT需要99天,在8位情况下则需要21天。

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

    关注

    41

    文章

    3360

    浏览量

    131521
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4417

    浏览量

    126672

原文标题:面向BERT的TPUs和GPUs性能分析比较

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

收藏 人收藏

    评论

    相关推荐

    一文理清CPU、GPUTPU的关系

    很多读者可能分不清楚 CPU、GPUTPU 之间的区别,因此 Google Cloud 将在这篇博客中简要介绍它们之间的区别,并讨论为什么 TPU 能加速深度学习。
    的头像 发表于 09-04 11:12 4008次阅读

    从CPU、GPU再到TPU,Google的AI芯片是如何一步步进化过来的?

    Google使用TPU的方式是将载有TPU的板子插在数据中心机柜的硬盘驱动器插槽里来使用。而且我觉得TPU的高性能还来源于它数据的本地化。对于GPU,从存储器中取指令与数据将耗费大量的
    发表于 03-15 11:40

    GPU编程的平台模型、执行模型、内存模型及编程模型

    GPU编程--OpenCL四大模型
    发表于 04-29 07:40

    CORAL-EDGE-TPU:珊瑚开发板TPU

    和功能规格边缘TPU模块CPU:i.MX 8M应用处理器(四核Cortex-A53,Cortex-M4F)GPU:集成的GC7000 Lite图形ML加速器:Google Edge TPU协处理器RAM
    发表于 05-29 10:43

    TPU透明副牌.TPU副牌料.TPU抽粒厂.TPU塑胶副牌.TPU再生料.TPU低温料

    清源塑胶经营. 供应TPU塑胶原料.副牌.再生颗粒料.TPU塑胶.TPU透明副牌. 再生粒子.白色.黑色.透明. 注塑料.挤出料. 压延等等..聚醚. 脂肪料. 聚酯料.硬度70A--98A.
    发表于 11-21 17:21

    供应TPU抽粒工厂.TPU再生工厂.TPU聚醚料.TPU聚酯料.TPU副牌透明.TPU副牌.TPU中低温料

    清源塑胶经营.进口.国内.供应TPU原料.副牌TPU塑胶.TPU透明副牌. 再生粒子.白色.黑色.透明. 注塑料.挤出料. 压延等等..聚醚. 脂肪料. 聚酯料.硬度70A--98A. 高硬度
    发表于 11-21 17:47

    CPU,GPU,TPU,NPU都是什么

    嵌入式算法移植优化学习笔记5——CPU,GPU,TPU,NPU都是什么一、什么是CPU?二、什么是GPU?三、什么是TPU?四、什么是NPU?附:一、什么是CPU?中央处理器(CPU)
    发表于 12-15 06:07

    MCU、DSP、GPU、MPU、CPU、DPU、FPGA、ASIC、SOC、ECU、NPU、TPU、VPU、APU、BPU、ECU、FPU、EPU、这些主控异同点有哪些?

    MCU、DSP、GPU、MPU、CPU、DPU、FPGA、ASIC、SOC、ECU、NPU、TPU、VPU、APU、BPU、ECU、FPU、EPU、这些主控异同点有哪些?
    发表于 12-17 17:07

    一文了解CPU、GPUTPU的区别

    很多读者可能分不清楚 CPU、GPUTPU 之间的区别,因此 Google Cloud 将在这篇博客中简要介绍它们之间的区别,并讨论为什么 TPU 能加速深度学习。
    的头像 发表于 09-06 16:53 2.8w次阅读

    一文搞懂 CPU、GPUTPU

    张量处理单元(TPU)是一种定制化的 ASIC 芯片,它由谷歌从头设计,并专门用于机器学习工作负载。TPU 为谷歌的主要产品提供了计算支持,包括翻译、照片、搜索助理和 Gmail 等。 在本文中,我们将关注 TPU 某些特定的
    的头像 发表于 09-15 10:46 4.4w次阅读

    如何利用Google Colab的云TPU加速Keras模型训练

    TPU包含8个TPU核,每个核都作为独立的处理单元运作。如果没有用上全部8个核心,那就没有充分利用TPU。为了充分加速训练,相比在单GPU上训练的同样的
    的头像 发表于 11-16 09:10 1w次阅读

    CPU和GPUTPU是如何工作的到底有什么区别

    很多读者可能分不清楚 CPU、GPUTPU 之间的区别,因此 Google Cloud 将在这篇博客中简要介绍它们之间的区别,并讨论为什么 TPU 能加速深度学习。
    的头像 发表于 01-20 11:57 5152次阅读

    CPU、GPUTPU、NPU等的讲解

    CPU、GPUTPU、NPU等的讲解
    的头像 发表于 01-05 14:54 9806次阅读

    谷歌发布多模态Gemini大模型及新一代TPU系统Cloud TPU v5p

    谷歌亦发布新一代TPU 系统——Cloud TPU v5p,以帮助训练尖端的 AI 模型。目
    的头像 发表于 12-12 10:50 802次阅读
    谷歌发布多模态Gemini大<b class='flag-5'>模型</b>及新一代<b class='flag-5'>TPU</b>系统Cloud <b class='flag-5'>TPU</b> v5p

    Groq推出大模型推理芯片 超越了传统GPU和谷歌TPU

    Groq推出了大模型推理芯片,以每秒500tokens的速度引起轰动,超越了传统GPU和谷歌TPU
    的头像 发表于 02-26 10:24 384次阅读
    Groq推出大<b class='flag-5'>模型</b>推理芯片 超越了传统<b class='flag-5'>GPU</b>和谷歌<b class='flag-5'>TPU</b>