极智AI | 一文看懂Google TPU脉动阵列加速卷积计算原理

本文涉及的产品
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,视频资源包5000点
简介: 本教程详细解释了 Google TPU 脉动阵列加速卷积计算原理。

本教程详细解释了 Google TPU 脉动阵列加速卷积计算原理。

TPU 中计算卷积的方式和 GPU 不同,主要是依靠一种称为 “脉动阵列” 的硬件电路结构来实现的。脉动阵列的主体部分是一个二维的滑动阵列,其中每一个节点都是一个脉动计算单元,可以在一个时钟周期内完成一次乘加操作。脉动阵列中的行数和列数可以相等,也可以不相等,在每行每列的计算单元之间通过横向或纵向的数据通路来实现数据的向右和向下滑动传递。

举例:如下图,特征图像 F 大小为 3 x 3,通道数为 2;卷积核 W 和 G 大小为 2 x 2,卷积核个数为 2。

以这个例子来解释脉动阵列实现卷积加速的过程。在这个例子中,采用固定卷积核权重,横向和纵向脉动输入特征值和中间部分和的方式。如下图所示,首先将 2 个 2 通道 W 和 G 卷积核权重静态地存储到脉动阵列的计算单元中,其中对应同一个卷积核的 2 个通道权重被排列在同一列中。再将 2 个通道的输入特征图 F 排列展开,每一行都错开一个时钟周期,并准备依次输入到脉动阵列中。

当要用 2 个通道输入特征图 F 和卷积核 W 及 G 进行卷积时,F 首先通过重排,通过左侧数值载入器输入到脉动阵列最左边的一列中。输入值从上到下,每一行进入脉动阵列的数据都会比上一行延迟一个时钟周期。在第一个时钟周期内,输入值 F00 进入 W00 乘加单元与 W00 权重进行乘加运算,产生单元结果 Y00,此为 Y00 的第一部分和。脉动阵列第 1 个时钟周期的计算状态如下图。

在第二个时钟周期内,上一次 W00 乘加单元的部分和 Y00 被向下传递到 W01 乘加单元中,同时第二行输入值 F01 与 W01 相乘的单元结果与传递下来的 Y00 相加得到 Y00第二次部分和。而 F01 进入 W00 乘加单元中,进行乘加运算求出 Y01 的第一次部分和。与此同时 F00 向右滑动进入 G00 乘加单元中求出单元结果 Y10 的第一次部分和。脉动阵列第 2 个时钟周期的计算状态如下图。

以此类推,输入的特征值沿着脉动阵列的行水平方向不断向右滑动开启不同卷积核各自的部分和。而对应于每一个卷积核的部分和沿着脉动阵列的列垂直方向不断向下滑动并和当前计算单元的结果相累加,从而在每一列的最下方的计算单元中得到最终累加完成的对应于该卷积核所有通道的卷积结果。

这个例子中在第 8 个时钟周期会得到第一个卷积结果,如下图。

而从第 9 个时钟周期开始,如下图。每次都可以得到两个卷积结果,直到所有的输入特征图像都被卷积完毕。脉动阵列通过横、竖两个方向的同时脉动传递,输入值呈阶梯状进入阵列,顺次产生每个卷积核的最终卷积结果。

脉动阵列的特性决定数据必须按照事先安排好的顺序依次进入,所以每次要填满整个矩阵就需要一定的启动时间,而这段时间往往会造成硬件资源的浪费。启动时间通常可以通过脉动阵列的 “行数 + 列数 - 1” 计算得到。当度过启动时间后,整个脉动阵列进入满载状态,可以发挥出最大的吞吐率。

在上面的例子中采用了固定卷积核权重,横向脉动输入特征值,纵向脉动部分和的方式来计算卷积结果。同理,也可以采用固定部分和,横向脉动输入特征值,纵向脉动卷积核权重的方式来计算得到同样的结果。事实上,可以任意选择脉动三个变量中的两个而固定另外一个的方式来实现卷积计算,具体的选择会依据各种实现方式的实际情况和应用需求来决定。

需要指出的是,当计算的卷积核过大或者通道太多时,如果把所有通道的权重都串联在一列上,那么势必造成脉动阵列过于庞大或者畸形,不便于现实的电路设计。这时候往往采用分割计算、末端累加的方式来解决这个问题。系统会把多通道的权重数据分割成几个部分,每个部分都能够适合脉动阵列的大小。然后依次对每个部分的权重进行计算,计算完成的结果会临时存放在脉动阵列底部的一组加法累加器中。当换入另一组权重块后结果就会被累加,直到所有权重块都遍历完成,累加器累加所有的结果后输出最终值。

