Cloud TPU 新手指南

使用 Google 设计的定制专用集成电路 (ASIC),以经济高效的方式更快地训练机器学习 (ML) 模型。

张量处理单元 (TPU) 是专门设计用于处理机器学习应用计算需求的 ASIC 设备。Cloud TPU 系列产品通过可扩缩且易于使用的云计算资源,使 TPU 的优势惠及所有在 Google Cloud 上运行尖端机器学习模型的机器学习研究人员、机器学习工程师、开发人员和数据科学家。Cloud TPU 能够从具有 8 个核心的 TPU v2 节点扩容到具有 2048 个核心的完整 TPU v3 节点,可以提供每秒超过 100 千万亿次浮点运算的性能。

开始在 Compute Engine 上使用 Cloud TPU

主要功能

提升机器学习应用的速度 Cloud TPU 围绕 Google 设计的定制 ASIC 芯片而构建,这些芯片旨在加速深度学习计算。
为应用快速扩容 使用单个 Cloud TPU 设备(每秒 180 万亿次浮点运算)以低成本开始原型设计,然后使用更大的 Cloud TPU 节点无需更改代码即可纵向扩容。
经济高效地管理机器学习工作负载 Cloud TPU 价格优惠,可帮助显著降低训练和运行机器学习模型的费用。
从精心优化的开源参考模型开始。 使用 Google 研究和工程团队发布、优化并持续测试的一组不断增加的开源参考模型,例如 Mask R-CNN、AmoebaNet 和其他众多领先模型。

工作方式

为了更好地理解 Cloud TPU 如何让您和您的机器学习应用受益,请了解神经网络在机器学习应用中的工作方式。

在过去几年中,人工智能 (AI) 技术的许多重大突破都是通过深度神经网络实现的。这些网络的行为方式的灵感在某种程度上源自神经科学的发现,但“神经网络”这一术语现在已应用到广泛的数学结构,并不局限于符合生物学意义上的发现。许多最流行的神经网络结构(“架构”)都是以包括多个的层次结构形式组织的。最精确、最有用的模型往往包含许多层,“深度”一词由此而来。大多数深度神经网络接受输入数据(例如图片、音频、文本或结构化数据),应用一系列转换,然后生成可用来进行预测的输出。

例如,请设想一个识别手写数字图片(如下图所示)的单层神经网络:

用于数字处理的神经网络的示意图

在此示例中,输入图片是一个 28 x 28 的灰度模式像素网格。首先,每张图片会转换为一个具有 784 个数值的字符串,更正式地说是一个具有 784 个维度的矢量。在本例中,与数字 8 对应的输出神经元会直接接受输入像素,并将它们乘以一组称为权重的参数值,然后传递结果。上图中的每条红线都有一个单独的权重。

神经元通过将其权重与其接收的输入匹配,起到了相似度过滤器的作用,如下所示:

参数工作方式图示

这只是一个基本的示例,但也可说明更复杂的神经网络的核心行为。这类网络包含许多层,这些层对它们接收的输入数据执行许多中间转换操作。在每一层中,传入的输入数据(可能已经由前面各层大幅度更改)都会与网络中每个神经元的权重匹配。随后,这些神经元会将各自的响应作为输入传递给下一层。

每个神经元集的权重是如何计算的?答案是通过训练过程。此过程通常涉及反复处理大量已添加标签的数据集,这些数据集可能包含数百万甚至数十亿的带标签示例!即使使用功能强大的硬件,用大型数据集训练领先的机器学习模型也可能需要数周时间。Google 设计并打造了 TPU,使得完成类似的海量计算工作负载只需若干分钟或若干小时而不是数周,从而提高了工作效率。

CPU 的工作方式

上一个部分介绍了神经网络的现行定义及其涉及的计算类型。为了理解 TPU 在这些网络中的角色,我们不妨了解一下其他硬件设备是如何应对此类计算挑战的。首先,我们来看一下 CPU。

