您当前的位置:网站首页>党参,姓名测试打分-爱情天气预报,给您最好的预防报告

党参,姓名测试打分-爱情天气预报,给您最好的预防报告

2019-08-14 06:18:56 投稿作者:admin 围观人数:202 评论人数:0次
叶凡

作者:王圣元

来历:王的机器

导言

从 2018 年 10 月到 2019 年 6 月,NLP 三大模型横空出世,别离是 Google 的 BERT,OpenAI 的 GPT-2和 CMU 和 Google 联手的 XLNet

除了模型强壮,咱们从新闻里看到最多的是便是练习时间长,并且费用惊人的贵。

  • BERT-large 模型在 16 个 Cloud TPU v3 下训女驸马练 4 天
  • GPT-2 模型在 32 个 Cloud TPU v3 下练习一周多
  • XLNet-large 模型在 128 个 Cloud TPU v3 下需求练习 2 天半

依据如下:

Training of BERT_LARGE姜小淘 was performed on 16 Cloud TPUs (64 TPU chips total). Each pretraining took 4 days to complete.-- BERT Paper

To clarity, it's 256 cores (8 cores per Cloud TPU). Training took a bit over a week.-- Open AI Author on Reddit

We train XLNet-Large on 512 TPU v3 chips for 500K steps with an Adam optimizer, linear learning rate decay and 电子书下载a batch size of 2048, which takes about 2.5 days.-- XLNet Paper

TPU v3 便是第三代 (2018) TPU,姿态如下。

而榜首代 (2015) 和第二代 (2017) 的 TPU 姿态如下 。

查了下第三代 TPU 每个中心的价格是每小时 8 美元。

那么来核算一下 BERT, GPT-2 和 XLNet 的练习本钱,它们别离用了 16、32、128 个 Pod,每个 Pod 含有 8 个中心 (core),核算

    南苑机场
  • BERT:16 8 24 4 = 12288 美元
  • GPT-2:32 8 24 7 = 43008 美元
  • XLNet:128 8 24 2.5 = 61440 美元

和新闻里边的报导符合:

  • BERT-large 模型在 16 个 Cloud TPU v3 下练习 4 天,花费 1.2 万美元
  • GPT-2 模型在 32 个 Cloud TPU法语翻译 v3 下练习一周多,花费 4.3 万美元
  • XLNet-large 模型在 128 个 Cloud TPU v3 下需求练习 2 天半,花费 6.1 万美元

扯了这么多,本帖只想弄清楚下面 What-Why-How 魂灵三问:

1、What:TPU 是什么?

2、Why:为什么 TPU 在神经网络上有用?

3、How:怎样玩 TPU + Keras?

What

TPU 是什么?

张量处理器(Tensor Processing Unit, TPU) 是 Google 为机器学习定制的人工智能加速器专用集成电路,专为 Google 的深度学习结构TensorFlow 而规划的。

那 TPU 和中万世战魂心处理器(Central Processing Unit, CPU) 和图形处理器(Graphics Processing Unit, GPU) 有什么区别呢?在这里咱们用「神经网络辨认手写数字」的比方来评论三者的不同。

神经网络

下图展现着神经网络来辨认手写数字的进程

1、输入是一张 2828 像素的图片

2、输出是一个 101 的向量 (数字有 10 个)

3、中心是一个极简的神经网络 (这不重要,紧记本帖意图是区别 CPU、GPU 和 TPU 在神经网络中的核算办法,因而网络越简略就越好懂)

整套核算大约分四个进程:

1、提取是非图画的像素矩阵 (2828),重塑 (reshape) 成向量 X

2、用权重 W 乘以 X

3、加上偏置 b

4、将 WX + b 用 softmax 转化成概率值

抱负状况当神经网络练习得比较好时,数字 8 对应的概率会比较大 (至少大于其它数字对应的概率),因而揣度图片里的数字是 8。

让咱们从头规划好问题,假定网络现已练习好了 (每个数字里的像素对应的权重现已核算出来了),给定新的图片,咱们对其分类。

为了简化展现,咱们将图片分红 9 个像素 (33)。给定新图片 (含数字 8),它的像素值和练习好的数字 7、8、9 对应的权重值如下。

