用于训练神经网络的计算系统的制作方法

文档序号:10694103阅读:475来源:国知局
用于训练神经网络的计算系统的制作方法
【专利摘要】各技术和构造可减少确定优化问题(如神经网络的训练)的解所需的时间。可由并行地操作的多个节点确定对计算模型的修改。经量化的修改值可以在各节点之间传送以减少要传送的数据量。经量化的值可小至每一者一位。量化?误差值可被存储并用于量化后续修改。各节点可并行地操作且使计算和数据传输重叠以进一步减少确定解所需的时间。经量化的值可被分区且每一节点可合计对应分区的值。
【专利说明】用于训练神经网络的计算系统
[0001 ] 背景
[0002] 深神经网络对各种各样的识别问题而言是有用的。例如,使用上下文相关的深神 经网络隐马尔科夫模型(CD-DNN-HMM)来用于语音识别或语音-到-文本转录的声学建模技 术胜过使用常规基于高斯混合的HMM的声学建模技术。与基于高斯混合的HMM不同,CD-DNN-HMM使用具有多个隐藏层的人工神经网络("深神经网络")来直接建模所绑定的上下文相关 状态。然而,训练⑶-DNN-HMM来用于语音识别比训练基于高斯混合的HMM更加耗时。深神经 网络与其他办法相比的较大的训练时间量是将深神经网络用于识别问题(例如,语音识别) 的主要障碍。
[0003] 已作出尝试来通过使用并行化(例如,跨多个服务器独立地处理语言话音)改进常 规深神经网络的训练。在一批数以亿计的帧结束后,来自服务器的部分统计数据可被合并, 且经更新的模型可被分发给各服务器。然而,与数以亿计的帧相对应的经更新的模型的大 小通常超过可用计算资源的容量。
[0004] 概述
[0005] 本公开描述了用于在数学上优化例如用于训练深神经网络(DNN)的计算模型的解 的系统、方法以及计算机可读介质。在至少一个示例中,多个节点中的每一者确定计算模型 的修改值(例如,使用训练数据和DNN模型来计算出的梯度值)。各节点量化修改值并将经量 化的值传输给这些节点中的其他节点。每一节点中的更新模块根据接收到的经量化的值来 修改计算模型。本文描述的各示例技术确定DNN的梯度矩阵,使用所存储的误差矩阵来量化 梯度矩阵,更新所存储的误差矩阵,以及与其他节点交换经量化的梯度矩阵。
[0006] 提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本