TPU 中的脉动阵列仅仅完成了卷积的工作,而完成整个神经网络的计算还需要其他计算单元的配合。如下图,矢量计算单元通过输入数据端口接收来自于脉动阵列中的卷积计算的结果,通过激活单元中的非线性函数电路来产生激活值,激活函数可以根据网络需求来定制。在适量计算单元中,还可以通过归一化函数对激活值进行归一化,再经过池化单元就可以对激活值进行池化输出。这些操作都由队列模块进行控制。例如队列模块可以通过配置参数的端口指定激活函数、归一化函数或池化函数,以及处理步长等参数。矢量计算单元处理完成后将激活值发送到片上的统一缓冲区中暂存,作为下一层网络的输入。TPU 按照这种方法,一层一层地完成整个神经网络的计算。

虽然脉动阵列主要用来加速神经网络的推理计算,但这个架构不光是只能处理卷积,它在进行通用矩阵计算时依然高效且强大,因此还可以用来完成除了卷积神经网络以外的其他一系列工作,比如全连接神经网络、线性回归、逻辑回归、分类(如K均值聚类)与视频编码和图像处理等。


logo_show.gif


相关文章
|
1月前
|
存储 人工智能 弹性计算
AI计算加速渗透、基础设施全面升级…云栖大会重磅发布全览
阿里云全面展示了全新升级后的AI Infra系列产品及能力。通过全栈优化,阿里云打造出一套稳定和高效的AI基础设施,连续训练有效时长大于99%,模型算力利用率提升20%以上。
186 27
|
20天前
|
机器学习/深度学习 存储 人工智能
AI与量子计算:推动计算科学的边界
【10月更文挑战第7天】AI与量子计算的融合,标志着计算科学进入了一个全新的时代。在这个时代里,计算能力的边界被不断拓宽,科技创新的速度不断加快。我们有理由相信,在未来的日子里,AI与量子计算将继续携手并进,共同推动计算科学向着更加智能、更加高效的方向发展。让我们期待这一天的到来,共同见证计算科学的无限可能。
|
3月前
|
机器学习/深度学习 人工智能 分布式计算
探索操作系统的未来:量子计算与AI的融合
【7月更文挑战第4天】在数字化时代,操作系统作为连接用户与硬件的桥梁,其发展直接影响着计算机科学的进步。随着量子计算和人工智能技术的兴起,传统操作系统面临着前所未有的挑战和机遇。本文将探讨量子计算与AI技术如何推动操作系统的进化,以及这一进程对软件架构、安全性和性能优化等方面的影响。通过分析当前技术趋势和未来展望,文章旨在为读者提供一个关于操作系统未来发展的全面视角。
|
5天前
|
人工智能
阅读了《文档智能 & RAG让AI大模型更懂业务》的解决方案后对解决方案的实践原理的理解
阅读《文档智能 & RAG让AI大模型更懂业务》后,我对文档智能处理与RAG技术结合的实践原理有了清晰理解。部署过程中,文档帮助详尽,但建议增加常见错误处理指南。体验LLM知识库后,模型在处理业务文档时效率和准确性显著提升,但在知识库自动化管理和文档适应能力方面仍有改进空间。解决方案适用于多种业务场景,但在特定场景下的集成和定制化方面仍需提升。
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI技术:从基础原理到实际应用的全面剖析
本文旨在为读者提供关于人工智能(AI)技术的全面了解。从探讨AI的基本概念和关键技术入手,逐步深入到AI在不同领域的应用实例,包括医疗、金融和自动驾驶等。同时,文章也详细讨论了当前AI技术面临的伦理问题和社会影响,以及可能的解决方案。最后,本文还展望了AI技术未来的发展趋势,帮助读者更好地理解这一前沿科技的现状与未来。
33 5
|
3月前
|
机器学习/深度学习 人工智能 安全
探索操作系统的未来:量子计算与AI的融合
【7月更文挑战第26天】随着科技的不断进步,传统操作系统正面临着前所未有的挑战和机遇。本文将深入探讨操作系统在量子计算和人工智能融合趋势下的发展前景,分析这一变革如何重塑我们对数据处理、系统安全和用户体验的认知。文章旨在为读者提供一个关于未来操作系统可能走向的全面视角,同时引发对现有技术革新的思考。
|
1月前
|
存储 人工智能 弹性计算
AI计算加速渗透、基础设施全面升级…云栖大会重磅发布全览
AI计算加速渗透、基础设施全面升级…云栖大会重磅发布全览
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
【AI大模型】ChatGPT模型原理介绍(下)
【AI大模型】ChatGPT模型原理介绍(下)
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
【AI大模型】ChatGPT模型原理介绍(上)
【AI大模型】ChatGPT模型原理介绍(上)
|
2月前
|
传感器 人工智能 监控