然后别离核算 x 和 w7, w8 和 w9 的点积,如下面动图所示。终究找出点积最大的,假如 w8x 最大,那么该数字是 8。

下面三节别离解说 CPU、GPU 和 TPU 是怎样核算点积的 (或更通用的矩阵相乘)。

CPU

中央处理器 (Central Processing Unit, C党参,名字测验打分-爱情天气预报,给您最好的防备陈述PU) 是核算机的首要设备之一,功用首要是解说核算机指令以及处理核算机党参,名字测验打分-爱情天气预报,给您最好的防备陈述软件中的数据。

CPU 最大的特色便是通用,你能够用 CPU 做 PPT、网上银行转账,或运转神经网络辨认数字。但通用的东西往往功率不高,由于电脑在没有读到软件下一个指令前不知道要核算什么。此外,CPU 会将每一步的核算成果存储在内存里,而 CPU 里的算术逻辑单元 (Arithmetic Logic Units, ALU) 会不断的拜访存储器来读取和存储中心核算成果。深度神经网络会有许多核算,这时用 CPU 显着功率低下。

接着上面的辨认手写数字的比方,当核算 y = Wx + b 时,其间

W 是 39 的矩阵,x 是 91 的向量,b 是标量,因而 y 是 31 的向量,即「含数字 8 的图片中的像素」和「数字 7, 8, 9 的权重」的 3 个内积。

看下面动图,在点积里的乘法操作中,x 里边的 9 个元素先和 w7 里边的 9 个元素两两相乘;再和 w8 里边的 9 个元素两两相乘;终究和 w9 里边的 9 个元素两两相乘。

假如图片是高清五颜六色的,像素为 1921923 ≈ 1000000;假如练习集很大,有几百万张;假如网络外婆家是深层的,有几十层,即权重 W 有许多元素;那么像 CPU 这样按次序一步步核算点积会十分慢,并且内存也会溢出。

接着看看能并行核算的 GPU?

GPU

图形处理器 (Graphics Processing Unit, GPU) 是一种专门在个人核算机、作业站、游戏机和一些移动设备上运转绘图运算作业的微处理器。

和 CPU 比较为了能取得更大的吞吐量 (throughput),GPU 包括更多的 ALU,通常是 2500-5000 个。这样一个处理器能够一起履行上千的加法和乘法操作。

下面动图基本上便是把 CPU 那一个单元仿制了许多,并行核算了「含数字 8 的图片中的像素」和「数字 1 到 9 的权重」的 9 个内积。

GPU 核算尽管比 CPU 快许多,但基本上便是并行带来的优势,GPU 仍然是一个通用处理器,即能够支撑不同的应用程序和软件。

和 CPU 相同,在每一次核算中 GPU 需求拜访寄存器 (register) 或同享存储器 (memory) 来读取和存储中心核算成果。由于 GPU 在其数千个 ALU 上履行更多并行核算,因而它也会按份额添加拜访内存的能量。

终究看看专门为矩阵核算规划的 TPU?

TPU

TPU 是 google 专门为大型神经网络里边的大型矩阵运算而规划的,因而不是通用处理器。

TPU 不能做 PPT,不能网上银行转账,但它们能够以极快的速度处理神经网络的许多乘法和加法,一起耗费更少功率和占用更小的内存。它是怎样做到的呢?三个特色

1、16 位大脑浮点格局

2、脉动数组

3、Ring AllReduce

先卖个关子,ancient看看下图 TPU 怎样核算内积的。

看不懂没关系,下节「脉动数组」会娓娓道来。

WHY

为什么 TPU 在矩阵运算上高效?

TPU 中心由矩阵乘法单元 (Matrigymx Mutiply Unit, MXU) 和向量处理单元 (Vector Processing Unit, VPU) 组成的。MXU 担任矩阵乘法,VPU 担任向量转化向量,比方 relu 和 softmax。

但在神经网络中矩阵乘法仍是核算量最大的部分,因而咱们注意力放在 MXU 上。

大脑浮点