【发明内容】
不旨在标识所要求保护的主题的关键或必要特征,也不旨在用于帮助确定所要求 保护的主题的范围。例如术语"技术"可指代上述上下文和通篇文档中所准许的系统、方法、 计算机可读指令、模块、算法、硬件逻辑或操作。
[0007] 附图简述
[0008] 参考附图来描述【具体实施方式】。在附图中,附图标记最左边的数字标识该附图标 记首次出现的附图。不同附图中的相同参考标记指示相似或相同的项。
[0009] 图1是描绘了用于实现在此描述的深神经网络的训练的示例环境的框图。
[0010] 图2是示出用于实现使用算法来训练深神经网络的训练引擎的示例方案的框图。
[0011] 图3是描绘了根据在此描述的各示例被配置成参与神经网络训练的示例计算设备 的框图。
[0012] 图4是示出训练深神经网络的示例过程的流程图。
[0013] 图5是示出用于在各节点之间交换数据以训练深神经网络的示例过程的数据流 图。
[0014] 图6是示出用于在各节点之间交换数据以训练深神经网络的示例过程的流程图。
[0015] 详细描述
[0016] 概览
[0017] 本文描述的示例提供了用于通过使用包括例如处理单元在内的资源来更高效地 交换数据以改进神经网络(例如,DNN)的训练速度的技术和构造。可使用专用的编程或用指 定指令来编程以实现指定功能的硬件来实现这样的资源。例如,资源可具有不同的执行模 型,诸如在用于图形处理单元(GPU)和计算机中央处理单元(CPU)的情况下。配置成用于训 练深神经网络的资源可以使用数据并行架构来提供DNN的快速训练。这可极大地扩展DNN可 在其中服务的使用领域,且可准许通过增加可在模型开发期间运行的模型调节周期的数量 来更快速地改进基于DNN的系统。在一些示例中,DNN可被快速地训练来为不能打字的人将 语音转换成文本,或为视觉受损者将文本转换成语音。在各示例中,DNN可被训练以促进用 户将信息或查询输入不具有键盘或小键盘的移动设备。
[0018] 本文描述的是用于训练神经网络(包括深神经网络,本文中称为DNN)以加速在执 行诸如语音识别、语音合成、回归分析或其他数据拟合之类的模式识别和数据分析中使用 的DNN的训练的增强技术。在例如被训练用于在此所述的语音识别或其他使用情况的DNN的 各示例中,DNN可以是上下文相关的DNN或上下文无关的DNN 13DNN可具有至少两个隐藏层。使 用本文的技术训练的神经网络可具有一个隐藏层、两个隐藏层、或两个以上隐藏层。在一示 例中,例如对于语音识别系统是有用的,本文描述的神经网络或DNN具有五和七之间的层 数。除非另外明确指明,本文描述的涉及DNN的技术还适用于具有少于两个隐藏层的神经网 络。在某些情况中,诸如用于语音识别,上下文相关的DNN可连同隐形马尔科夫模型(HMM) - 起被使用。在这些情况中,上下文相关的DNN和HMM的组合被称为上下文相关的DNN-HMM(CD-DNN-HMM)。从而,本文所述的用于训练DNN的技术可被应用于训练CD-DNN-HMM。本文描述的 技术可包括使用算法来将DNN的训练跨多个处理单元(例如,多核处理器的各核或多个通用 图形处理单元(GPGPU))并行化。相应地,可在多个处理单元上并行地处理DNN的多个层。
[0019] 诸如DNN等神经网络一般是用基于小批的随机梯度下降(SGD)来训练的。SGD可以 沿三个维度(模型参数、层、以及数据(以及它们的组合))并行化。在先前方案中实现的所有 三个并行化技术遭受非常高的带宽成本,这限制来自并行化的加速。例如,数据并行化需要 各计算节点交换并合并数以亿计的模型参数,这可比相应的并行化计算显著地花费更多时 间。结果,在这些方案中仅获得很小(如果有的话)加速。
[0020]本文的技术可包括对模型条纹化(model striping)的使用。在模型条纹化中,DNN 的输出层或任何隐藏DNN层可以跨多个处理单元被并行处理。
[0021] 这些技术可减少为特定目的(如语音识别)而训练DNN所使用的时间量。减少的训 练时间可导致在执行语音-文本转录或文本-语音合成时DNN的实现和使用的增加。
[0022] 在一些示例中,本文描述的用于DNN训练的算法可以在计算设备上执行,如智能电 话、平板、台式计算机、服务器、服务器刀片、超级计算机,等等。所得的DNN可被用在这样的 计算设备上。所得的DNN可被用在具有一个或多个输入设备(如物理键盘、软键盘、触摸屏、 触摸垫、话筒、相机等)的计算设备上,以向设备提供优化功能(如语音识别、图像识别和搜 索、以及语音合成)。
[0023]根据各示例的用于训练DNN以用于数据分析的各示例、场景和技术的示例在以下 对附图的描述中被更加详细地呈现。
[0024] 说明性环境
[0025]图1示出深神经网络(DNN)训练系统的各示例可在其中操作或诸如示例DNN训练方 法等数学优化方法可在其中执行的示例环境100。在一些示例中,环境100的各设备或组件 包括可经由一个或多个网络106彼此通信的计算设备102(1 )-102(N)(在本文单独地或共同 地用附图标记102来称呼)和计算设备104(1)-104(K)(在本文中单独地或共同地用附图标 记104来称呼)。在一些示例中,N=K;在其他示例中,Ν>Κ或Ν〈Κ。在一些示例中,计算设备102 和104可经由网络106与外部设备通信。
[0026] 例如,(诸)网络106可包括诸如因特网之类的公共网络、诸如机构或个人内联网的 专用网络,或专用和公共网络的某种组合。(诸)网络106还可包括任何类型的有线或无线网 络,包括但不限于局域网(LAN)、广域网(WAN)、卫星网络、有线网络、Wi-Fi网络、WiMAX网络、 移动通信网络(例如3G、4G等等)或它们的任意组合。(诸)网络106可利用通信协议,包括基 于分组的或基于数据报的协议,如网际协议(IP)、传输控制协议(TCP)、用户数据报协议 (UDP)、其它类型的协议、或它们的组合。而且,(诸)网络106还可包括便于网络通信或形成 网络的硬件基础的若干设备,如交换机、路由器、网关、接入点、防火墙、基站、中继器、主干 设备等等。网络106还可包括促进使用各种拓扑结构的总线协议的计算设备102、104之间的 通信,例如跨接开关、INFINIBAND开关或FIBRE CHANNEL(光纤通道)开关或中枢。
[0027] 在一些示例中,(诸)网络106可进一步包括能够实现到无线网络的连接的设备,诸 如无线接入点(WAP)。各示例支持通过WAP的连接性,WAP经由各个电磁频率(例如,无线电频 率)来发送和接收数据,包括支持电气和电子工程师协会(IEEE)802. 11标准(例如, 802.118、802.1111等)、其他标准(如蓝牙)或它们中的多者或组合的1八?。
[0028] 在各示例中,计算设备102(1)-102(N)或104(1)-102(K)中的一些能在集群或编组 的配置中操作,以例如共享资源、平衡负载、提高性能、或提供故障恢复支持或冗余性。计算 设备102、104可属于各种各样的类别或分类的设备,诸如传统的客户机类型或服务器类型 的设备、台式计算机类型设备、移动类型设备、专用类型设备、嵌入式类型设备和/或可穿戴 类型设备。由此,虽然被示为例如台式计算机、膝上型计算机、平板计算机或蜂窝电话,但是 计算设备102、104可包括多种多样的设备类型且不限于特定类型的设备。计算设备102可以 表示但不限于台式计算机、服务器计算机、web服务器计算机、个人计算机、移动计算机、膝 上型计算机、平板计算机、可穿戴接收机、植入式计算设备、电信设备、车载接收机、启用网 络的电视机、瘦客户机、终端、个人数据助理(PDA)、游戏控制台、游戏设备、该装置、媒体播 放器、个人录像机(PVR)、机顶盒、相机、计算设备中包括的集成组件、电器、计算机导航类客 户端计算设备、基于卫星的导航系统设备(包括全球定位系统(GPS)设备和其他基于卫星的 导航系统设备)、电信设备(如移动电话、平板计算机、移动电话-平板混合设备、个人数据助 理(PDA))、或配置成参与本文描述的DNN训练或操作的其他计算设备。在至少一个示例中, 计算设备102包括被配置成训练DNN的服务器和高性能计算机。在至少一个示例中,计算设 备104包括被配置成训练DNN例如以响应于来自话筒的语音输入提供文本数据的膝上型计 算机、平板计算机、智能电话、家用台式计算机、或其他计算设备。
[0029] 计算设备102、104可包括在插页108处所示的各组件。计算设备102、104可包括具 有诸如经由总线114可操作地连接到一个或多个计算机可读介质112的一个或多个处理单 元110的任何计算设备,总线112在一些实例中可包括系统总线、数据总线、地址总线、PCI总 线、Mini-PCI总线以及任何各种本地、外围和/或独立总线中的一者或多者、或它们的组合。 在至少一个示例中,多个处理单元110可通过内部接口总线(如PCIe)(作为网络106的替换 或补充)来交换数据。存储在计算机可读介质112上的可执行指令可包括例如操作系统116、 DNN训练引擎118、DNN操作引擎120以及可由处理单元110加载并执行的其他模块、程序或应 用。在未示出的示例中,计算设备102、104中的一者中的处理单元110中的一者或多者可例 如经由通信接口 122和网络106可操作地连接到计算设备102、104中的不同一者中的计算机 可读介质112。例如,用于执行本文各DNN训练步骤的程序代码可以例如经由网络106从服务 器(例如,计算设备102(1))下载到客户机(例如,计算设备KM(K)),且由计算设备104(K)中 的一个或多个处理单元110来执行。在一示例中,计算设备102(1)-102(Ν)包括DNN训练引擎 118,而计算设备104(1)-104(Κ)包括DNN操作引擎120。
[0030] 处理单元110可以是或可包括一个或多个单核处理器、多核处理器、中央处理单元 (CPU)、图形处理单元(GPU)、通用图形处理单元(GPGPU)或例如经由来自模块或API的编程 来配置以执行本文描述的功能的硬件逻辑组件(诸如加速器)。作为示例而非限制,可被使 用在处理单元110中或被用作处理单元126的硬件逻辑组件的说明性类型包括现场可编程 门阵列(FPGA)、程序专用的集成电路(ASIC)、程序专用的标准产品(ASSP)、片上系统(S0C)、 复杂可编程逻辑器件(CPLD)、以及数字信号处理器(DSP)。例如,加速器可表示混合设备,诸 如来自包括嵌入在FPGA结构中的CPU核的ALTERA或XILINX的一个。这些或其他硬件逻辑组 件可独立地操作,或在一些实例中,可由CPU驱动。
[0031] 处理单元110可被配置成执行安装在计算设备102上的操作系统116。在一些示例 中,处理单元110可以是或包括通用图形处理单元(GPGPU)。在又一些示例中,处理单元110 可以是现场可编程门阵列(FPGA)或另一类型的可定制处理器。在各示例中,计算设备102 (1)-102(N)中的至少一些可包括多种类型的多个处理单元110。例如,计算设备102(1)中的 处理单元110可以是一个或多个GPGPU和一个或多个FPGA的组合。
[0032] 计算设备102还可包括通过网络106启用计算设备102与DNN训练中涉及的其他联 网计算设备102或其他计算设备之间的有线或无线通信的一个或多个通信接口 122。这样的 通信接口 122可包括通过网络发送和接收通信的一个或多个收发机设备,例如网络接口控 制器(NIC),如以太网NIC。处理单元110可通过通信接口 122来交换数据。这一示例中,通信 接口 122可以是外围部件互连快速(PCIe)收发机,且网络106可以是PCIe总线。在一些示例 中,通信接口 122可包括但不限于,用于蜂窝、WI-FI、超宽带(UWB)、蓝牙或卫星传输的收发 机。通信接口 122可包括有线I/0接口,如以太网接口、串行接口、通用串行总线(USB)接口、 INFINIBAND接口或其他有线接口。为了简明起见,这些和其他组件从示出的计算设备102中 省略。
[0033]尽管在各示例中处理单元110被描述为驻留在计算设备102上且由通信接口 122连 接,但在一些示例中处理单元110还可驻留在不同计算设备上。在一些示例中,处理单元110 可驻留在对应的计算设备102上,且可经由通信接口 122通过网络106交换数据。在一些示例 中,处理单元110中的至少两者可驻留在不同的计算设备102上。在这样的示例中,同一计算 设备102上的多个处理单元110可以使用计算设备102的接口总线114来交换数据,而不同计 算设备102上的处理单元110可经由网络106交换数据。
[0034]在此描述的计算机可读介质(例如,计算机可读介质112)可包括计算机存储介质 和/或通信介质。计算机存储介质可包括有形存储单元,诸如以用于存储信息(诸如计算机 可读指令、数据结构、程序模块或其他数据)的任意方法或技术实现的易失性存储器、非易 失性存储器或其他持久或辅助计算机存储介质、可移动和不可移动计算机存储介质。计算 机可读介质112或存储器320(图3)可以使计算机存储介质的示例。由此,计算机可读介质 112或存储器320包括有形或物理形式的介质,该介质被包括在设备或作为设备的一部分或 外置于设备的硬件组件中,该介质包括但不限于:随机存取存储器(RAM)、静态随机存取存 储器(SRAM)、动态随机存取存储器(DRAM)、只读存储器(ROM)、可擦除可编程只读存储器 (EPROM)、电可擦除可编程只读存储器(EEPROM)、相变存储器(PRAM)、闪存、光盘只读存储器 (CD-ROM)、数字多功能盘(DVD)、光卡或其它光存储介质、磁带盒、磁带、磁盘存储、磁卡或其 他磁存储设备或介质、固态存储器设备、存储阵列、网络附连存储、存储区域网络、主计算机 存储或任何其它存储存储器、存储设备,或可用于存储并维护供计算设备访问的信息的存 储介质。
[0035]与计算机存储介质相反,通信介质可在诸如载波之类的已调制数据信号或其他传 输机制中体现计算机可读指令、数据结构、程序模块或其他数据。如本文所定义的,计算机 存储介质不包括通信介质。
[0036]在一些示例中,计算机可读介质112可存储能由(诸)处理单元110执行的指令,如 上面所讨论的,(诸)处理单元102可表示被结合到计算设备102中的处理单元。计算机可读 介质112还可存储可由外部处理单元(诸如由外部CPU或以上讨论的任意类型的外部处理器 或加速器)执行的指令。在各示例中,至少一个处理单元11〇(例如,CPU、GPU或加速器)被结 合在计算设备102中,而在一些示例中,至少一个处理单元110(例如,CPU、GPU或加速器中的 一者或多者)在计算设备102的外部。
[0037]计算设备102的计算机可读介质112可存储操作系统116。在一些示例中,操作系统 116不被使用(通常被称为"裸机"配置)。在各示例中,操作系统116可包括使计算设备102能 够或引导计算设备102经由各种输入(例如,用户控件、网络或通信接口、或存储器设备)来 接收数据并且使用处理单元110来处理数据以生成输出的各组件。操作系统116还可包括呈 现输出(例如,在电子显示器上显示图像、在存储器中存储数据、将数据发送给另一电子设 备等)的一个或多个组件。操作系统116可使得用户能够使用用户接口(未示出)与训练引擎 118的模块交互。附加地,操作系统116可包括执行通常与操作系统相关联的各种功能(例 如,存储管理和设备内部管理)的组件。
[0038] 说明性组件
[0039]图2是解说用于实现使用算法来训练深神经网络(DNN)204(或多个DNN,且同样全 部)的训练引擎202(如训练引擎118)以及用于实现数据分析引擎206(如DNN操作引擎120) 来操作经训练的DNN 208的示例技术200的框图。训练引擎202可以使用计算设备210来训 练,在一些情况下,计算设备210可包括计算设备102。数据分析引擎206可以使用诸如计算 设备104等计算设备来实现。为清楚起见,实现数据分析引擎206的分开的计算设备在图2中 未示出。在至少一个示例中,计算设备210实现训练引擎202和数据分析引擎206两者。计算 设备210可包括一个或多个处理单元212(1)-212(N),这可表示以上参考图1讨论的处理单 元110(1)-110(N)。在本文中,处理单元212(1)-212(N)单独地或共同地用附图标记212来称 呼。在一些示例中,处理单元212可以使以上参考图1讨论的处理单元212,例如GPGPU。处理 单元212可以通过总线114或网络106(这两者都在图1中)来交换数据。处理单元212可以执 行DNN训练块214的指令,包括DNN 204、训练引擎202、训练数据216、以及训练数据216的各 小批(minibatch) 218。在下文讨论小批218。
[0040] DNN训练可由多个节点以并行方式执行来减少训练所需的时间。贯穿本公开,术语 "节点"指的是配置成这样的并行DNN训练布置的一部分的设备或设备的一部分。在至少一 个示例中,训练引擎202在多个计算设备210中的每一者上执行,且,每一计算设备210恰好 具有一个单核处理单元212。在这一示例中,每一这样的计算设备210是一节点。在一些示例 中,训练引擎202在具有多个多核处理单元212的单个计算设备210上执行。在这样的示例 中,多核处理单元212的每一核表示一节点。也可使用这些极端之间的其他组合和点。例如, 单独的加速器(例如,FPGA)可包括一个或多个节点。在其他示例中,处理单元212的多个核 可被配置成一起操作来作为单个节点。
[0041] 训练引擎202可使用算法220来训练DNN 204以用于执行数据分析,如用于语音识 别。DNN 204可以是多层感知器(MLP)。如此,DNN 204可包括底部输入层222(1)和顶层222 (L)(整数L>1)以及多个隐藏层,如多个层222(2)-222(3)。在本文中,层222(1)-222(L)单独 地或共同地用附图标记222来称呼。在使用上下文相关的DNN的一些示例中,DNN 204可包括 总共8层(N=8)。在各示例中,DNN 204可以是上下文相关的DNN或上下文无关的DNN。训练数 据216可由算法220用作训练DNN 204的训练数据。训练数据216可以包括包含来自人类说话 者的样本语音的集合的语音语料库。例如,语音语料库可包括从美国或加拿大的北美英语 的说话者收集的北美英语语音样本。然而,在其他示例中,取决于要被识别的语音的所需语 言或用于类似手写识别或图像分类之类的不同应用的其他种类的训练数据,训练数据216 可包括其他相应语言(如中文、日语、法语等)的样本语音。训练数据216还可包括与语料库 的正确识别或分类答案有关的信息。使用这一信息,可以由DNN 204检测语料库的处理中的 误差。这一信息可被用于例如计算相关于例如下式(1)的交叉熵准则的值D的模型参数的梯 度。在各示例中,这一信息被用于计算诸如均方误差("二次成本")函数等准则的值。训练数 据216还可包括第二语料库的测试集合以及该第二语料库的正确分类数据。可在测试集合 上评估DNN 204的性能以调整训练,使得DNN 204在训练语料库的限制之外高效地执行。 [0042]由算法220所执行的计算可以跨处理单元212来并行化。例如,在后向传播期间,由 处理单元212(1)执行的对输入数据的计算可产生第一计算结果。该第一计算结果可被流水 线传送到处理单元212(2)用于进一步计算来生成第二计算结果。与第二计算结果的生成同 时,处理单元212(1)可能正在处理额外的输入数据以生成第三计算结果。在至少一些示例 中,与第二计算结果的生成同时,处理单元212(1)可能正在将第一计算结果的至少一部分 传送给另一处理单元212。处理单元212或节点的其他示例的这些并发计算可造成训练DNN 204的计算的流水线化,且因此造成由于所产生的计算并行化而造成的计算时间的减少。处 理单元212或节点的其他示例的并发计算和通信可造成等待数据到达节点的减少的延迟时 间且因此造成总体计算时间的减少。
[0043]在各示例中,算法220执行的计算可使用一个或多个技术来增强,如批选择224、量 化226、模型条纹化228、交换230、以及数据传送并行化232。因为训练数据216由算法作为输 入样本的各小批218来处理,如下所述,所以批选择224可包括根据所选准则来配置输入样 本批或小批的大小以平衡计算准确度和执行效率。在一示例中,该大小可被选择成使算法 220的计算准确度和执行效率两者最大化。在一示例中,该大小可被选择成使算法220的执 行效率最大化,同时提供所选的计算准确度水平。批选择224可作为算法220的一部分来执 行或作为与算法220分开的代码模块来执行,如图所示。在至少一个示例中,计算子小批的 梯度,如下所述。
[0044] 此外,DNN 204中的层222(1 )-222(L)可由于DNN 204的各层中的单元数的差异而 具有不同大小。例如,DNN 204中的最大层可具有比一个或多个最小层的大小大10倍的大 小。因此,可能更有效的是将某一多核处理器专用于处理最大层,而在另一多核处理器上处 理最小层中的两个或更多个。这样的编组可减少往返延迟并提高效率。
[0045]量化226通过降低表示数据值的精确度来减少在各节点之间发送的信息量。算法 220可以在各节点之间转移例如神经网络模型的梯度值。梯度值可以是32位IEEE 754浮点 值(C语言"f loat"值)、64位(C"double")值、或其他位深的值。量化226可包括从一个节点传 送梯度值的表示(例如,近似),该表示使用比梯度值少的位,例如少于32位,例如1位。量化 226还包括逆操作"重构",即将在节点处接收到的经量化的值解释成具体32位值或具有比 梯度值更高的精确度或位深的其他值,例如一位以上。量化226包括跟踪"误差值",即表示 梯度值与它们的经量化表示之间的差异的值,以及部分基于误差值来确定量化值。这有利 地准许通过在连续梯度值上散布量化误差来维持训练过程的准确度。量化226在下文讨论, 例如参考式(1〇)、(11)、(12)、(13)、(14)以及(15)。在下文参考式(10)讨论的示例中,通过 在量化之前将先前小批的误差加到当前小批的梯度值来确定量化值。
[0046] 模型条纹化228是由多个相应处理单元(如处理单元212的多个处理器)对DNN 204 的计算模型的各部分的处理。模型条纹化228在本文中也被称为"模型并行化"。
[0047] 交换230是在各节点之间传输梯度值。这准许以数据并行的方式跨大量节点高效 地计算模型更新。这进而减少训练DNN 204所需的流逝时间。在各示例中,交换230结合量化 226来执行以在各节点之间交换经量化的梯度值。交换230可包括将各梯度值分区并执行分 布式归纳(all-reduce)来将梯度值的更新提供给所有节点。交换230在下文参考图5和6来 讨论。
[0048] 算法220的计算迭代可执行以下步骤:输入数据的前向传播、误差后向传播、以及 模型更新。数据传送并行化232可包括将来自算法220的某个计算迭代的输出数据的流传送 与该计算迭代中的其他步骤并行化。例如,梯度矩阵可与计算并发地传送。在流传送时间比 计算时间短的情况中,这一并行化可减少或消除在执行计算时由于算法220的执行期间各 处理单元之间的数据交换造成的时间延迟。在至少一个示例中,前向传播、后向传播以及模 型更新步骤是以该次序执行的。
[0049]由此,通过使用算法220和训练数据216,训练引擎202可从DNN 204产生经训练的 DNN 208。进而,数据分析引擎206可使用经训练的DNN 208来从输入数据236产生输出数据 234。在一些示例中,数据分析引擎206可以是语音一文本引擎,它使用采用经训练的上下文 相关的DNN-HMM形式的经训练的DNN 208。语音-到-文本引擎可使用经训练的上下文相关的 DNN-HMM来以输出文本的形式从采用输入语音形式的输入数据236产生输出数据234。数据 分析引擎206可在计算设备210或类似于计算设备210的计算设备上执行。此外,数据分析引 擎206可以从计算设备210(它可以是图1的智能电话计算设备104(5))的话筒和音频处理组 件接收实况输入数据236。在各示例中,数据分析引擎206可从媒体文件或流接收输入数据 236,例如用于媒体文件/流中说出的内容的音频索引的目的。在一些示例中,数据分析引擎 206还可以是文本-到-语音引擎(它使用经训练的上下文相关的DNN来基于输入文本(输入 数据236)合成输出语音(输出数据234))或手写识别引擎。
[0050] 在一些示例中,用本文描述的技术(例如,技术224-232)中的一者或多者来增强的 算法220可被实现来在展示类似特性的其他情形下产生经训练的上下文无关的DNN 208。以 此方式,出于各种数据分析目的,可用合适的训练数据训练上下文无关的形式的DNN 204。 所述特性可包括导致延长的处理时间的更大的训练数据集(如大于5000万、13亿等个样 本)、其中DNN的每个网络的输出超过阈值(如大于两千、四千等个数据输出)的DNN结构、等 等。数据分析目的可包括将经训练的上下文无关的DNN用于诸如图像识别、手写识别、计算 机视觉、视频跟踪等之类的活动。
[0051] 图3是示出可表示计算设备102、104、210的计算设备300的示例组件的说明性示 图。计算设备300可实现用于训练DNN 304的训练引擎302,如训练引擎118、202。计算设备 300可被用于确定对一个或多个数学优化问题(例如数学最小化问题)的解。例如,通过示例 性随机梯度下降(SGD)过程的DNN训练可涉及数学上使例如交叉熵D最小化(式(1))。计算设 备300可被配置成包括或充当一个或多个节点。在各示例中,DNN 304可以是上下文相关的 DNN或上下文无关的DNN。
[0052] 计算设备300可包括一个或多个处理单元306,其可表示处理单元110、212。处理单 元306可包括例如以上描述的处理单元类型,诸如CPU类型或GPGPU类型处理单元。在各示例 中,计算设备300可以是能够主控一个或多个处理单元306来处理数据的服务器、台式计算 机、另一类型的电子设备、或上述另一设备类型、或它们中的任何的组合。
[0053] 计算设备300还可包括通信接口 308,其可表示通信接口 122。例如,通信接口 308可 包括诸如NIC等通过网络发送和接收通信的收发机设备,例如如上所述。如此,计算设备300 可具有网络能力。例如,计算设备300可以经由一个或多个网络106(如因特网)来与其他电 子设备(例如,膝上型计算机、服务器等)交换数据。
[0054]计算设备300还可包括一个或多个输入/输出(I/O)接口 310,以允许计算设备300 与输入/输出设备(未示出)进行通信,输入/输出设备诸如包括外围输入设备(例如,键盘、 键区、鼠标、笔、游戏控制器、语音输入设备(如话筒)、话音设备设备、或语音识别设备、触摸 输入设备、姿势输入设备(如触摸屏)等)的用户输入设备和包括外围输出设备(例如,视觉 显示器、打印机、音频扬声器、触觉输出等)的输出设备。计算设备300可经由与任何其他合 适的设备的I/O接口 310或使用其他电子/软件交互方法进行通信。这样的通信可被用在例 如实现数据分析引擎206的计算设备300上。输入数据236可经由I/O接口 310例如从用户或 计算机系统(如监视系统)接收,且输出数据234可经由I/O接口 310例如向用户或计算机系 统(如报告系统)提供。
[0055]计算设备300还可包括一个或多个计算机可读介质312,它可表示计算机可读介质 112。计算机可读介质312可包括操作系统,例如操作系统116(为清楚起见省略)。在示出的 示例中,计算机可读介质312包括数据存储314。在一些示例中,数据存储314包括结构化或 未结构化的数据存储,如数据库或数据仓库。在一些示例中,数据存储314包括语料库或具 有一个或多个表、阵列、索引、存储的过程等的关系数据库以实现包括例如超文本标记语言 (HTML)表格、资源描述框架(RDF)表格、web本体语言(OWL)表格或可扩展标记语言(XML)表 格的数据访问。数据存储314可存储数据以用于对计算机可读介质312中所存储的和/或由 处理单元和/或加速器306执行的进程、应用、组件、和/或模块的操作。在至少一个示例中, 数据存储可以存储训练数据316、DNN 304或其他数学模型、用于训练DNN 304的数据(如临 时变量)、经训练的DNN 318、或它们的组合。以上提到的数据中的一些或全部可被存储在一 个或多个处理单元306板载上的分开的存储器320上,诸如在CPU类型处理器、GPU类型处理 器、FPGA类型加速器、DSP类型加速器或另一加速器板载上的存储器。存储器320可包括例如 CPU或GPU高速缓存存储器。
[0056]在至少一个示例中,一种系统包括其上具有优化问题的多个模块和计算模型的一 个或多个计算机可读介质312。例如,计算设备300的计算机可读介质312可以存储DNN训练 引擎302的各模块。计算模型可包括例如神经网络模型,如DNN 304。该系统可包括多个节 点,例如计算设备300或在其上执行的节点。节点可包括操作親合到计算机可读介质312中 的至少一者的至少一个处理单元306 (例如,处理器或处理器的核)306。处理单元306可被适 配成互通信并执行多个模块中的各模块。例如,计算设备300可包括一个或多个节点并经由 网络106与其他计算设备300的节点通信。该系统中计算设备300的节点可如上所述地操作 以确定优化问题的修改值,例如神经网络训练的梯度。
[0057]存储在DNN训练引擎302的计算机可读介质312上的模块可包括一个或多个模块或 API,它被示为批选择模块322、量化模块324、更新确定模块326、更新模块328、传送模块 330、以及合计模块332。各模块还可包括模型条纹化模块(例如实现模型条纹化228)和数据 传送并行化模块(例如,实现数据传送并行化232)(为清楚起见这两者都被省略)。模块的数 量可变得更高或更低,且各类型的模块可按各种组合被使用。例如,与示出的模块相关联描 述的功能可被组合以由更少数量的模块或API执行或可被划分并由更多数量的模块或API 执行。例如,量化模块324和传送模块330可被组合在执行这两个功能的单个模块中。在各示 例中,处理单元306可经由总线334访问计算机可读介质312上的模块,该总线232可表示图1 的总线114。通信接口 308和I/O接口 310也可经由总线334与处理单元306通信。
[0058]在一示例中,各模块包括配置成确定计算模型的修改值的更新确定模块326。量化 模块324可被配置成使用(例如结合)所存储的误差值来量化所确定的修改值并使用所确定 的修改值和经量化的修改值来更新所存储的误差值。这可以例如以上参考量化226所描述 的那样完成。传送模块330可被配置成将经量化的修改值中的至少一些传送给各节点(例 如,处理单元306)中的至少一个其他节点。这可以例如以上参考交换320所描述的那样完 成。传送模块330还可被配置成接收来自其他节点的修改值,且合计模块332可被配置成合 计数据存储314中的数据与从其他节点接收到的数据。在一个示例中,传送模块330的操作 在下文参考图5和6讨论。更新模块328可被配置成根据接收到的经量化的修改值来修改所 存储的计算模型。更新模块328可被配置成根据由合计模块332提供的经合计的接收到的修 改值来修改所存储的计算模型。这些功能在下文进一步讨论。
[0059]更新确定模块326和更新模块328可以使用算法220基于训练数据316(它可以是语 音语料库)来训练DNN 304。在出于语音分析目的来训练DNN 304的情况中,DNN 304可以是 连同HMM-起被使用的上下文相关的DNN。在一些示例中,DNN可以是上下文无关的DNN13DNN 304可以是MLP,MLP将给定观察向量〇(例如,音频数据)的类s(例如,三音素(triphone)或 senone)的后验概率PsIc1(Slo)建模成对数线性模型的(L+1)个层的栈。根据式(1)、(2)以及 (3),给定隐藏层的输入向量Λ前L层(1 = 0...L-1)对隐藏二元向量h1(隐藏层的输出)的后 验概率进行建模,而顶层L对所需类后验进行建模。式(1)、(2)以及(3)使用权重矩阵W 1和偏 置向量a1,其中
子别是h1和Z1U 1)第j个分量。
[0060]
[0061]
[0062]
[0063] 对所有隐藏变量的全速求和(full-out summation)有时是不可行的。在这种情况 下,这一总和可通过"平均场近似"来逼近,其中到隐藏层的输入V1被当作前一层的对应输 出向量h1的期望值。进一步,为了用于DNN 304,状态后验?5|。(8|〇)可通过除以它们的先验 来被转换成缩放的似然性。
[0064] 因此,更新确定模块326和更新模块328可以根据式(4)中所示的交叉熵准则D来训 练DNN 304:
[0065]
(4)
[0066] 通过使用图5所示的随机梯度下降(SGD),其中学习速率是ε:
[0067]
(5)
[0068] 梯度次P/在式(6)、(7)、(8)以及(9)中示出,具有误差信号eHt),逐分量导数 Oy(Z) = Oj(Z) · (l-Oj(z)),以及(log softmax)j'(z) = 5s(t),j-softmaxj(z),以及 Kronecker 增量 δ "
[0069]
[0070]
[0071]
[0072]
[0073] 达些寺式怩1兴J Ρ」仕双字上1 兀化父义燜的公式。
[0074] 在至少一个示例中,更新确定模块326基于从训练数据316选择的小批218来确定 DNN 304的各梯度,例如沒值,式(6)。更新确定模块被配置成使用随机梯度下降算法 来确定修改值。更新模块328基于来自一个或多个节点的梯度(修改值)(式(5))修改例如 DNN的所存储的计算模型。量化模块324和传送模块330合作来按需向各节点提供所确定的 梯度。以下将结合图5-6讨论传送的各示例。
[0075] 对DNN 304的训练可通过使用多个节点(例如,多个处理单元306)以并行化方式 (即同时执行多个计算)将后向传播的计算流水线化。在各示例中,流水线化不被使用。在一 些示例中,节点中的一者或多者在计算的同时进行通信。
[0076] 收敛(即,训练完成)可通过使用来自训练数据3116的随机采样的帧318的不同大 小的各批(本文中称为"小批")执行随机梯度下降来达成,如以上在式(5)中描述的。小批的 大小可受到算法220的并行化计算性质的限制。例如,对DNN 304的模型更新被用于算法220 的计算迭代,模型更新涉及处理单元之间的数据交换。然而,跨多个处理单元的模型更新可 在算法220的执行期间使用高带宽量。在一个示例中,DNN 304(具有7个隐藏层)可包括数以 亿计的参数。在这样的示例中,对相关于DNN 304的样本帧的合理大小的小批的处理可被转 换成由节点中的每一者收集和重新分发400兆字节(MB)价值的梯度。
[0077] 用于训练DNN的单独小批的大小可受两个因素的约束。小批大小的上限约束是模 型更新的频率。样本帧128的小批的小批大小越大可导致越少的模型更新。然而,增加批大 小可导致计算准确度的损失,尤其是在算法220的早期计算迭代期间。计算准确度的这种损 失可导致算法220延长的执行时间来达到收敛,即完成DNN 304的训练。在极端情况下,延长 的执行时间可甚至导致算法220不能达到收敛,即不能完成训练。小批大小的下限约束是节 点以及其中的处理单元306的利用效率。节点所执行的各计算周期的使用效率可随样本帧 小批218的小批大小的减小而降低。从而,小批大小的过度减少还可能导致低效,即延长算 法220达到收敛的执行时间。
[0078] 在至少一个示例中,批选择模块322可以基于所配置的小批大小将训练数据316分 成各随机采样的帧小批218,例如如以上参考批选择224描述的。小批的示例在下文参考图5 讨论。批选择模块322可以基于处理单元之间的数据传送速率和处理单元306每秒能够执行 的操作数来配置样本帧小批218的小批大小。为提高计算效率,小批大小可被设置成使得对 小批执行计算所需的时间约等于将与小批相关的数据传送给和传送出节点所需的时间。在 至少一个示例中,小批大小被选择得尽可能高同时至少提供所选择的准确度,且节点数量 被选择以使得使用所选大小的小批执行计算的时间基本上等于传递所选大小的小批的梯 度所需的时间。这准许数据传输与计算重叠。例如,给定能够进行每秒2-4万亿次浮点运算 (TFLOPS)的2-4个GPGPU的阵列,以及GPGPU之间的6G字节(GB)/秒的传送速率,小批大小可 以在每样本小批256至1024个样本帧的范围内。
[0079] 在至少一个示例中,在处理单元306的数据传输速率相对高于处理单元306的执行 速度时,批选择模块322可以配置较大的小批大小。相反,在处理单元306的执行速度相对高 于处理单元306之间的数据传送速率时,批选择模块322可以配置较小的小批大小。
[0080] 算法220所执行的示例计算迭代可执行以下步骤:输入数据的前向传播、误差后向 传播、以及模型更新。这些步骤可按所列次序或另一次序执行。输入数据的前向传播可由式 (1)、(2)以及⑶描述,误差后向传播可由式⑶描述,且模型更新可由式(5)描述。
[0081] 进一步,数据传送并行化232技术涉及数据传送与计算的并行化。数据传送并行化 232的第一部分可在执行误差后向传播步骤之后发生。在这一部分中,来自处理某些数据或 训练数据316的一部分的节点处的计算的输出数据可被流传输到处理DNN 304的模型或训 练数据316的不同部分的另一节点。这种流传送可与模型更新步骤或输入数据前向传播步 骤并行地或部分并行地执行,因为模型更新步骤和前向传播步骤使用与所述输出数据不同 的数据。同样,在执行输入数据前向传播步骤之后,来自一个节点处的计算的输出数据可被 流传输到另一节点。这种流传送可与对另一误差后向传播步骤的误差计算并行地或部分并 行地执行。从而,在其中流传送时间比计算时间短的示例中,对数据传送并行化232的使用 可减少或消除由多个处理单元之间的数据交换导致的任何时间延迟。
[0082] 如上所述,模型条纹化228是跨多个节点(包括处理单元,如处理单元306)并行地 处理DNN 304的各部分。每一节点可以计算梯度条纹(部分)。梯度条纹随后可例如被分发给 其他节点,例如各处理单元306中的处理单元,或在各节点之间交换以用于完成模型的当前 迭代的计算(例如,使用训练数据的当前小批来训练计算)。在各示例中,模型条纹化228可 与数据并行化一起使用,例如通过跨多群模型并行节点并行地运行数据。数据并行化在下 文描述,例如参考式(16)。在一示例中,模型条纹化228可与层并行化一起使用以准许更灵 活地并行地处理各层。
[0083]在用于计算模型的数学优化的系统的至少一个示例中(例如,用于神经网络训练, 如DNN训练),节点中的每一者包括操作耦合到相应计算机可读介质312的多个处理单元 306。在这一示例中,每一处理单元306被配置成至少执行更新确定模块326。在一示例中,该 系统可包括通信地连接各节点的纵横结构(例如,图1的网络106)。各节点可被配置成执行 传送模块330以经由纵横结构与执行更新确定模块326同时地传送经量化的修改值中的至 少一些。在一些示例中,每一节点的至少一个处理单元306可包括配置成执行更新模块328 和量化模块324的通用图形处理单元(GPGPU),以及配置成执行传送模块330的中央处理单 元(CPU)〇
[0084]根据各示例的计算机可读介质312上具有计算机可执行指令。计算机可执行指令 在被执行时配置计算机(例如,计算设备300或其中的处理单元306)来执行各操作。各操作 可包括下文参考图4-6讨论的操作。在至少一个示例中,各操作可包括使用训练样本来确定 神经网络模型的梯度的第一值。这可由更新确定模块326来完成。包括随机梯度下降和 Hessian-free方法的后向传播技术可由更新确定模块326中的指令来控制。
[0085]各操作还包括例如通过传送模块330传送梯度的第一值的的一部分并接收与梯度 的第一值的第二不同部分相对应的第二值。各操作可包括使传送和接收重叠。重叠的各示 例在图5中示出。
[0086] 值的第一和第二部分可对应于模型的不同条纹,例如如下文参考图5讨论的。例 如,图5的节点1传送的梯度的第一值的的一部分可以是与DNN 304的子集2相对应的条纹 518。节点1可以接收条纹522,这对应于DNN 304的不同子集1。在该示例中,第一值的对应第 二部分是条纹516。
[0087] 各操作还可包括合计第二部分(例如,条纹516)与接收到的第二值(例如,条纹 522)。这可由合计模块332来完成。各操作随后可包括例如使用传送模块330传送经合计的 值。这准许高效的数据并行DNN训练。
[0088] 在至少一个示例中,各操作还包括在传送第一部分之前量化所确定的第一值。各 操作还可包括在合计之前确定经重构(逆量化)的值并使用经重构的值来变换接收到的第 二值。这些操作可由量化模块324执行,这可例如至少部分地基于梯度的值来确定经重构的 值。例如,经重构的值q的经量化的值可以是被量化成q的前一小批中的所有梯度的均值(参 见例如式(14))。相应经量化的值q的经重构的值的历史可被记录并平滑化,例如使用指数 加权移动平均(EffMA)或移动窗口。经重构的值可每η个小批(对于所选择的η)或以随机的间 隔来被重新计算。在取平均或以其他方式使用梯度来确定重构值的任何技术中,一些梯度 可以从梯度的平均或组合中省略。例如,局外点(ou 11 i er)可以从平均省略,或随机选择的 元素可被省略。在各示例中,经重构的值由量化模块324确定且与经量化的数据一起传送。 这仍然造成所传送数据的节省。例如,被量化在一起的一群值的维度X可以是例如2048,且 样本可以是浮点值。未经量化的数据是32X位。量化成1位且与数据一起传送两个32位浮点 重构值(一个针对位且一个针对"Γ位)将数据传输要求降低至X+2x32。对于任何整数X 彡3而言,这是节省。
[0089] 在DNN训练系统的各示例中,例如实现诸如以上描述的那些指令等计算机程序指 令,该系统中的各节点中的至少一个节点可以将经量化的修改值直接传送给各节点中的至 少一个其他节点。即,各节点可按对等拓扑结构而非主机-从机拓扑结构来通信。然而,本文 的各示例不限于对等的且可与节点互连的各种拓扑结构一起操作。使用对等传输可有利地 准许多个节点同时传送数据且因而更高效地使用可用带宽。
[0090] 在至少一个示例中,该系统中的各单独节点包括耦合到相应至少一个处理单元 306的相应存储器320。在这一示例中,单独存储器320可被配置成存储对应节点的相应私有 量化状态,例如包括以上参考图2的量化226描述的所存储的误差值。在这些示例中的一些 示例中,各节点有利地不共享与量化误差有关的状态。这准许各节点关于量化独立地操作, 这可减少要传送的状态数据的量并提高训练速度。
[0091] 在一些示例中,节点包括连接到通信接口 308的CPU和配置成执行更新确定模块 326中的指令的GPGPU。在这些示例中的一些示例中,传送模块330可例如被配置成与将经量 化的修改值中的至少一些传送给节点或其他处理单元306中的至少其他一者并行地,将第 二经量化的修改值从GPGPU传送给CPU。以此方式,计算和数据传输可以不仅在节点之间重 叠,还在节点内重叠。这可准许维持节点中的计算和通信资源两者的高利用因子,从而提高 训练速度。在支持设备(如CPU、GPGPU、或网络控制器)之间的直接存储器访问(DMA)的系统 中,DMA传输可被用来与计算并行地在节点内移动数据。
[0092] 说明性过程
[0093] 图4是示出训练深神经网络的示例过程400的示图。
[0094]在框402,训练引擎(如图1的训练引擎118、图2的训练引擎202、或图3的训练引擎 302)确定神经网络模型的梯度矩阵。如以上参考更新确定模块326所述,训练引擎202可执 行例如以下步骤:另一神经网络训练算法的随机梯度下降(SGD,例如式(5))或包括SGD和其 他技术的组合神经网络训练算法。术语"矩阵"不要求任何特定维度或大小的矩阵。梯度矩 阵可小至单个标量以及具有任何数量的维度或这些维度中的任何程度。在一示例中,梯度 矩阵是 2048 X 2048。
[0095]在框404,训练引擎202使用对应的所存储的误差矩阵来量化梯度矩阵。例如,误差 矩阵可如下参考式(10)所讨论的被结合在量化中。量化可包括例如确定诸如梯度矩阵的相 应元素的近似单个位表示等单个位表示。在一些示例中,经量化的表示每值可具有两个位、 三个位、或任何数量b个位,b小于梯度矩阵在量化之前的位计数B。在框406,训练引擎202使 用(例如,结合)对应的经量化的梯度矩阵来更新误差矩阵。
[0096] 在至少一个示例中,量化(框404)和更新(框406)根据式(10)和(11)来执行,其中 GljlU)是梯度参数,是其经量化的表示,Q( ·)是量化函数,Q、·)是对应逆量 化(重构)函数,AljlU)是量化误差,N是小批大小,且t是样本索引。
[0097] (KI)
[0098] (I!)
[0099] 如可看到的,小批中的样本t-N的量化误差AljlU-N)被用于确定下一小批中的对 应样本的经量化的值此外,误差矩阵Δ是经更新的(Δ ^(t)),使得误差将尽 可能针对样本t+N的下一量化中的给定Q被校正。
[0100] 在至少一个示例中,量化函数是式(12)中示出的阈值函数。
[0101]
(12)
[0102] 这一函数提供要被量化的值X的1位输出Q(X)。其他量化函数可被使用例如以将X 的所选范围(例如,[0,1])分成所选数量的等间隔的各步(例如,针对η位经量化的值的2n 步,或在各示例中,k步,k>2)。在一些示例中,量化阈值是使用梯度来设置的,如在式(13)中 所示:
[0103]
(13)
[0104] 其t
使用来自当前小批的数据,g
使用来自前 一小批的数据。贯穿本公开,t-N可以用t-kN来代替,其中整数k>0。即,出于量化、重构、或本 文的任何目的,可以使用旧一个以上小批的数据。
[0105] 在框408,训练引擎202与多个节点交换经量化的梯度矩阵。框408可包括训练引擎 202将经量化的梯度矩阵中的一些或全部传送给至少一个其他节点,例如图2的至少一个其 他计算设备210或处理单元212。框408可包括多个计算设备210将相应的经量化的梯度矩阵 传送给该多个计算设备中的其他计算设备。各节点可同步地交换经量化的梯度矩阵。这一 交换的示例在下文参考图5讨论。该交换可包括根据接收到的经量化的值(例如,使用下式 (14)或(15))来重构梯度值。在一示例中,交换框408包括只交换经量化的梯度矩阵。在至少 一个示例中,交换框408包括交换经量化的梯度矩阵和一个或多个节点的交叉熵(CE)准则 值。CE准则值可被用来跟踪神经网络训练的进展。在一示例中,交换框408包括交换经量化 的梯度矩阵、重构梯度值、合计经重构的值、量化所合计的值、以及交换经量化的所合计的 值,例如如下文参考图5和6讨论的。
[0106] 在框410,使用梯度来更新神经网络模型。这可以例如以上参考式(5)所描述的那 样完成。经重构的梯度值可被使用。所合计的梯度可如以下参考图5和6所讨论地使用。
[0107] 在判定框412,训练引擎202可以确定是否还有节点具有要处理的数据。如果是,则 该过程可返回至框402。如果否,该过程可进至框414。以此方式,确定框402、量化框404、更 新框406、交换框408、以及模型更新框410或这些框的任何组合可由各节点中的各单独节点 针对梯度矩阵中的相应矩阵以及与梯度矩阵中的相应矩阵相对应的误差矩阵来执行。各节 点可以并行地执行这一处理以减少训练时间。
[0108] 在框414,在一些示例中,可根据批大小至少部分地基于时间测量来调整并行化因 子。如上所述,小批大小N和并行地进行计算的节点数量K影响总训练时间。可基于通信或计 算所花费的时间测量来调整这些值以提高训练速度。
[0109] 在判定框416,训练引擎202可以确定是否满足所选择的终止准则。如果是,则可以 确定训练过程完成。可以使用一个以上准则,例如在满足一个准则(满足所选数量的准则) 时指示完成或在满足所有准则时指示完成。在训练完成时,训练引擎可以将经训练的DNN 208提供给数据分析引擎206,这两者都在图2中示出。如果准则没有被满足,则该过程可返 回到框402。以此方式,确定框402、量化框404、更新框406、交换框408、模型更新框410、判定 框412以及调整框414可针对神经网络模型的多个小批中的每一者来重复。在至少一个示例 中,第一小批的交换由框408执行,与第二小批的确定、量化、或更新并行。
[0110] 示例准则可以是准确度。可以在训练期间评估DNN(例如,DNN 204或304)的训练帧 准确度,且准则可以是至少所选择的训练帧准确度。可在测试输入集上周期性地测试DNN, 并确定误差率,且准则可以是至多所选误差率。示例准则可以是已过去的训练时间。例如, 在所选择的流逝时间和所选数量的训练时期之后,训练可被终止。在DNN没有针对所使用的 特定参数收敛的情况下,这可以终止训练。示例准则可以是训练帧准确度或误差率的改进。 该准则可以是小于这些量中的任一者的所选改进。例如,如果训练帧准确度接近渐近线或 只是例如每时期增长〈〇. 1 %点,则训练可在假定DNN已基本上收敛的情况下终止。
[0111] 在框418,在确定训练完成之后,例如因为满足终止准则,提供经训练的神经网络 (例如,经训练的DNN 208或318)。在一示例中,在训练结束时来自式(5)的权重W1和偏置a1被 存储到计算机可读介质,例如诸如计算机可读介质312等计算机可读介质。在至少一个示例 中,框418包括使用所存储的权重和偏置(例如,在DNN操作引擎120或数据分析引擎206中) 来执行神经网络算法,以处理输入数据236来产生输出数据234。
[0112] 图5是示出用于交换数据的示例过程中的各步骤的数据流程图500。该过程可由具 有图4的相应交换框408的多个节点合作地执行。该过程在本文中也被称为"归纳"。在这一 示例中,三个节点参与,如由图5中的"节点Γ到"节点3"附图标记所指示的。
[0113] 小批502包括来自训练数据216的多个随机采样的帧218,这两者在图2中示出。在 各示例中,小批502可例如由配置成协调各节点的努力的处理单元被分成各子小批504、 506、508。在一些示例中,节点中的一者或多者可划分小批502。在至少一个示例中,单独节 点只从小批502检索其对应的子小批504、506、508。
[0114] 在这一示例中,节点1、2以及3中的每一者接收训练数据216的一个相应子小批 504、506、508并基于训练数据的接收到的子小批来计算计算模型的修改值。在一个示例方 面,计算模型是神经网络模型且更新是适于用于随机梯度下降(SGD)过程中的梯度,例如如 以上参考式(5)描述的。为清楚起见,将贯穿图5的讨论来使用这一示例,但所描述和示出的 技术不限于神经网络或SGD。
[0115] 框510表示由节点1使用子小批504计算出的梯度。框512表示由节点2使用子小批 506计算出的梯度。框514表示由节点3使用子小批508计算出的梯度。各单独节点接收与由 其他节点计算出的梯度有关的信息是合乎需要的。这样的接收准许一单独节点更新其神经 网络模型以准备SGD过程的下一迭代。
[0116] 如以上参考交换230讨论的,为准许与其他节点高效地交换梯度信息,一单独节点 将其梯度分成各"条纹"。在这一示例中,框510包括条纹516、518、520;框512包括条纹522、 524、526;且框514包括条纹528、530、532。条纹分别对应于计算模型的不同参数子集。
[0117] 在一示例中,DNN 204的单个层222(这两者都在图2中示出)中的计算神经元可被 指派给三个部分之一。每一条纹涉及相应部分中的计算神经元的权重和偏置。条纹与对应 训练数据和模型子集之间的关系的示例在下表1中阐明。在这一示例中,子小批504包括300 个数据样本,编号为1-300。子小批506包括样本301-600,且子小批508包括样本601-900。
[0118] 表1
[0120] 如表1所示,为确定模型参数的子集1的各模型参数,来自条纹516、522以及528的 梯度可被组合成合计条纹534,且同样子集2的条纹518、524、530可被组合成合计条纹536, 以及子集3的条纹520、526、532可被组合成合计条纹538。
[0121] 因此,在第一阶段("阶段Γ),节点1-3在它们之间交换数据,以使得在该示例中, 每一节点合计与单个子集相对应的条纹。实线所指示的传送可并发地执行,且虚线所指示 的传送可并发地执行。在各示例中,传送在下表2中给出。边界将可并发地执行的各传送群 分开。
[0122] 表2
[0124] 在表2的示例中,节点1合计其自己的条纹516(即,节点1计算出的梯度的条纹516, 由虚线箭头指示)与接收到的条纹522和528,以提供用于子集1的合计条纹534。合计条纹 534包括该模型的子集1相关于训练样本1-900的梯度(或其合计,例如总和)。类似地,节点2 合计其自己的条纹524与接收到的条纹518和530以提供用于子集2的合计条纹536。节点3合 计其自己的条纹532与接收到的条纹520和526以提供用于子集3的合计条纹538。
[0125] 在以上讨论的示例中,节点1-3在它们之间交换数据。在至少一个示例中,用于提 供合计条纹534、536、538中的一者或多者的合计操作在与节点1、2以及3不同的节点上执 行。在一些示例中,合计操作在节点1、2以及3之一上执行以用于其他节点或用于该节点以 及其他节点。合计条纹534、536、538可由执行合计的节点提供给需要合计条纹的节点。执行 合计的节点的数量可以相同于或不同于计算梯度的节点的数量。
[0126] 如以上参考式(10)讨论的,梯度值可以在阶段1中传送之前被量化。一单独节点可 以量化它所传送的梯度值,例如节点1的条纹518、520。一单独节点随后可在合计合计条纹 534、536、538之前对接收到的值执行逆量化ζΓ 1以确定对应的经重构的值。逆量化可以例如 使用分成它们的量化箱(bin)的先前数据列的均值(例如,~2000个值的均值)来确定。在至 少一个示例中,逆量化可如式(14)中所示地执行:
[0127]
[0128] 在一位量化(q = 0或1)的示例中,^T1(O)是量化为0的先前小批的均值,且^T1(I)是 被量化为1的先前小批的均值。这可以提供最小均方误差估计。在至少一个示例中,经重构 的值可以是先前小批的梯度的最小值和最大值,如式(15)所示:
[0129]
(IS)
[0130] 在阶段1和2之间,节点1_3(或执行合计的其他节点,或计算和合计节点的任何组 合)可以对合计条纹534、536、538的数据执行进一步处理。在一示例中,处理包括动量平滑。 在一示例中,该处理包括梯度的AdaGrad归一化。
[0131] 在第二阶段("阶段2"),节点1-3交换合计条纹,以使得在该示例中,每一节点具有 完整模型(包括所有三个子集)。传送在下表3中阐明。图5上的实线和虚线以及表3中的边界 如以上参考阶段1所讨论的那样。图5上的在阶段2期间的虚线表示重用分别由节点1、2、3已 计算出的合计条纹534、536、538。
[0132] 表3
542,节点2具有完整梯度集合;且在框544,节点3具有完整梯度集合。每一个框540、542、544 包括三个合计条纹534、536、538。
[0135] 在各示例中,节点在将合计条纹534、536、538中的梯度值在阶段2中传送之前对它 们进行量化。接收到经量化的合计梯度值的节点随后可重构((T 1)这些值,并使用所得的经 重构的梯度来更新计算模型,例如DNN 114。
[0136] 图5中描述的技术使用两个阶段来在三个节点之间交换数据。一般而言,对于K个 节点,K>1,这一技术使用K-I个阶段。一单独节点在每一阶段将梯度的K分之一传送两次。在 使用纵横结构或类似设备来互连各节点的示例系统中,在每一阶段,所有K个阶段都可同时 传送信息。在这些示例中,任何给定数据传输所需的时间指示梯度的K分之一的传输时间。 将梯度数据的总大小表示为Μ,在这些示例中完成所示出的传输所需的时间是式(16)中示 出的量级=
[0137]
(16)
[0138] 或0(2Μ(Κ-1)/Κ)~0(Μ)。因此,在使用同时传送时,执行图5所示的数据交换所需 的时间大致独立于节点K的数量。这有利地准许增加参与并行处理的节点数量K,以及相应 地提高训练速度,而不由于传输开销而遭受降低的性能。
[0139] 图6是示出用于交换数据(例如,以上参考图4的框408讨论的)的示例过程600中的 各步骤的流程图。在以下讨论中对图5和6作出参考。该示例过程接收来自图4的框404的经 量化的梯度矩阵作为输入。
[0140]在框602,划分梯度矩阵。可根据节点数量K或不同数量来划分梯度矩阵。如上所 述,执行合计的(诸)节点可以与执行计算的(诸)节点相同或不同。在至少一个示例中,梯度 矩阵可根据执行合计的节点的数量来划分。梯度矩阵可被量化,如上所述。从这一划分中获 得的各单独分区在本文中被称为"条纹"。这一划分的不例是将框510、512、514划分成各条 纹,如上所述。
[0141] 在框604,各单独条纹(分区)被提供给各节点中的相应节点。即,经量化的梯度矩 阵的各分区中的各单独分区被提供给各节点中的相应节点。在图5的示例中,条纹516已驻 留在节点1处。提供框602因此可包括由与节点1相关联的处理单元212选择条纹516的数据 以供进一步处理。条纹522和528没有驻留在节点1处,所以提供框602可包括将条纹522传送 给节点1的节点2(虚线箭头)和将条纹528传送给节点1的节点3(实线箭头)。类似的,条纹 518和530被传送给节点2且条纹524被节点2选择为提供框602的一部分,且条纹520、526被 传送给节点3且条纹532被节点3选择。在图5所示的示例传送在以上表2中概括。
[0142] 在一些示例中,在框606,根据经量化的分区的数据来重构梯度矩阵。如本文所描 述的,重构可被执行。在一示例中,框604包括传送( q,Q4(q))值的表连同经量化的值q,且重 构包括在该表中查找经量化的值q。
[0143] 在框608,接收到的分区被合计在各节点中的对应节点处。这对应于生成图5中的 合计条纹534、536、538。合计可包括例如对经重构的梯度求和。
[0144] 在一些示例中,在框610,所合计的分区中的修改值(例如,梯度值)可被进一步处 理,例如如以上参考图5讨论的。在一示例中,处理包括动量平滑。在一示例中,该处理包括 梯度的AdaGrad归一化。
[0145] 在一些示例中,在框612,所合计的分区中的修改值(例如,梯度值)可被量化。量化 可以使用与在框604中使用的相同量化函数或不同量化函数。经重构的值可如本文参考梯 度矩阵的量化描述的那样来确定(框404)。
[0146] 在框614,所合计的数据(例如,经量化的所合计的分区)从各节点中的产生该分区 的各单独节点传送给各节点中的其他节点。例如,合计条纹534从节点1传送给节点2和3,且 同样用于以上表3中描述的其他传送。
[0147] 在一些示例中,在框616,所合计的分区被重构,例如如以上参考框606所描述的。 框616随后可以是图4的框410。
[0148] 图6的示例过程也可与其他计算模型一起使用来代替神经网络模型,且使用其他 修改值来代替梯度。
[0149] 说明性结果
[0150] 执行了各实验以测试根据本文的各示例的用于DNN训练的系统。CD-DNN-HMM( "模 型")在SWBD-I训练集合(309小时音频)上训练。该模型具有维度为2048且输出维度为9304 (用于总共M = 64M个模型参数)的七个隐藏层。所使用的测试集合是Hub-5'00(1831句话 语)。在配备8个NVIDIA TESLA K20Xm GPU卡的服务器上执行了测试。还在通过INFINIBAND 连接的24个双-K20Xm服务器的服务器场上执行了测试。
[0151] DNN训练使用1位量化,如上所述,其中0(零)作为量化阈值。在一个测试中,前24小 时的数据被处理,而不使用并行化或量化。其余数据使用具有误差反馈的1位量化来处理, 如上所述(例如,式(10)和(11) 一起),其中K=4。词语误差率和训练帧准确度没有因添加带 误差反馈的量化而被显著地更改。在另一测试中,AdaGrad自适应学习权重被应用于经量化 的梯度。与应用于未经量化的梯度的AdaGrad相比,这一配置将帧准确度改进了1.7%。这一 配置,其中Κ = 4,提供了 8.1小时的训练时间。这与对应的非并行化测试的35小时的训练时 间形成对比。因此,并行化操作以及使用经量化的梯度可以提供训练速度的显著改进,即显 著减少训练时间。如上所述,这一速度提高没有牺牲来自经训练的DNN 114的结果的质量。 在又一测试中,具有AdaGrad的DNN在使用和不使用批大小调整(例如,批选择224,图2)的情 况下被测试。使用批大小调整将训练时间从41小时降至35小时。还执行了将数据与模型并 行化相比的测试。在各示例中,只使用数据并行化。例如,具有4χ2(数据X模型)并行化的系 统的测试具有40.9kfps的训练速度,与具有8x1并行化的更高训练速度50.6kfps形成对比。 在一个测试中,160M个参数的生产规模模型在低于24小时的流逝时间内完成一遍3,300小 时的训练数据。这些示例示范了量化(例如,1位量化)加速了数据传输并使得数据并行SGD 在基本上不损失准确度的情况下可行。
[0152]示例条款
[0153] A: -种方法,包括:确定优化问题的计算模型(例如,神经网络模型)的梯度矩阵; 使用(例如,结合)对应的所存储的误差矩阵来量化所述梯度矩阵;使用对应的经量化的梯 度矩阵来更新所述误差矩阵;以及与多个节点交换经量化的梯度矩阵。
[0154] B:如段落A所述的方法,所述确定、量化、以及更新由所述节点中的各单独节点针 对所述梯度矩阵中的相应梯度矩阵以及与所述梯度矩阵中的所述相应梯度矩阵相对应的 误差矩阵来执行。
[0155] C:如段落A或B所述的方法,还包括在交换之后重构经量化的梯度矩阵。
[0156] D:如段落A或B所述的方法,还包括使用梯度矩阵来更新神经网络模型。
[0157] E:如段落B、C或D中的任一段所述的方法,还包括为所述神经网络模型的多个小批 中的每一小批重复所述确定、量化、更新以及交换步骤,所述小批中的第一小批的交换与所 述小批中的第二小批的确定、量化或更新并行地执行。
[0158] F:如段落E所述的方法,所述交换包括交换经量化的梯度矩阵,例如只交换经量化 的梯度矩阵。
[0159] G:如段落E或F所述的方法,所述诸节点同步地交换经量化的梯度矩阵。
[0160] H:如段落E-G中的任一段所述的方法,所述交换包括:例如根据节点的数量来划分 经量化的梯度矩阵;将所述经量化的梯度矩阵的各分区中的各单独分区提供给所述节点中 的相应节点;在所述节点处合计接收到的分区;以及将来自所述节点中的各单独节点的所 合计的数据传送给所述节点中的其他节点。
[0161] I:如段落A-H中的任一段所述的方法,还包括根据批大小至少部分地基于时间测 量来调整并行化因子。
[0162] J:如段落A-H中的任一段所述的方法,所述量化包括确定梯度矩阵的每一元素的 单个位表示,例如近似单个位表示。
[0163] K: -种其上具有计算机可执行指令的计算机可读介质(例如,计算机存储介质), 该计算机可执行指令在被执行时将计算机配置成执行段落A-J中的任一段所述的方法。
[0164] L: -种设备,包括:处理器;以及其上具有计算机可执行指令的计算机可读介质 (例如,计算机存储介质),该计算机可执行指令在被执行时将所述设备配置成执行段落A-J 中的任一段所述的方法。
[0165] M: -种系统,包括:用于处理的装置;以及用于在其上存储有计算机可执行指令的 装置,这些计算机可执行指令包括用于将该设备配置成执行如段落A-J中的任一段所述的 方法的装置。
[0166] N: -种系统,包括:其上具有多个模块和优化问题的计算模型的一个或多个计算 机可读介质(例如,计算机存储介质);以及多个节点,每一节点包括至少一个处理单元,每 一处理单元能操作耦合到所述计算机可读介质中的至少一者,所述处理单元被适配成互通 信且执行所述多个模块中的各模块,所述多个模块包括:被配置成确定所述计算模型的修 改值的更新确定模块;被配置成使用所存储的误差值来量化所确定的修改值并使用所确定 的修改值和经量化的修改值来更新所存储的误差值的量化模块;被配置成将经量化的修改 值中的至少一些传送给所述处理单元中的至少一个其他处理单元的传送模块;以及被配置 成根据接收到的经量化的修改值来修改所存储的计算模型的更新模块。
[0167] 0:如段落N所述的系统,所述量化模块被进一步配置成使用所传送的经量化的梯 度修改值来重构修改值以及更新模块被配置成根据经重构的修改值来修改所存储的计算 模型。
[0168] P:如段落N所述的系统,其特征在于,所述诸节点中的至少一者将经量化的修改值 直接传送给所述诸节点中的至少一个其他节点。
[0169] Q:如段落N、0或P中的任一段所述的系统,每一节点包括耦合到所述相应至少一个 处理单元且被配置成存储包括所存储的误差值的相应私有量化状态的相应存储器。
[0170] R:如段落N-Q中的任一段所述的系统,所述计算模型包括神经网络模型,且所述更 新确定模块被配置成使用随机梯度下降算法来确定所述修改值。
[0171] S:如段落N-R中的任一段所述的系统,所述诸节点中的每一者包括能操作耦合到 相应计算机可读介质且被配置成至少执行所述更新确定模块的多个处理单元。
[0172] T:如段落N-S中的任一段所述的系统,其特征在于,还包括将所述诸节点通信地连 接的纵横结构,其中所述诸节点被配置成执行所述传送模块以经由所述纵横结构与执行所 述更新确定模块并行地传送所述经量化的修改值中的至少一些。
[0173] U:如段落N-T中的任一段所述的系统,每一节点的至少一个处理单元包括配置成 执行所述更新模块和量化模块的通用图形处理单元(GPGPU)以及配置成执行所述传送模块 的中央处理单元(CPU)。
[0174] V:如段落U所述的系统,所述传送模块被配置成与将经量化的修改值中的至少一 些传送给处理单元中的至少一个其他处理单元并行地,将第二经量化的修改值从GPGPU传 送给CPU。
[0175] W:-种在其上具有计算机可执行指令的计算机可读介质,所述计算机可执行指令 在执行时配置计算机来执行各操作,包括:使用训练样本集合来确定神经网络模型的梯度 的第一值;传送梯度的第一值的第一部分;接收与梯度的第一值的第二不同部分相对应的 第二值;将该第二部分与接收到的第二值合计在一起;以及传送经合计的值。
[0176] X:如段落W所述的计算机可读介质,各操作还包括在传送第一部分之前量化所确 定的第一值。
[0177] Y:如段落W或Y所述的计算机可读介质,各操作还包括确定逆量化值并在合计之前 使用逆量化值变换接收到的第二值。
[0178] Z:如段落Y所述的计算机可读介质,逆量化值是至少部分地基于梯度的值来确定 的。
[0179] AA:如段落W-Z中的任一段所述的计算机可读介质,各操作还包括时传送和接收重 叠。
[0180] AB: -种系统,包括:用于处理的装置;以及如段落W-AA中的任一段所述的计算机 可读介质。
[0181] 本文描述的训练技术可减少为特定目的(如语音识别)而训练DNN所使用的时间 量。减少的训练时间可导致在执行语音-文本转录或文本-语音合成时DNN的实现和使用的 增加。
[0182] 结语
[0183] 虽然已经用对结构特征和/或方法动作专用的语言描述了各项技术,但是应该理 解,所附权利要求不必限于所述的特征或动作。相反,这些特征和动作是作为实现这些技术 的示例形式而描述的。
[0184] 示例过程的操作在单独的框中示出,并且参考这些框来概括。这些过程被示为逻 辑框流,其每个框可表示可用硬件、软件或其组合实现的一个或多个操作。在软件的上下文 中,这些操作表示存储在一个或多个计算机可读介质上的计算机可执行指令,这些指令在 由一个或多个处理器执行时使得一个或多个处理器执行既定操作。一般而言,计算机可执 行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、模块、组件、数据结 构等。描述操作的次序并不旨在解释为限制,并且任何数量的所述操作可以按任何次序执 行、按任何次序进行组合、细分成多个子操作、或并行执行,以实现所描述的过程。所描述的 过程可由与一个或多个计算设备210或处理单元212相关联的资源来执行,如上述加速器或 其他处理单元212。这样的设备包括例如一个或多个内部或外部CPU或GPU、或一个或多个硬 件逻辑,如FPGA或DSP。
[0185] 上述所有方法和过程可以用由一个或多个通用计算机或处理器执行的软件代码 模块来具体化,并且可经由这些软件代码模块来完全自动化。这些代码模块可以存储在任 何类型的计算机可执行存储介质或其他计算机存储设备中。方法中的某些或全部可以用专 用计算机硬件来具体化。
[0186] 除非另外具体声明,否则在上下文中可以理解条件语言(诸如"能"、"能够"、"可 能"或"可以")表示特定示例包括而其他示例不包括特定特征、元素或步骤。因此,这样的条 件语言一般并非旨在暗示对于一个或多个示例需要特定特征、元素或步骤,或者一个或多 个示例必然包括用于决定的逻辑、具有或不具有用户输入或提示、在任何特定实施例中是 否要包括或要执行特定特征、元素或步骤。除非另外具体声明,应理解联合语言(诸如短语 "X、Y或Z中至少一个")表示项、词语等可以是X、Y或Z中的任一者、或其组合。
[0187] 本文所述或附图中描述的流程图中任何例行描述、元素或框应理解成潜在地表示 包括用于实现该例程中具体逻辑功能或元素的一个或多个可执行指令的代码的模块、片段 或部分。替换实现被包括在本文描述的示例的范围内,其中各元素或功能可被删除,或与所 示出或讨论的顺序不一致地执行,包括基本上同步地执行或按相反顺序执行,这取决于所 涉及的功能,如本领域技术人也将理解的。应当强调,可对上述示例作出许多变型和修改, 其中的元素如同其他可接受的示例那样应被理解。所有这样的修改和变型本文旨在包括在 本公开的范围内并且由以下权利要求书保护。
【主权项】
1. 一种方法,包括: 确定优化问题的计算模型的梯度矩阵; 使用对应的所存储的误差矩阵来量化所述梯度矩阵; 使用对应的经量化的梯度矩阵来更新所述误差矩阵;以及 与多个节点交换经量化的梯度矩阵。2. 如权利要求1所述的方法,其特征在于,所述确定、量化、以及更新由所述诸节点中的 各单独节点针对所述梯度矩阵中的相应梯度矩阵以及与所述相应梯度矩阵相对应的误差 矩阵来执行。3. 如前述权利要求中的任一项所述的方法,其特征在于,还包括为所述计算模型的多 个小批中的每一小批重复所述确定、量化、更新以及交换步骤,所述小批中的第一小批的交 换与所述小批中的第二小批的确定、量化或更新并行地执行。4. 如权利要求3所述的方法,其特征在于,所述交换包括交换经量化的梯度矩阵。5. 如权利要求3或4所述的方法,其特征在于,所述诸节点同步地交换经量化的梯度矩 阵。6. 如权利要求3-5中的任一项所述的方法,其特征在于,所述交换包括: 划分所述经量化的梯度矩阵; 将所述经量化的梯度矩阵的各分区中的各单独分区提供给所述诸节点中的相应节点; 在所述诸节点处合计接收到的分区;以及 将来自所述诸节点中的各单独节点的所合计的数据传送给所述诸节点中的其他节点。7. 如前述权利要求中的任一项所述的方法,其特征在于,还包括根据批大小至少部分 地基于时间测量来调整并行化因子。8. 如前述权利要求中的任一项所述的方法,其特征在于,所述量化包括确定所述梯度 矩阵中的每一元素的近似单个位表示。9. 一种其上具有计算机可执行指令的计算机可读介质,所述计算机可执行指令在执行 时配置计算机来实现如前述权利要求中的任一项所述的方法。10. -种系统,包括: 其上具有多个模块和优化问题的计算模型的一个或多个计算机可读介质;以及 多个节点,每一节点包括至少一个处理单元,每一处理单元能操作親合到所述计算机 可读介质中的至少一者,所述处理单元被适配成互通信且执行所述多个模块中的各模块, 所述多个模块包括: 被配置成确定所述计算模型的修改值的更新确定模块; 被配置成使用所存储的误差值来量化所确定的修改值并使用所确定的修改值和经量 化的修改值来更新所存储的误差值的量化模块; 被配置成将经量化的修改值中的至少一些传送给所述处理单元中的至少一个其他处 理单元的传送模块;以及 被配置成根据接收到的经量化的修改值来修改所存储的计算模型的更新模块。11. 如权利要求10所述的系统,其特征在于,所述诸节点中的至少一者将经量化的修改 值直接传送给所述诸节点中的至少一个其他节点。12. 如权利要求11所述的系统,其特征在于,每一节点包括耦合到所述相应至少一个处 理单元且被配置成存储包括所存储的误差值的相应私有量化状态的相应存储器。13. 如权利要求10-12中的任一项所述的系统,其特征在于,所述计算模型包括神经网 络模型,且所述更新确定模块被配置成使用随机梯度下降算法来确定所述修改值。14. 如权利要求10-13中的任一项所述的系统,其特征在于,所述诸节点中的每一者包 括能操作耦合到相应计算机可读介质且被配置成至少执行所述更新确定模块的多个处理 单元。15. 如权利要求10-14中的任一项所述的系统,其特征在于,还包括将所述诸节点通信 地连接的纵横结构,其中所述诸节点被配置成执行所述传送模块以经由所述纵横结构与执 行所述更新确定模块并行地传送所述经量化的修改值中的至少一些。
【文档编号】G06N3/08GK106062786SQ201480068322
【公开日】2016年10月26日
【申请日】2014年9月12日
【发明人】J·兰福德, G·李, F·T·B·赛德, J·德罗普, D·俞
【申请人】微软技术许可有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1