CPU 是一种基于冯·诺依曼结构的通用处理器。这意味着 CPU 与软件和内存协同工作,如下所示:

CPU 工作方式图示

CPU 最大的优点是它的灵活性。由于它采用冯·诺依曼结构,您可以为数以百万计的不同应用加载任何类型的软件。您可以使用 CPU 在 PC 中进行文字处理、控制火箭引擎、执行银行交易,或者通过神经网络对图片进行分类。

但由于 CPU 太灵活了,因此,在从软件读取下一条指令之前,硬件通常不知道下一个计算是什么。CPU 必须在 CPU 寄存器或 L1 缓存中为每一次计算存储结果。这种内存访问机制成了 CPU 架构的缺点,被称为冯·诺依曼瓶颈。神经网络规模庞大,意味着这些未来的步骤是完全可以预测的。每个 CPU 的算术逻辑单元 (ALU) 是存放和控制乘法器和加法器的组件,一次只能执行一次计算。CPU 每次都必须访问内存,这样就限制了总的吞吐量,并且会消耗大量能源。

GPU 的工作方式

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

GPU 工作方式图示

这种 GPU 架构非常适合并行处理大量运算(例如神经网络中的矩阵乘法)的应用。实际上,在用于深度学习的典型训练工作负载上,GPU 的吞吐量可比 CPU 高出一个数量级。这就是 GPU 成为深度学习领域中最受欢迎的处理器架构的原因。

不过,GPU 仍然是一种通用处理器,必须支持数以百万计的不同应用和软件。也就是说,GPU 与 CPU 存在同样的问题:冯·诺依曼瓶颈。对于数千个 ALU 中的每一次计算,GPU 都必须访问寄存器或共享内存,以读取和存储中间计算结果。由于 GPU 在它的数千个 ALU 上执行更多并行计算,因此它也会相应耗费更多能源来访问内存,这会由于复杂布线而增加 GPU 占用的空间。

TPU 的工作方式

Google 设计了 Cloud TPU,它们是专门用于神经网络工作负载的矩阵处理器。TPU 不能运行文字处理程序、控制火箭引擎或执行银行交易,但它们可以极快地为神经网络处理大量的乘法和加法运算,并且耗电量显著降低,占用的物理空间更小。

与其他设备相比,TPU 的一个优点是大幅度缓解了冯·诺依曼瓶颈。由于此处理器的主要任务是矩阵处理,因此 TPU 的硬件设计人员知道执行该操作的每个计算步骤。于是,他们能够布置数以千计的乘法器和加法器,并将它们直接连接形成这些运算符的大型物理矩阵。这称为脉动阵列架构。对于 Cloud TPU v2,总共有两个 128 x 128 的脉动阵列,它们在单个处理器中集成了 32768 个 ALU 以处理 16 位浮点值。

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

图示:TPU 如何从内存加载参数

然后,TPU 从内存加载数据。每次执行乘法运算时,系统都会将结果传递给后面的乘法器,同时进行求和。因此,输出将是数据和参数之间所有乘法结果的总和。在大规模计算和数据传递的整个过程中,根本不需要访问内存。

图示:TPU 如何从内存加载数据

因此,TPU 可以在神经网络计算中实现高计算吞吐量,并且耗电量显著降低、占用空间更小。

Cloud TPU 前提条件

设置 GCP 帐号 要使用 Cloud TPU 资源训练模型,您必须拥有 Google Cloud (GCP) 帐号并设置一个项目。
激活 Cloud TPU API 要训练模型,您必须激活 Compute Engine 和 Cloud TPU API。
向 Cloud TPU 授予对您的 Cloud Storage 存储分区的访问权限 Cloud Storage 存储分区允许您存储数据集。
选择 TPU 服务 选择您要用于启动 和管理 C loud TPU 的 Google Cloud 服务。您可以从 Compute Engine、Google Kubernetes Engine 和 AI Platform 中进行选择。
选择 TPU 类型 Cloud TPU 有几种不同的类型。请选择具有最佳功耗和成本效益组合的类型。您可以 通过使用抢占式 TPU 来节省费用。如需了解详情,请参阅 使用抢占式 TPU
创建和删除 Cloud TPU 在 Cloud TPU 上运行机器学习 (ML) 模型需要 Compute Engine、虚拟机和 Cloud TPU 资源。
配置工具 使用强大的命令行工具 ctpu 同时管理 Compute Engine 和 TPU您也可以使用自己熟悉的工具,例如 TensorBoard。
运行模型 我们创建了众多教程,便于您选择最适合您的应用的机器学习模型。