依据研讨发现,神经网络的猜测不需求 32 位浮点 (float32) 或 16 位浮点 (float16) 的核算精度。基于此,Google 自定义了一个 16 位大脑浮点 (bfloat16),并发现许多模型在运用 bfloat16 时,完成了与运用 float32 数值时相同的准确性。

bfloat16 格局为 [1:8:7],包括 1 个符号位、8 个指数位和 7 个尾数位,还有 1 个隐式尾数位。比较之下,float16 格局为 [1:5:10]

抛开细节不谈,从上图可看出,b卉卉女王float16 比 float16 具有更大的动态规模,和 float32 的动态规模适当。

TPU 支撑以 bfloat16 格局存储激活和梯度等值。这可削减内存中的数据巨细,使较大模型适用于相同的内存量。此外某些操作受内存带宽约束,按 bfloat16 格局存储受内存带宽约束的操作的输入和输出可削减有必要传输的数据量然后提速

下图展现了用 bfloat16 格局各种模型的提速份额,最高提速的 Resnet 到达了 32%,而最低提速的 Transformer 也有 5%。

脉动数组

和传统 CPU、GPU 比较,TPU 中的 MXU 有个特别的架构,称为脉动数组 (systolic array)。之所以叫「脉动」,是由于在此结构中,数据一波一波地流过芯片,与心脏跳动供血的办法类党参,名字测验打分-爱情天气预报,给您最好的防备陈述似。

让咱们看看一个脉动数组怎样履行神经网络核算,即履行 Y = WX + b 的核算,其波轮洗衣机中

脉动数组的操作一共分三步,输入的是 X 和 W,一次性输出的是 Y。

1、将权重 W (红点) 从左向右的流入数组。

2、将像素 X (灰点)从下向上的流入数组。

3、每个单元在每个距离中从左和从下只承受一个数据,将它们相乘并累加到之前的成果中,直到没有数据流入。

当「脉动」进程完毕后,Y 也核算出来了。

看不太懂?我来画个用脉动数组核算矩阵相乘的分化图。在实际问题中,数字有 10 类,数据有 m 个,像素有 784 个,下面公式列出每个矩阵的巨细。

在解说脉动数组核算时,咱们简化问题,假定数字只要 3 类,数据只要 3 个,像素只要 3 个,那么上面公式简化成

下面用 7 幅图开端脉动数组的扮演,一图胜千言,无需额定的文字来解说 (花了 1 个多小时画这些图,我现已完成了困难的部分,了解它变得很简略)。

这样看终究是不是一次性的核算出来矩阵 Y。

再看看上面的动图,是不是能够了解了?

其实脉动架构便是用了一个很简略的办法,让数据尽量在处理单元中多活动一瞬间。榜首个数据首要进入榜首个单元,通过处理今后被传递到下一个单元,一起第二个数据进入榜首个单元。以此类推,当榜首个数据抵达终究一个单元,它现已被处理了屡次。所以,脉动架构实际上是屡次重用了输入数据。因而,它能够在耗费较小的内存带宽的状况下完成较高的运算吞吐率。

环形 Reduce

关于含有巨大参数的神经网络,咱们在反向传达核算梯度时用于随机梯度下降算法 (Stochastic Gradient Descent, SGD) 时,必定要用分布式算法,假定有 P 个处理器:

  • 在 P-1 个处理器上分配不同批 (batch) 的数据,别离党参,名字测验打分-爱情天气预报,给您最好的防备陈述核算的梯度。
  • 将一切梯度同步到剩下一个处理器,求均匀后再发到其他 P-1 个处理器上。

以上描绘的便是分布式练习的参数服务器 (Parameter Server, PS) 办法。在这种办法之下,每个进程都有一到两个人物:作业线程 (worker) 或参数服务器。作业线程处理练习数据,核算梯度,并把它们传递到参数服务器上进行均匀。

但 PS 办法有两个问逐字五笔怎样打题:

1、每一轮练习迭代都需求 P-1 个处理器都将数据同步完再求均匀才算完毕,这样核算快的会等核算慢的,构成资源糟蹋。

2、只要一个处理器来和一切 P-1 个处理器通讯数据,当 P 很大时,通讯开支也很大。

