中文字幕无码日韩视频无码三区

用于訓練神經網絡的計算系統的制作方法

文檔(dang)序號:10694103閱讀:523來源:國知局
用于訓練神經網絡的計算系統的制作方法
【專利摘要】各技術和構造可減少確定優化問題(如神經網絡的訓練)的解所需的時間。可由并行地操作的多個節點確定對計算模型的修改。經量化的修改值可以在各節點之間傳送以減少要傳送的數據量。經量化的值可小至每一者一位。量化?誤差值可被存儲并用于量化后續修改。各節點可并行地操作且使計算和數據傳輸重疊以進一步減少確定解所需的時間。經量化的值可被分區且每一節點可合計對應分區的值。
【專利說明】用于訓練神經網絡的計算系統
[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·俞
【申請人】微軟技術許可有限責任公司
網友詢問(wen)留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1