【专利解密】谷歌如何优化神经网络训练芯片?

【嘉德点评】谷歌对AI芯片的研发起步较早 , 科技底蕴也相对雄厚 , 这其中就有很多值得我们借鉴的地方 。 国内企业要想在自研AI芯片领域获得更多的订单 , 必定少不了更多的付出与努力 。
集微网消息 , 近两年随着机器学习的不断发展 , 其网络模型也越来越复杂 , 除了在算法上的提升之外 , 越来越多的公司也开始投入到硬件的提升 。 互联网巨头进入自研芯片领域早已不是新闻 , 但在在互联网企业造芯的路上 , 谷歌跑在了最前面 。
神经网络是机器学习模型 , 每个模型采用一个或多个模型层来为接收的输入生成例如分类的输出 。 除了输出层之外 , 一些神经网络还包括一个或多个隐藏层 。 每个隐藏层的输出用作网络中的下一层(即 , 网络的下一个隐藏层或输出层)的输入 。 网络的每个层根据相应参数集的当前值 , 从接收的输入生成输出 。
为了解决神经网络算法在硬件上的加速部署 , 谷歌早在18年就申请了一项名为“专用神经网络训练芯片”的发明专利(申请号:201880018006.8) , 申请人为谷歌有限责任公司 。
此专利描述了与专用硬件芯片相关的技术 , 尤其是训练阶段的机器学习工作负载优化加速器 。
【专利解密】谷歌如何优化神经网络训练芯片?
文章图片
图1专用硬件芯片的高速连接拓扑示意图
图1表示了连接专用硬件芯片101a-101d的高速连接示例拓扑 , 专用硬件芯片101a-101d在板上以环形拓扑连接 , 每个芯片包含两个处理器(102a-h) 。 该拓扑是一维(1D)环面;在1D环面中 , 每个芯片直接连接到两个相邻芯片 。
其中 , 图中所示的处理器之间的线表示高速数据通信链路 , 同一芯片上的处理器通过芯片内接口链路进行通信 。 链路可以是半双工链路或者全双工链路 , 在半双工链路上 , 一次只有一个处理器可以发送数据 , 在全双工链路上 , 可以同时在两个方向上发送数据 。
【专利解密】谷歌如何优化神经网络训练芯片?
文章图片
【【专利解密】谷歌如何优化神经网络训练芯片?】图2用于训练神经网络的专用硬件芯片示意图
图2是用于训练神经网络的专用硬件芯片示意图图 。 如图所示 , 单个专用硬件芯片包括两个独立处理器(202a , 202b) 。 而每个处理器(202a , 202b)包含两种不同的核:计算核(203a , 203b , 例如 , 超长指令字(VLIW)机器)和稀疏计算核(205a , 205b , 即嵌入层加速器) 。
对于计算核而言 , 每个核(203a , b)针对密集线性代数问题都进行了优化 , 而且单个超长指令字就可以并行控制多个计算核 。 其中 , 每个计算核主要包含:标量存储器 , 向量存储器 , 标量处理器 , 向量处理器和扩展向量单元(即矩阵乘法单元(MXU) , 转置单元(XU) , 以及归约和置换单元(RPU) 。
而稀疏计算核(205a , b) , 它可以将非常稀疏的高维数据映射到密集的低维数据中 , 使得其余层处理密集打包的输入数据 。 例如 , 稀疏计算核可以在正在训练的神经网络中进行任何嵌入层的计算 。
为了进行这种稀疏到密集的映射 , 稀疏计算核使用预先构建的查找表 , 即嵌入表 。 例如 , 当存在一系列查询词作为用户输入时 , 每个查询词被转换为哈希标识符或独热编码矢量 。 使用标识符作为表索引 , 嵌入表返回相应的密集向量 , 该向量可以是下一层的输入激活向量 。 稀疏计算核还可以跨搜索查询词进行归约操作 , 以创建一个密集激活矢量 。 稀疏计算核进行有效的稀疏分布式查找 , 因为嵌入表可能很大并且不适合于一个专用硬件芯片的有限容量高带宽存储器 。
其实在使用中 , 我们可以在同一个系统上布置多个此种类型的专用芯片 , 以执行分发操作 , 这样就可以使系统有效地进行训练和推断计算 。 而且通过计算核与稀疏计算核的相互配合 , 更能进一步提升系统的整体计算性能 。
谷歌对AI芯片的研发起步较早 , 科技底蕴也相对雄厚 , 这其中就有很多值得我们借鉴的地方 。 国内企业要想在自研AI芯片领域获得更多的订单 , 必定少不了更多的付出与努力 。


    推荐阅读