为了处理这样的问题,百度提出了一种 Ring AllReduce 的算法。PS (左图) 和 党参,名字测验打分-爱情天气预报,给您最好的防备陈述Ring AllReduce (右图) 的通讯办法比照方下:

Ring AllReduce 的特色便是每个处理器就有一个左邻右舍,即左街坊和右街坊。每个处理器都能够从左街坊承受数据,向右街坊传送数据,构成一个环路 (ring),示例如下。

看不太懂?我来举个详细比方,假定有 3 个处理器,6 个数据点 (梯度值),每个处理器将其分红 3 块 (blocks)。Ring AllReduce 开始状况如下。

Ring AllReduce 分两个阶段:

  • Scatter Reduce:每一个处理器下一个处理器发送数据,下一个处理器接纳并累加到自己的数据上。
  • All Gather:当每个处理器某一块的数据现已完毕累加操作,就持续把下一个处理器的某一块的数据代替。

听起来很不流畅,看下面 4 幅图就懂了,2 幅关于 Scatter Reduce,2 幅关于 All Gather。

由于只要三个处理器,累加两次就够了,这是线程 1, 2, 3 的第 2, 3, 1 块现已存好了累加成果 (灰色框),剩下的操作便是将它们以环形的办法把「为累加好的成果」代替,即 All Gather 进程。

终究成果便是一切线程的一切块里都核算好了累加成果。

让咱们剖析一下总通讯量,6 个数据youjizzz N = 6,3 个处理器 P = 3,每次传送N/游水卷烟P = 2 个数据,那么在 Scatter Reduce 阶段通讯量为 (P-1) (N/P),在 All Gather 阶段通讯量也为 (P-1) (N/党参,名字测验打分-爱情天气预报,给您最好的防备陈述P),总通讯量为:

2(P-1) (N/P) = 8

假如按 PS 办法,总通讯量为:

2(P-1) N = 芦苇24

即便在这么小的数据量的状况下,Ring AllReduce 和 PS 的好坏现已很游戏身份证号码大全和名字显着了。再仔细剖析 Ring AllReduce 的总通讯量公式:

2(P-1) (N/P) = 2N(P-1)/P

它是和 P (处理器的个数) 无关的。

HOW

怎样用 TPU 跑 Keras 模型?

本节咱们就简略展现怎样在 Colab 里带 TPU 光环的 Keras 模型。

设置 Notebook

首要在 Colab 里边 Edit 项下选 Notebook settings,在 Hardware accelerator 下选 TPU,点击 SAVE。如下图所示。歙县

以下程序在 Tensorflow version 1.13.1 下运转。

引进数据

创立 Keras 模型

用一个 3 层卷积层加 2 层全衔接层的模型来辨认手写数字,我们不必纠结用 Keras 怎样创立这个模型。但榜首感觉是不是觉得 Keras 很漂亮,创立模型像拼乐高积木相同没有那么难。

你说对了,Keras 便是这么简略。

运用keras心得

创立 Keras TPU 模型

下面这一段代码最重要了。

try block 里边别离检测出 T徐子晴台湾PU,并创立 TPU 分布式战略,然后用 keras_to_tpu_model 来将 model 装成 tpu_model。

之后就能够愉快的练习模型了。速度很快,验证差错 99.38%。

总结

CPU 和 GPU 都是适用于通用问题,GPU 能够并行。

但在各种神经网络架构中,矩阵乘法,更谨慎来讲是张量乘法是核算量最大的部分,而 TPU 就为此而规划。专业人士处理专业问题,说的便是这个意思。

清晰 TPU 便是为了处理张量乘法后,工程师便可

  • 规划 bfloat16 数据格局能够在不影响精度的状况削减内存
  • 用脉动数组的办法来核算矩阵乘法然后进步吞吐量
  • 用 Ring AllReduce 算法来均匀梯度值然后削减通讯量

各方面都做精才干到达最好作用。别的 Google 真是一党参,名字测验打分-爱情天气预报,给您最好的防备陈述家巨大的公司,在 Colab 里边能够免费运用 TPU 玩模型。我们也能够去试试吧。

the end
爱情天气预报,给您最好的预防报告