在寻找其他机器学习服务?

Cloud TPU 是 Google Cloud 提供的众多机器学习服务之一。其他可能对您有帮助的资源包括:

Video Intelligence API Video Intelligence API 可提取元数据、识别关键名词和注释视频内容,让您能对视频内容进行检索。通过调用简单易用的 REST API,您现可搜索目录中每个视频文件的每个时刻,并找到关键名词每次出现的位置及其重要性。还可以按视频、镜头或帧检索相关信息,将信号与干扰信息分离。
Cloud Vision 借助 Cloud Vision,您可以利用我们强大的预训练 API 模型从图片中挖掘深度信息,或者使用 AutoML Vision Beta 版轻松训练自定义视觉模型。该 API 可将图片快速归入数千种类别(例如“帆船”或“艾菲尔铁塔”)、检测图片中的各个物体和面部形象,还可查找和读取图片中包含的印刷体文字。借助 AutoML Vision,您只需极少的机器学习专业知识即可构建和训练自定义机器学习模型,以满足特定领域的业务需求。
Speech-to-Text 通过 Speech-to-Text,开发者可使用易用的 API 中的神经网络模型,将音频转换为文字。该 API 可识别 120 种语言和语言变体,支持您的全球用户群。您可实现语音命令控制、转录呼叫中心音频,还可执行其他操作。它可以使用 Google 的机器学习技术来处理实时流或预先录制的音频。
Text-to-Speech 借助 Text-to-Speech,开发者可以将文本合成为自然而逼真的语音(共有 32 种语音,并有多种语言和语言变体可供选择)。它应用了 DeepMind 在 WaveNet 上的突破性研究和 Google 的神经网络,以尽可能提供最高的保真度。有了这一简单易用的 API,您可以通过许多应用和设备与用户实现生动真实的互动。
Cloud Natural Language API Cloud Natural Language API 在简单易用的 REST API 中提供强大的机器学习模型,让用户了解文本的结构和含义。借助 AutoML Natural Language Beta 版,您无需广泛的机器学习专业知识即可轻松构建和训练机器学习模型。您可以使用 Cloud Natural Language API 来提取文本文档、新闻报道或博文中提及的人物、地点和事件等相关信息。您还可以使用它来了解社交媒体用户对您产品的感受,或者解析呼叫中心或通讯应用中的客户对话所体现的意图。
Cloud Translation Cloud Translation 提供了简单的程序化接口,可将任何字符串翻译成受支持的任何语言。Cloud Translation API 响应快速,因此网站和应用可以集成 Cloud Translation API,以便快速将源文本从源语言动态翻译为目标语言(例如,从法语翻译为英语)。除了此 API 之外,您还可以使用 AutoML Translation 测试版快速轻松地构建和训练您的项目或领域专用的高品质模型。

如需了解更多选项,请查看 Cloud AI 产品页面。

后续事项

想要详细了解 Cloud TPU?以下资源可能对您有所帮助。

快速入门:使用 Compute Engine 花几分钟时间了解如何通过 Google Cloud 设置和使用 Cloud TPU。
TPU Colab 使用各种免费的 Colab 体验 Cloud TPU。
Cloud TPU 教程 使用各种机器学习模型测试 Cloud TPU。
价格 了解 Cloud TPU 如何以经济高效的方式处理您的机器学习工作负载。
与销售人员联系 想要探讨特定的实现或应用?请与我们的销售部门联系。