用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的計(jì)算系統(tǒng)的制作方法
【專利摘要】各技術(shù)和構(gòu)造可減少確定優(yōu)化問題(如神經(jīng)網(wǎng)絡(luò)的訓(xùn)練)的解所需的時(shí)間??捎刹⑿械夭僮鞯亩鄠€(gè)節(jié)點(diǎn)確定對計(jì)算模型的修改。經(jīng)量化的修改值可以在各節(jié)點(diǎn)之間傳送以減少要傳送的數(shù)據(jù)量。經(jīng)量化的值可小至每一者一位。量化?誤差值可被存儲并用于量化后續(xù)修改。各節(jié)點(diǎn)可并行地操作且使計(jì)算和數(shù)據(jù)傳輸重疊以進(jìn)一步減少確定解所需的時(shí)間。經(jīng)量化的值可被分區(qū)且每一節(jié)點(diǎn)可合計(jì)對應(yīng)分區(qū)的值。
【專利說明】用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的計(jì)算系統(tǒng)
[0001 ] 背景
[0002] 深神經(jīng)網(wǎng)絡(luò)對各種各樣的識別問題而言是有用的。例如,使用上下文相關(guān)的深神 經(jīng)網(wǎng)絡(luò)隱馬爾科夫模型(CD-DNN-HMM)來用于語音識別或語音-到-文本轉(zhuǎn)錄的聲學(xué)建模技 術(shù)勝過使用常規(guī)基于高斯混合的HMM的聲學(xué)建模技術(shù)。與基于高斯混合的HMM不同,CD-DNN-HMM使用具有多個(gè)隱藏層的人工神經(jīng)網(wǎng)絡(luò)("深神經(jīng)網(wǎng)絡(luò)")來直接建模所綁定的上下文相關(guān) 狀態(tài)。然而,訓(xùn)練⑶-DNN-HMM來用于語音識別比訓(xùn)練基于高斯混合的HMM更加耗時(shí)。深神經(jīng) 網(wǎng)絡(luò)與其他辦法相比的較大的訓(xùn)練時(shí)間量是將深神經(jīng)網(wǎng)絡(luò)用于識別問題(例如,語音識別) 的主要障礙。
[0003] 已作出嘗試來通過使用并行化(例如,跨多個(gè)服務(wù)器獨(dú)立地處理語言話音)改進(jìn)常 規(guī)深神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。在一批數(shù)以億計(jì)的幀結(jié)束后,來自服務(wù)器的部分統(tǒng)計(jì)數(shù)據(jù)可被合并, 且經(jīng)更新的模型可被分發(fā)給各服務(wù)器。然而,與數(shù)以億計(jì)的幀相對應(yīng)的經(jīng)更新的模型的大 小通常超過可用計(jì)算資源的容量。
[0004] 概述
[0005] 本公開描述了用于在數(shù)學(xué)上優(yōu)化例如用于訓(xùn)練深神經(jīng)網(wǎng)絡(luò)(DNN)的計(jì)算模型的解 的系統(tǒng)、方法以及計(jì)算機(jī)可讀介質(zhì)。在至少一個(gè)示例中,多個(gè)節(jié)點(diǎn)中的每一者確定計(jì)算模型 的修改值(例如,使用訓(xùn)練數(shù)據(jù)和DNN模型來計(jì)算出的梯度值)。各節(jié)點(diǎn)量化修改值并將經(jīng)量 化的值傳輸給這些節(jié)點(diǎn)中的其他節(jié)點(diǎn)。每一節(jié)點(diǎn)中的更新模塊根據(jù)接收到的經(jīng)量化的值來 修改計(jì)算模型。本文描述的各示例技術(shù)確定DNN的梯度矩陣,使用所存儲的誤差矩陣來量化 梯度矩陣,更新所存儲的誤差矩陣,以及與其他節(jié)點(diǎn)交換經(jīng)量化的梯度矩陣。
[0006] 提供本概述以便以簡化的形式介紹以下在詳細(xì)描述中進(jìn)一步描述的一些概念。本
【發(fā)明內(nèi)容】
不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵或必要特征,也不旨在用于幫助確定所要求 保護(hù)的主題的范圍。例如術(shù)語"技術(shù)"可指代上述上下文和通篇文檔中所準(zhǔn)許的系統(tǒng)、方法、 計(jì)算機(jī)可讀指令、模塊、算法、硬件邏輯或操作。
[0007] 附圖簡述
[0008] 參考附圖來描述【具體實(shí)施方式】。在附圖中,附圖標(biāo)記最左邊的數(shù)字標(biāo)識該附圖標(biāo) 記首次出現(xiàn)的附圖。不同附圖中的相同參考標(biāo)記指示相似或相同的項(xiàng)。
[0009] 圖1是描繪了用于實(shí)現(xiàn)在此描述的深神經(jīng)網(wǎng)絡(luò)的訓(xùn)練的示例環(huán)境的框圖。
[0010] 圖2是示出用于實(shí)現(xiàn)使用算法來訓(xùn)練深神經(jīng)網(wǎng)絡(luò)的訓(xùn)練引擎的示例方案的框圖。
[0011] 圖3是描繪了根據(jù)在此描述的各示例被配置成參與神經(jīng)網(wǎng)絡(luò)訓(xùn)練的示例計(jì)算設(shè)備 的框圖。
[0012] 圖4是示出訓(xùn)練深神經(jīng)網(wǎng)絡(luò)的示例過程的流程圖。
[0013] 圖5是示出用于在各節(jié)點(diǎn)之間交換數(shù)據(jù)以訓(xùn)練深神經(jīng)網(wǎng)絡(luò)的示例過程的數(shù)據(jù)流 圖。
[0014] 圖6是示出用于在各節(jié)點(diǎn)之間交換數(shù)據(jù)以訓(xùn)練深神經(jīng)網(wǎng)絡(luò)的示例過程的流程圖。
[0015] 詳細(xì)描述
[0016] 概覽
[0017] 本文描述的示例提供了用于通過使用包括例如處理單元在內(nèi)的資源來更高效地 交換數(shù)據(jù)以改進(jìn)神經(jīng)網(wǎng)絡(luò)(例如,DNN)的訓(xùn)練速度的技術(shù)和構(gòu)造??墒褂脤S玫木幊袒蛴弥?定指令來編程以實(shí)現(xiàn)指定功能的硬件來實(shí)現(xiàn)這樣的資源。例如,資源可具有不同的執(zhí)行模 型,諸如在用于圖形處理單元(GPU)和計(jì)算機(jī)中央處理單元(CPU)的情況下。配置成用于訓(xùn) 練深神經(jīng)網(wǎng)絡(luò)的資源可以使用數(shù)據(jù)并行架構(gòu)來提供DNN的快速訓(xùn)練。這可極大地?cái)U(kuò)展DNN可 在其中服務(wù)的使用領(lǐng)域,且可準(zhǔn)許通過增加可在模型開發(fā)期間運(yùn)行的模型調(diào)節(jié)周期的數(shù)量 來更快速地改進(jìn)基于DNN的系統(tǒng)。在一些示例中,DNN可被快速地訓(xùn)練來為不能打字的人將 語音轉(zhuǎn)換成文本,或?yàn)橐曈X受損者將文本轉(zhuǎn)換成語音。在各示例中,DNN可被訓(xùn)練以促進(jìn)用 戶將信息或查詢輸入不具有鍵盤或小鍵盤的移動(dòng)設(shè)備。
[0018] 本文描述的是用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)(包括深神經(jīng)網(wǎng)絡(luò),本文中稱為DNN)以加速在執(zhí) 行諸如語音識別、語音合成、回歸分析或其他數(shù)據(jù)擬合之類的模式識別和數(shù)據(jù)分析中使用 的DNN的訓(xùn)練的增強(qiáng)技術(shù)。在例如被訓(xùn)練用于在此所述的語音識別或其他使用情況的DNN的 各示例中,DNN可以是上下文相關(guān)的DNN或上下文無關(guān)的DNN 13DNN可具有至少兩個(gè)隱藏層。使 用本文的技術(shù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)可具有一個(gè)隱藏層、兩個(gè)隱藏層、或兩個(gè)以上隱藏層。在一示 例中,例如對于語音識別系統(tǒng)是有用的,本文描述的神經(jīng)網(wǎng)絡(luò)或DNN具有五和七之間的層 數(shù)。除非另外明確指明,本文描述的涉及DNN的技術(shù)還適用于具有少于兩個(gè)隱藏層的神經(jīng)網(wǎng) 絡(luò)。在某些情況中,諸如用于語音識別,上下文相關(guān)的DNN可連同隱形馬爾科夫模型(HMM) - 起被使用。在這些情況中,上下文相關(guān)的DNN和HMM的組合被稱為上下文相關(guān)的DNN-HMM(CD-DNN-HMM)。從而,本文所述的用于訓(xùn)練DNN的技術(shù)可被應(yīng)用于訓(xùn)練CD-DNN-HMM。本文描述的 技術(shù)可包括使用算法來將DNN的訓(xùn)練跨多個(gè)處理單元(例如,多核處理器的各核或多個(gè)通用 圖形處理單元(GPGPU))并行化。相應(yīng)地,可在多個(gè)處理單元上并行地處理DNN的多個(gè)層。
[0019] 諸如DNN等神經(jīng)網(wǎng)絡(luò)一般是用基于小批的隨機(jī)梯度下降(SGD)來訓(xùn)練的。SGD可以 沿三個(gè)維度(模型參數(shù)、層、以及數(shù)據(jù)(以及它們的組合))并行化。在先前方案中實(shí)現(xiàn)的所有 三個(gè)并行化技術(shù)遭受非常高的帶寬成本,這限制來自并行化的加速。例如,數(shù)據(jù)并行化需要 各計(jì)算節(jié)點(diǎn)交換并合并數(shù)以億計(jì)的模型參數(shù),這可比相應(yīng)的并行化計(jì)算顯著地花費(fèi)更多時(shí) 間。結(jié)果,在這些方案中僅獲得很小(如果有的話)加速。
[0020]本文的技術(shù)可包括對模型條紋化(model striping)的使用。在模型條紋化中,DNN 的輸出層或任何隱藏DNN層可以跨多個(gè)處理單元被并行處理。
[0021] 這些技術(shù)可減少為特定目的(如語音識別)而訓(xùn)練DNN所使用的時(shí)間量。減少的訓(xùn) 練時(shí)間可導(dǎo)致在執(zhí)行語音-文本轉(zhuǎn)錄或文本-語音合成時(shí)DNN的實(shí)現(xiàn)和使用的增加。
[0022] 在一些示例中,本文描述的用于DNN訓(xùn)練的算法可以在計(jì)算設(shè)備上執(zhí)行,如智能電 話、平板、臺式計(jì)算機(jī)、服務(wù)器、服務(wù)器刀片、超級計(jì)算機(jī),等等。所得的DNN可被用在這樣的 計(jì)算設(shè)備上。所得的DNN可被用在具有一個(gè)或多個(gè)輸入設(shè)備(如物理鍵盤、軟鍵盤、觸摸屏、 觸摸墊、話筒、相機(jī)等)的計(jì)算設(shè)備上,以向設(shè)備提供優(yōu)化功能(如語音識別、圖像識別和搜 索、以及語音合成)。
[0023]根據(jù)各示例的用于訓(xùn)練DNN以用于數(shù)據(jù)分析的各示例、場景和技術(shù)的示例在以下 對附圖的描述中被更加詳細(xì)地呈現(xiàn)。
[0024] 說明性環(huán)境
[0025]圖1示出深神經(jīng)網(wǎng)絡(luò)(DNN)訓(xùn)練系統(tǒng)的各示例可在其中操作或諸如示例DNN訓(xùn)練方 法等數(shù)學(xué)優(yōu)化方法可在其中執(zhí)行的示例環(huán)境100。在一些示例中,環(huán)境100的各設(shè)備或組件 包括可經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)106彼此通信的計(jì)算設(shè)備102(1 )-102(N)(在本文單獨(dú)地或共同 地用附圖標(biāo)記102來稱呼)和計(jì)算設(shè)備104(1)-104(K)(在本文中單獨(dú)地或共同地用附圖標(biāo) 記104來稱呼)。在一些示例中,N=K;在其他示例中,Ν>Κ或Ν〈Κ。在一些示例中,計(jì)算設(shè)備102 和104可經(jīng)由網(wǎng)絡(luò)106與外部設(shè)備通信。
[0026] 例如,(諸)網(wǎng)絡(luò)106可包括諸如因特網(wǎng)之類的公共網(wǎng)絡(luò)、諸如機(jī)構(gòu)或個(gè)人內(nèi)聯(lián)網(wǎng)的 專用網(wǎng)絡(luò),或?qū)S煤凸簿W(wǎng)絡(luò)的某種組合。(諸)網(wǎng)絡(luò)106還可包括任何類型的有線或無線網(wǎng) 絡(luò),包括但不限于局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、衛(wèi)星網(wǎng)絡(luò)、有線網(wǎng)絡(luò)、Wi-Fi網(wǎng)絡(luò)、WiMAX網(wǎng)絡(luò)、 移動(dòng)通信網(wǎng)絡(luò)(例如3G、4G等等)或它們的任意組合。(諸)網(wǎng)絡(luò)106可利用通信協(xié)議,包括基 于分組的或基于數(shù)據(jù)報(bào)的協(xié)議,如網(wǎng)際協(xié)議(IP)、傳輸控制協(xié)議(TCP)、用戶數(shù)據(jù)報(bào)協(xié)議 (UDP)、其它類型的協(xié)議、或它們的組合。而且,(諸)網(wǎng)絡(luò)106還可包括便于網(wǎng)絡(luò)通信或形成 網(wǎng)絡(luò)的硬件基礎(chǔ)的若干設(shè)備,如交換機(jī)、路由器、網(wǎng)關(guān)、接入點(diǎn)、防火墻、基站、中繼器、主干 設(shè)備等等。網(wǎng)絡(luò)106還可包括促進(jìn)使用各種拓?fù)浣Y(jié)構(gòu)的總線協(xié)議的計(jì)算設(shè)備102、104之間的 通信,例如跨接開關(guān)、INFINIBAND開關(guān)或FIBRE CHANNEL(光纖通道)開關(guān)或中樞。
[0027] 在一些示例中,(諸)網(wǎng)絡(luò)106可進(jìn)一步包括能夠?qū)崿F(xiàn)到無線網(wǎng)絡(luò)的連接的設(shè)備,諸 如無線接入點(diǎn)(WAP)。各示例支持通過WAP的連接性,WAP經(jīng)由各個(gè)電磁頻率(例如,無線電頻 率)來發(fā)送和接收數(shù)據(jù),包括支持電氣和電子工程師協(xié)會(huì)(IEEE)802. 11標(biāo)準(zhǔn)(例如, 802.118、802.1111等)、其他標(biāo)準(zhǔn)(如藍(lán)牙)或它們中的多者或組合的1八?。
[0028] 在各示例中,計(jì)算設(shè)備102(1)-102(N)或104(1)-102(K)中的一些能在集群或編組 的配置中操作,以例如共享資源、平衡負(fù)載、提高性能、或提供故障恢復(fù)支持或冗余性。計(jì)算 設(shè)備102、104可屬于各種各樣的類別或分類的設(shè)備,諸如傳統(tǒng)的客戶機(jī)類型或服務(wù)器類型 的設(shè)備、臺式計(jì)算機(jī)類型設(shè)備、移動(dòng)類型設(shè)備、專用類型設(shè)備、嵌入式類型設(shè)備和/或可穿戴 類型設(shè)備。由此,雖然被示為例如臺式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)或蜂窩電話,但是 計(jì)算設(shè)備102、104可包括多種多樣的設(shè)備類型且不限于特定類型的設(shè)備。計(jì)算設(shè)備102可以 表示但不限于臺式計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、web服務(wù)器計(jì)算機(jī)、個(gè)人計(jì)算機(jī)、移動(dòng)計(jì)算機(jī)、膝 上型計(jì)算機(jī)、平板計(jì)算機(jī)、可穿戴接收機(jī)、植入式計(jì)算設(shè)備、電信設(shè)備、車載接收機(jī)、啟用網(wǎng) 絡(luò)的電視機(jī)、瘦客戶機(jī)、終端、個(gè)人數(shù)據(jù)助理(PDA)、游戲控制臺、游戲設(shè)備、該裝置、媒體播 放器、個(gè)人錄像機(jī)(PVR)、機(jī)頂盒、相機(jī)、計(jì)算設(shè)備中包括的集成組件、電器、計(jì)算機(jī)導(dǎo)航類客 戶端計(jì)算設(shè)備、基于衛(wèi)星的導(dǎo)航系統(tǒng)設(shè)備(包括全球定位系統(tǒng)(GPS)設(shè)備和其他基于衛(wèi)星的 導(dǎo)航系統(tǒng)設(shè)備)、電信設(shè)備(如移動(dòng)電話、平板計(jì)算機(jī)、移動(dòng)電話-平板混合設(shè)備、個(gè)人數(shù)據(jù)助 理(PDA))、或配置成參與本文描述的DNN訓(xùn)練或操作的其他計(jì)算設(shè)備。在至少一個(gè)示例中, 計(jì)算設(shè)備102包括被配置成訓(xùn)練DNN的服務(wù)器和高性能計(jì)算機(jī)。在至少一個(gè)示例中,計(jì)算設(shè) 備104包括被配置成訓(xùn)練DNN例如以響應(yīng)于來自話筒的語音輸入提供文本數(shù)據(jù)的膝上型計(jì) 算機(jī)、平板計(jì)算機(jī)、智能電話、家用臺式計(jì)算機(jī)、或其他計(jì)算設(shè)備。
[0029] 計(jì)算設(shè)備102、104可包括在插頁108處所示的各組件。計(jì)算設(shè)備102、104可包括具 有諸如經(jīng)由總線114可操作地連接到一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)112的一個(gè)或多個(gè)處理單 元110的任何計(jì)算設(shè)備,總線112在一些實(shí)例中可包括系統(tǒng)總線、數(shù)據(jù)總線、地址總線、PCI總 線、Mini-PCI總線以及任何各種本地、外圍和/或獨(dú)立總線中的一者或多者、或它們的組合。 在至少一個(gè)示例中,多個(gè)處理單元110可通過內(nèi)部接口總線(如PCIe)(作為網(wǎng)絡(luò)106的替換 或補(bǔ)充)來交換數(shù)據(jù)。存儲在計(jì)算機(jī)可讀介質(zhì)112上的可執(zhí)行指令可包括例如操作系統(tǒng)116、 DNN訓(xùn)練引擎118、DNN操作引擎120以及可由處理單元110加載并執(zhí)行的其他模塊、程序或應(yīng) 用。在未示出的示例中,計(jì)算設(shè)備102、104中的一者中的處理單元110中的一者或多者可例 如經(jīng)由通信接口 122和網(wǎng)絡(luò)106可操作地連接到計(jì)算設(shè)備102、104中的不同一者中的計(jì)算機(jī) 可讀介質(zhì)112。例如,用于執(zhí)行本文各DNN訓(xùn)練步驟的程序代碼可以例如經(jīng)由網(wǎng)絡(luò)106從服務(wù) 器(例如,計(jì)算設(shè)備102(1))下載到客戶機(jī)(例如,計(jì)算設(shè)備KM(K)),且由計(jì)算設(shè)備104(K)中 的一個(gè)或多個(gè)處理單元110來執(zhí)行。在一示例中,計(jì)算設(shè)備102(1)-102(Ν)包括DNN訓(xùn)練引擎 118,而計(jì)算設(shè)備104(1)-104(Κ)包括DNN操作引擎120。
[0030] 處理單元110可以是或可包括一個(gè)或多個(gè)單核處理器、多核處理器、中央處理單元 (CPU)、圖形處理單元(GPU)、通用圖形處理單元(GPGPU)或例如經(jīng)由來自模塊或API的編程 來配置以執(zhí)行本文描述的功能的硬件邏輯組件(諸如加速器)。作為示例而非限制,可被使 用在處理單元110中或被用作處理單元126的硬件邏輯組件的說明性類型包括現(xiàn)場可編程 門陣列(FPGA)、程序?qū)S玫募呻娐?ASIC)、程序?qū)S玫臉?biāo)準(zhǔn)產(chǎn)品(ASSP)、片上系統(tǒng)(S0C)、 復(fù)雜可編程邏輯器件(CPLD)、以及數(shù)字信號處理器(DSP)。例如,加速器可表示混合設(shè)備,諸 如來自包括嵌入在FPGA結(jié)構(gòu)中的CPU核的ALTERA或XILINX的一個(gè)。這些或其他硬件邏輯組 件可獨(dú)立地操作,或在一些實(shí)例中,可由CPU驅(qū)動(dòng)。
[0031] 處理單元110可被配置成執(zhí)行安裝在計(jì)算設(shè)備102上的操作系統(tǒng)116。在一些示例 中,處理單元110可以是或包括通用圖形處理單元(GPGPU)。在又一些示例中,處理單元110 可以是現(xiàn)場可編程門陣列(FPGA)或另一類型的可定制處理器。在各示例中,計(jì)算設(shè)備102 (1)-102(N)中的至少一些可包括多種類型的多個(gè)處理單元110。例如,計(jì)算設(shè)備102(1)中的 處理單元110可以是一個(gè)或多個(gè)GPGPU和一個(gè)或多個(gè)FPGA的組合。
[0032] 計(jì)算設(shè)備102還可包括通過網(wǎng)絡(luò)106啟用計(jì)算設(shè)備102與DNN訓(xùn)練中涉及的其他聯(lián) 網(wǎng)計(jì)算設(shè)備102或其他計(jì)算設(shè)備之間的有線或無線通信的一個(gè)或多個(gè)通信接口 122。這樣的 通信接口 122可包括通過網(wǎng)絡(luò)發(fā)送和接收通信的一個(gè)或多個(gè)收發(fā)機(jī)設(shè)備,例如網(wǎng)絡(luò)接口控 制器(NIC),如以太網(wǎng)NIC。處理單元110可通過通信接口 122來交換數(shù)據(jù)。這一示例中,通信 接口 122可以是外圍部件互連快速(PCIe)收發(fā)機(jī),且網(wǎng)絡(luò)106可以是PCIe總線。在一些示例 中,通信接口 122可包括但不限于,用于蜂窩、WI-FI、超寬帶(UWB)、藍(lán)牙或衛(wèi)星傳輸?shù)氖瞻l(fā) 機(jī)。通信接口 122可包括有線I/0接口,如以太網(wǎng)接口、串行接口、通用串行總線(USB)接口、 INFINIBAND接口或其他有線接口。為了簡明起見,這些和其他組件從示出的計(jì)算設(shè)備102中 省略。
[0033]盡管在各示例中處理單元110被描述為駐留在計(jì)算設(shè)備102上且由通信接口 122連 接,但在一些示例中處理單元110還可駐留在不同計(jì)算設(shè)備上。在一些示例中,處理單元110 可駐留在對應(yīng)的計(jì)算設(shè)備102上,且可經(jīng)由通信接口 122通過網(wǎng)絡(luò)106交換數(shù)據(jù)。在一些示例 中,處理單元110中的至少兩者可駐留在不同的計(jì)算設(shè)備102上。在這樣的示例中,同一計(jì)算 設(shè)備102上的多個(gè)處理單元110可以使用計(jì)算設(shè)備102的接口總線114來交換數(shù)據(jù),而不同計(jì) 算設(shè)備102上的處理單元110可經(jīng)由網(wǎng)絡(luò)106交換數(shù)據(jù)。
[0034]在此描述的計(jì)算機(jī)可讀介質(zhì)(例如,計(jì)算機(jī)可讀介質(zhì)112)可包括計(jì)算機(jī)存儲介質(zhì) 和/或通信介質(zhì)。計(jì)算機(jī)存儲介質(zhì)可包括有形存儲單元,諸如以用于存儲信息(諸如計(jì)算機(jī) 可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù))的任意方法或技術(shù)實(shí)現(xiàn)的易失性存儲器、非易 失性存儲器或其他持久或輔助計(jì)算機(jī)存儲介質(zhì)、可移動(dòng)和不可移動(dòng)計(jì)算機(jī)存儲介質(zhì)。計(jì)算 機(jī)可讀介質(zhì)112或存儲器320(圖3)可以使計(jì)算機(jī)存儲介質(zhì)的示例。由此,計(jì)算機(jī)可讀介質(zhì) 112或存儲器320包括有形或物理形式的介質(zhì),該介質(zhì)被包括在設(shè)備或作為設(shè)備的一部分或 外置于設(shè)備的硬件組件中,該介質(zhì)包括但不限于:隨機(jī)存取存儲器(RAM)、靜態(tài)隨機(jī)存取存 儲器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲器(DRAM)、只讀存儲器(ROM)、可擦除可編程只讀存儲器 (EPROM)、電可擦除可編程只讀存儲器(EEPROM)、相變存儲器(PRAM)、閃存、光盤只讀存儲器 (CD-ROM)、數(shù)字多功能盤(DVD)、光卡或其它光存儲介質(zhì)、磁帶盒、磁帶、磁盤存儲、磁卡或其 他磁存儲設(shè)備或介質(zhì)、固態(tài)存儲器設(shè)備、存儲陣列、網(wǎng)絡(luò)附連存儲、存儲區(qū)域網(wǎng)絡(luò)、主計(jì)算機(jī) 存儲或任何其它存儲存儲器、存儲設(shè)備,或可用于存儲并維護(hù)供計(jì)算設(shè)備訪問的信息的存 儲介質(zhì)。
[0035]與計(jì)算機(jī)存儲介質(zhì)相反,通信介質(zhì)可在諸如載波之類的已調(diào)制數(shù)據(jù)信號或其他傳 輸機(jī)制中體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)。如本文所定義的,計(jì)算機(jī) 存儲介質(zhì)不包括通信介質(zhì)。
[0036]在一些示例中,計(jì)算機(jī)可讀介質(zhì)112可存儲能由(諸)處理單元110執(zhí)行的指令,如 上面所討論的,(諸)處理單元102可表示被結(jié)合到計(jì)算設(shè)備102中的處理單元。計(jì)算機(jī)可讀 介質(zhì)112還可存儲可由外部處理單元(諸如由外部CPU或以上討論的任意類型的外部處理器 或加速器)執(zhí)行的指令。在各示例中,至少一個(gè)處理單元11〇(例如,CPU、GPU或加速器)被結(jié) 合在計(jì)算設(shè)備102中,而在一些示例中,至少一個(gè)處理單元110(例如,CPU、GPU或加速器中的 一者或多者)在計(jì)算設(shè)備102的外部。
[0037]計(jì)算設(shè)備102的計(jì)算機(jī)可讀介質(zhì)112可存儲操作系統(tǒng)116。在一些示例中,操作系統(tǒng) 116不被使用(通常被稱為"裸機(jī)"配置)。在各示例中,操作系統(tǒng)116可包括使計(jì)算設(shè)備102能 夠或引導(dǎo)計(jì)算設(shè)備102經(jīng)由各種輸入(例如,用戶控件、網(wǎng)絡(luò)或通信接口、或存儲器設(shè)備)來 接收數(shù)據(jù)并且使用處理單元110來處理數(shù)據(jù)以生成輸出的各組件。操作系統(tǒng)116還可包括呈 現(xiàn)輸出(例如,在電子顯示器上顯示圖像、在存儲器中存儲數(shù)據(jù)、將數(shù)據(jù)發(fā)送給另一電子設(shè) 備等)的一個(gè)或多個(gè)組件。操作系統(tǒng)116可使得用戶能夠使用用戶接口(未示出)與訓(xùn)練引擎 118的模塊交互。附加地,操作系統(tǒng)116可包括執(zhí)行通常與操作系統(tǒng)相關(guān)聯(lián)的各種功能(例 如,存儲管理和設(shè)備內(nèi)部管理)的組件。
[0038] 說明性組件
[0039]圖2是解說用于實(shí)現(xiàn)使用算法來訓(xùn)練深神經(jīng)網(wǎng)絡(luò)(DNN)204(或多個(gè)DNN,且同樣全 部)的訓(xùn)練引擎202(如訓(xùn)練引擎118)以及用于實(shí)現(xiàn)數(shù)據(jù)分析引擎206(如DNN操作引擎120) 來操作經(jīng)訓(xùn)練的DNN 208的示例技術(shù)200的框圖。訓(xùn)練引擎202可以使用計(jì)算設(shè)備210來訓(xùn) 練,在一些情況下,計(jì)算設(shè)備210可包括計(jì)算設(shè)備102。數(shù)據(jù)分析引擎206可以使用諸如計(jì)算 設(shè)備104等計(jì)算設(shè)備來實(shí)現(xiàn)。為清楚起見,實(shí)現(xiàn)數(shù)據(jù)分析引擎206的分開的計(jì)算設(shè)備在圖2中 未示出。在至少一個(gè)示例中,計(jì)算設(shè)備210實(shí)現(xiàn)訓(xùn)練引擎202和數(shù)據(jù)分析引擎206兩者。計(jì)算 設(shè)備210可包括一個(gè)或多個(gè)處理單元212(1)-212(N),這可表示以上參考圖1討論的處理單 元110(1)-110(N)。在本文中,處理單元212(1)-212(N)單獨(dú)地或共同地用附圖標(biāo)記212來稱 呼。在一些示例中,處理單元212可以使以上參考圖1討論的處理單元212,例如GPGPU。處理 單元212可以通過總線114或網(wǎng)絡(luò)106(這兩者都在圖1中)來交換數(shù)據(jù)。處理單元212可以執(zhí) 行DNN訓(xùn)練塊214的指令,包括DNN 204、訓(xùn)練引擎202、訓(xùn)練數(shù)據(jù)216、以及訓(xùn)練數(shù)據(jù)216的各 小批(minibatch) 218。在下文討論小批218。
[0040] DNN訓(xùn)練可由多個(gè)節(jié)點(diǎn)以并行方式執(zhí)行來減少訓(xùn)練所需的時(shí)間。貫穿本公開,術(shù)語 "節(jié)點(diǎn)"指的是配置成這樣的并行DNN訓(xùn)練布置的一部分的設(shè)備或設(shè)備的一部分。在至少一 個(gè)示例中,訓(xùn)練引擎202在多個(gè)計(jì)算設(shè)備210中的每一者上執(zhí)行,且,每一計(jì)算設(shè)備210恰好 具有一個(gè)單核處理單元212。在這一示例中,每一這樣的計(jì)算設(shè)備210是一節(jié)點(diǎn)。在一些示例 中,訓(xùn)練引擎202在具有多個(gè)多核處理單元212的單個(gè)計(jì)算設(shè)備210上執(zhí)行。在這樣的示例 中,多核處理單元212的每一核表示一節(jié)點(diǎn)。也可使用這些極端之間的其他組合和點(diǎn)。例如, 單獨(dú)的加速器(例如,F(xiàn)PGA)可包括一個(gè)或多個(gè)節(jié)點(diǎn)。在其他示例中,處理單元212的多個(gè)核 可被配置成一起操作來作為單個(gè)節(jié)點(diǎn)。
[0041] 訓(xùn)練引擎202可使用算法220來訓(xùn)練DNN 204以用于執(zhí)行數(shù)據(jù)分析,如用于語音識 別。DNN 204可以是多層感知器(MLP)。如此,DNN 204可包括底部輸入層222(1)和頂層222 (L)(整數(shù)L>1)以及多個(gè)隱藏層,如多個(gè)層222(2)-222(3)。在本文中,層222(1)-222(L)單獨(dú) 地或共同地用附圖標(biāo)記222來稱呼。在使用上下文相關(guān)的DNN的一些示例中,DNN 204可包括 總共8層(N=8)。在各示例中,DNN 204可以是上下文相關(guān)的DNN或上下文無關(guān)的DNN。訓(xùn)練數(shù) 據(jù)216可由算法220用作訓(xùn)練DNN 204的訓(xùn)練數(shù)據(jù)。訓(xùn)練數(shù)據(jù)216可以包括包含來自人類說話 者的樣本語音的集合的語音語料庫。例如,語音語料庫可包括從美國或加拿大的北美英語 的說話者收集的北美英語語音樣本。然而,在其他示例中,取決于要被識別的語音的所需語 言或用于類似手寫識別或圖像分類之類的不同應(yīng)用的其他種類的訓(xùn)練數(shù)據(jù),訓(xùn)練數(shù)據(jù)216 可包括其他相應(yīng)語言(如中文、日語、法語等)的樣本語音。訓(xùn)練數(shù)據(jù)216還可包括與語料庫 的正確識別或分類答案有關(guān)的信息。使用這一信息,可以由DNN 204檢測語料庫的處理中的 誤差。這一信息可被用于例如計(jì)算相關(guān)于例如下式(1)的交叉熵準(zhǔn)則的值D的模型參數(shù)的梯 度。在各示例中,這一信息被用于計(jì)算諸如均方誤差("二次成本")函數(shù)等準(zhǔn)則的值。訓(xùn)練數(shù) 據(jù)216還可包括第二語料庫的測試集合以及該第二語料庫的正確分類數(shù)據(jù)??稍跍y試集合 上評估DNN 204的性能以調(diào)整訓(xùn)練,使得DNN 204在訓(xùn)練語料庫的限制之外高效地執(zhí)行。 [0042]由算法220所執(zhí)行的計(jì)算可以跨處理單元212來并行化。例如,在后向傳播期間,由 處理單元212(1)執(zhí)行的對輸入數(shù)據(jù)的計(jì)算可產(chǎn)生第一計(jì)算結(jié)果。該第一計(jì)算結(jié)果可被流水 線傳送到處理單元212(2)用于進(jìn)一步計(jì)算來生成第二計(jì)算結(jié)果。與第二計(jì)算結(jié)果的生成同 時(shí),處理單元212(1)可能正在處理額外的輸入數(shù)據(jù)以生成第三計(jì)算結(jié)果。在至少一些示例 中,與第二計(jì)算結(jié)果的生成同時(shí),處理單元212(1)可能正在將第一計(jì)算結(jié)果的至少一部分 傳送給另一處理單元212。處理單元212或節(jié)點(diǎn)的其他示例的這些并發(fā)計(jì)算可造成訓(xùn)練DNN 204的計(jì)算的流水線化,且因此造成由于所產(chǎn)生的計(jì)算并行化而造成的計(jì)算時(shí)間的減少。處 理單元212或節(jié)點(diǎn)的其他示例的并發(fā)計(jì)算和通信可造成等待數(shù)據(jù)到達(dá)節(jié)點(diǎn)的減少的延遲時(shí) 間且因此造成總體計(jì)算時(shí)間的減少。
[0043]在各示例中,算法220執(zhí)行的計(jì)算可使用一個(gè)或多個(gè)技術(shù)來增強(qiáng),如批選擇224、量 化226、模型條紋化228、交換230、以及數(shù)據(jù)傳送并行化232。因?yàn)橛?xùn)練數(shù)據(jù)216由算法作為輸 入樣本的各小批218來處理,如下所述,所以批選擇224可包括根據(jù)所選準(zhǔn)則來配置輸入樣 本批或小批的大小以平衡計(jì)算準(zhǔn)確度和執(zhí)行效率。在一示例中,該大小可被選擇成使算法 220的計(jì)算準(zhǔn)確度和執(zhí)行效率兩者最大化。在一示例中,該大小可被選擇成使算法220的執(zhí) 行效率最大化,同時(shí)提供所選的計(jì)算準(zhǔn)確度水平。批選擇224可作為算法220的一部分來執(zhí) 行或作為與算法220分開的代碼模塊來執(zhí)行,如圖所示。在至少一個(gè)示例中,計(jì)算子小批的 梯度,如下所述。
[0044] 此外,DNN 204中的層222(1 )-222(L)可由于DNN 204的各層中的單元數(shù)的差異而 具有不同大小。例如,DNN 204中的最大層可具有比一個(gè)或多個(gè)最小層的大小大10倍的大 小。因此,可能更有效的是將某一多核處理器專用于處理最大層,而在另一多核處理器上處 理最小層中的兩個(gè)或更多個(gè)。這樣的編組可減少往返延遲并提高效率。
[0045]量化226通過降低表示數(shù)據(jù)值的精確度來減少在各節(jié)點(diǎn)之間發(fā)送的信息量。算法 220可以在各節(jié)點(diǎn)之間轉(zhuǎn)移例如神經(jīng)網(wǎng)絡(luò)模型的梯度值。梯度值可以是32位IEEE 754浮點(diǎn) 值(C語言"f loat"值)、64位(C"double")值、或其他位深的值。量化226可包括從一個(gè)節(jié)點(diǎn)傳 送梯度值的表示(例如,近似),該表示使用比梯度值少的位,例如少于32位,例如1位。量化 226還包括逆操作"重構(gòu)",即將在節(jié)點(diǎn)處接收到的經(jīng)量化的值解釋成具體32位值或具有比 梯度值更高的精確度或位深的其他值,例如一位以上。量化226包括跟蹤"誤差值",即表示 梯度值與它們的經(jīng)量化表示之間的差異的值,以及部分基于誤差值來確定量化值。這有利 地準(zhǔn)許通過在連續(xù)梯度值上散布量化誤差來維持訓(xùn)練過程的準(zhǔn)確度。量化226在下文討論, 例如參考式(1〇)、(11)、(12)、(13)、(14)以及(15)。在下文參考式(10)討論的示例中,通過 在量化之前將先前小批的誤差加到當(dāng)前小批的梯度值來確定量化值。
[0046] 模型條紋化228是由多個(gè)相應(yīng)處理單元(如處理單元212的多個(gè)處理器)對DNN 204 的計(jì)算模型的各部分的處理。模型條紋化228在本文中也被稱為"模型并行化"。
[0047] 交換230是在各節(jié)點(diǎn)之間傳輸梯度值。這準(zhǔn)許以數(shù)據(jù)并行的方式跨大量節(jié)點(diǎn)高效 地計(jì)算模型更新。這進(jìn)而減少訓(xùn)練DNN 204所需的流逝時(shí)間。在各示例中,交換230結(jié)合量化 226來執(zhí)行以在各節(jié)點(diǎn)之間交換經(jīng)量化的梯度值。交換230可包括將各梯度值分區(qū)并執(zhí)行分 布式歸納(all-reduce)來將梯度值的更新提供給所有節(jié)點(diǎn)。交換230在下文參考圖5和6來 討論。
[0048] 算法220的計(jì)算迭代可執(zhí)行以下步驟:輸入數(shù)據(jù)的前向傳播、誤差后向傳播、以及 模型更新。數(shù)據(jù)傳送并行化232可包括將來自算法220的某個(gè)計(jì)算迭代的輸出數(shù)據(jù)的流傳送 與該計(jì)算迭代中的其他步驟并行化。例如,梯度矩陣可與計(jì)算并發(fā)地傳送。在流傳送時(shí)間比 計(jì)算時(shí)間短的情況中,這一并行化可減少或消除在執(zhí)行計(jì)算時(shí)由于算法220的執(zhí)行期間各 處理單元之間的數(shù)據(jù)交換造成的時(shí)間延遲。在至少一個(gè)示例中,前向傳播、后向傳播以及模 型更新步驟是以該次序執(zhí)行的。
[0049]由此,通過使用算法220和訓(xùn)練數(shù)據(jù)216,訓(xùn)練引擎202可從DNN 204產(chǎn)生經(jīng)訓(xùn)練的 DNN 208。進(jìn)而,數(shù)據(jù)分析引擎206可使用經(jīng)訓(xùn)練的DNN 208來從輸入數(shù)據(jù)236產(chǎn)生輸出數(shù)據(jù) 234。在一些示例中,數(shù)據(jù)分析引擎206可以是語音一文本引擎,它使用采用經(jīng)訓(xùn)練的上下文 相關(guān)的DNN-HMM形式的經(jīng)訓(xùn)練的DNN 208。語音-到-文本引擎可使用經(jīng)訓(xùn)練的上下文相關(guān)的 DNN-HMM來以輸出文本的形式從采用輸入語音形式的輸入數(shù)據(jù)236產(chǎn)生輸出數(shù)據(jù)234。數(shù)據(jù) 分析引擎206可在計(jì)算設(shè)備210或類似于計(jì)算設(shè)備210的計(jì)算設(shè)備上執(zhí)行。此外,數(shù)據(jù)分析引 擎206可以從計(jì)算設(shè)備210(它可以是圖1的智能電話計(jì)算設(shè)備104(5))的話筒和音頻處理組 件接收實(shí)況輸入數(shù)據(jù)236。在各示例中,數(shù)據(jù)分析引擎206可從媒體文件或流接收輸入數(shù)據(jù) 236,例如用于媒體文件/流中說出的內(nèi)容的音頻索引的目的。在一些示例中,數(shù)據(jù)分析引擎 206還可以是文本-到-語音引擎(它使用經(jīng)訓(xùn)練的上下文相關(guān)的DNN來基于輸入文本(輸入 數(shù)據(jù)236)合成輸出語音(輸出數(shù)據(jù)234))或手寫識別引擎。
[0050] 在一些示例中,用本文描述的技術(shù)(例如,技術(shù)224-232)中的一者或多者來增強(qiáng)的 算法220可被實(shí)現(xiàn)來在展示類似特性的其他情形下產(chǎn)生經(jīng)訓(xùn)練的上下文無關(guān)的DNN 208。以 此方式,出于各種數(shù)據(jù)分析目的,可用合適的訓(xùn)練數(shù)據(jù)訓(xùn)練上下文無關(guān)的形式的DNN 204。 所述特性可包括導(dǎo)致延長的處理時(shí)間的更大的訓(xùn)練數(shù)據(jù)集(如大于5000萬、13億等個(gè)樣 本)、其中DNN的每個(gè)網(wǎng)絡(luò)的輸出超過閾值(如大于兩千、四千等個(gè)數(shù)據(jù)輸出)的DNN結(jié)構(gòu)、等 等。數(shù)據(jù)分析目的可包括將經(jīng)訓(xùn)練的上下文無關(guān)的DNN用于諸如圖像識別、手寫識別、計(jì)算 機(jī)視覺、視頻跟蹤等之類的活動(dòng)。
[0051] 圖3是示出可表示計(jì)算設(shè)備102、104、210的計(jì)算設(shè)備300的示例組件的說明性示 圖。計(jì)算設(shè)備300可實(shí)現(xiàn)用于訓(xùn)練DNN 304的訓(xùn)練引擎302,如訓(xùn)練引擎118、202。計(jì)算設(shè)備 300可被用于確定對一個(gè)或多個(gè)數(shù)學(xué)優(yōu)化問題(例如數(shù)學(xué)最小化問題)的解。例如,通過示例 性隨機(jī)梯度下降(SGD)過程的DNN訓(xùn)練可涉及數(shù)學(xué)上使例如交叉熵D最小化(式(1))。計(jì)算設(shè) 備300可被配置成包括或充當(dāng)一個(gè)或多個(gè)節(jié)點(diǎn)。在各示例中,DNN 304可以是上下文相關(guān)的 DNN或上下文無關(guān)的DNN。
[0052] 計(jì)算設(shè)備300可包括一個(gè)或多個(gè)處理單元306,其可表示處理單元110、212。處理單 元306可包括例如以上描述的處理單元類型,諸如CPU類型或GPGPU類型處理單元。在各示例 中,計(jì)算設(shè)備300可以是能夠主控一個(gè)或多個(gè)處理單元306來處理數(shù)據(jù)的服務(wù)器、臺式計(jì)算 機(jī)、另一類型的電子設(shè)備、或上述另一設(shè)備類型、或它們中的任何的組合。
[0053] 計(jì)算設(shè)備300還可包括通信接口 308,其可表示通信接口 122。例如,通信接口 308可 包括諸如NIC等通過網(wǎng)絡(luò)發(fā)送和接收通信的收發(fā)機(jī)設(shè)備,例如如上所述。如此,計(jì)算設(shè)備300 可具有網(wǎng)絡(luò)能力。例如,計(jì)算設(shè)備300可以經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)106(如因特網(wǎng))來與其他電 子設(shè)備(例如,膝上型計(jì)算機(jī)、服務(wù)器等)交換數(shù)據(jù)。
[0054]計(jì)算設(shè)備300還可包括一個(gè)或多個(gè)輸入/輸出(I/O)接口 310,以允許計(jì)算設(shè)備300 與輸入/輸出設(shè)備(未示出)進(jìn)行通信,輸入/輸出設(shè)備諸如包括外圍輸入設(shè)備(例如,鍵盤、 鍵區(qū)、鼠標(biāo)、筆、游戲控制器、語音輸入設(shè)備(如話筒)、話音設(shè)備設(shè)備、或語音識別設(shè)備、觸摸 輸入設(shè)備、姿勢輸入設(shè)備(如觸摸屏)等)的用戶輸入設(shè)備和包括外圍輸出設(shè)備(例如,視覺 顯示器、打印機(jī)、音頻揚(yáng)聲器、觸覺輸出等)的輸出設(shè)備。計(jì)算設(shè)備300可經(jīng)由與任何其他合 適的設(shè)備的I/O接口 310或使用其他電子/軟件交互方法進(jìn)行通信。這樣的通信可被用在例 如實(shí)現(xiàn)數(shù)據(jù)分析引擎206的計(jì)算設(shè)備300上。輸入數(shù)據(jù)236可經(jīng)由I/O接口 310例如從用戶或 計(jì)算機(jī)系統(tǒng)(如監(jiān)視系統(tǒng))接收,且輸出數(shù)據(jù)234可經(jīng)由I/O接口 310例如向用戶或計(jì)算機(jī)系 統(tǒng)(如報(bào)告系統(tǒng))提供。
[0055]計(jì)算設(shè)備300還可包括一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)312,它可表示計(jì)算機(jī)可讀介質(zhì) 112。計(jì)算機(jī)可讀介質(zhì)312可包括操作系統(tǒng),例如操作系統(tǒng)116(為清楚起見省略)。在示出的 示例中,計(jì)算機(jī)可讀介質(zhì)312包括數(shù)據(jù)存儲314。在一些示例中,數(shù)據(jù)存儲314包括結(jié)構(gòu)化或 未結(jié)構(gòu)化的數(shù)據(jù)存儲,如數(shù)據(jù)庫或數(shù)據(jù)倉庫。在一些示例中,數(shù)據(jù)存儲314包括語料庫或具 有一個(gè)或多個(gè)表、陣列、索引、存儲的過程等的關(guān)系數(shù)據(jù)庫以實(shí)現(xiàn)包括例如超文本標(biāo)記語言 (HTML)表格、資源描述框架(RDF)表格、web本體語言(OWL)表格或可擴(kuò)展標(biāo)記語言(XML)表 格的數(shù)據(jù)訪問。數(shù)據(jù)存儲314可存儲數(shù)據(jù)以用于對計(jì)算機(jī)可讀介質(zhì)312中所存儲的和/或由 處理單元和/或加速器306執(zhí)行的進(jìn)程、應(yīng)用、組件、和/或模塊的操作。在至少一個(gè)示例中, 數(shù)據(jù)存儲可以存儲訓(xùn)練數(shù)據(jù)316、DNN 304或其他數(shù)學(xué)模型、用于訓(xùn)練DNN 304的數(shù)據(jù)(如臨 時(shí)變量)、經(jīng)訓(xùn)練的DNN 318、或它們的組合。以上提到的數(shù)據(jù)中的一些或全部可被存儲在一 個(gè)或多個(gè)處理單元306板載上的分開的存儲器320上,諸如在CPU類型處理器、GPU類型處理 器、FPGA類型加速器、DSP類型加速器或另一加速器板載上的存儲器。存儲器320可包括例如 CPU或GPU高速緩存存儲器。
[0056]在至少一個(gè)示例中,一種系統(tǒng)包括其上具有優(yōu)化問題的多個(gè)模塊和計(jì)算模型的一 個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)312。例如,計(jì)算設(shè)備300的計(jì)算機(jī)可讀介質(zhì)312可以存儲DNN訓(xùn)練 引擎302的各模塊。計(jì)算模型可包括例如神經(jīng)網(wǎng)絡(luò)模型,如DNN 304。該系統(tǒng)可包括多個(gè)節(jié) 點(diǎn),例如計(jì)算設(shè)備300或在其上執(zhí)行的節(jié)點(diǎn)。節(jié)點(diǎn)可包括操作親合到計(jì)算機(jī)可讀介質(zhì)312中 的至少一者的至少一個(gè)處理單元306 (例如,處理器或處理器的核)306。處理單元306可被適 配成互通信并執(zhí)行多個(gè)模塊中的各模塊。例如,計(jì)算設(shè)備300可包括一個(gè)或多個(gè)節(jié)點(diǎn)并經(jīng)由 網(wǎng)絡(luò)106與其他計(jì)算設(shè)備300的節(jié)點(diǎn)通信。該系統(tǒng)中計(jì)算設(shè)備300的節(jié)點(diǎn)可如上所述地操作 以確定優(yōu)化問題的修改值,例如神經(jīng)網(wǎng)絡(luò)訓(xùn)練的梯度。
[0057]存儲在DNN訓(xùn)練引擎302的計(jì)算機(jī)可讀介質(zhì)312上的模塊可包括一個(gè)或多個(gè)模塊或 API,它被示為批選擇模塊322、量化模塊324、更新確定模塊326、更新模塊328、傳送模塊 330、以及合計(jì)模塊332。各模塊還可包括模型條紋化模塊(例如實(shí)現(xiàn)模型條紋化228)和數(shù)據(jù) 傳送并行化模塊(例如,實(shí)現(xiàn)數(shù)據(jù)傳送并行化232)(為清楚起見這兩者都被省略)。模塊的數(shù) 量可變得更高或更低,且各類型的模塊可按各種組合被使用。例如,與示出的模塊相關(guān)聯(lián)描 述的功能可被組合以由更少數(shù)量的模塊或API執(zhí)行或可被劃分并由更多數(shù)量的模塊或API 執(zhí)行。例如,量化模塊324和傳送模塊330可被組合在執(zhí)行這兩個(gè)功能的單個(gè)模塊中。在各示 例中,處理單元306可經(jīng)由總線334訪問計(jì)算機(jī)可讀介質(zhì)312上的模塊,該總線232可表示圖1 的總線114。通信接口 308和I/O接口 310也可經(jīng)由總線334與處理單元306通信。
[0058]在一示例中,各模塊包括配置成確定計(jì)算模型的修改值的更新確定模塊326。量化 模塊324可被配置成使用(例如結(jié)合)所存儲的誤差值來量化所確定的修改值并使用所確定 的修改值和經(jīng)量化的修改值來更新所存儲的誤差值。這可以例如以上參考量化226所描述 的那樣完成。傳送模塊330可被配置成將經(jīng)量化的修改值中的至少一些傳送給各節(jié)點(diǎn)(例 如,處理單元306)中的至少一個(gè)其他節(jié)點(diǎn)。這可以例如以上參考交換320所描述的那樣完 成。傳送模塊330還可被配置成接收來自其他節(jié)點(diǎn)的修改值,且合計(jì)模塊332可被配置成合 計(jì)數(shù)據(jù)存儲314中的數(shù)據(jù)與從其他節(jié)點(diǎn)接收到的數(shù)據(jù)。在一個(gè)示例中,傳送模塊330的操作 在下文參考圖5和6討論。更新模塊328可被配置成根據(jù)接收到的經(jīng)量化的修改值來修改所 存儲的計(jì)算模型。更新模塊328可被配置成根據(jù)由合計(jì)模塊332提供的經(jīng)合計(jì)的接收到的修 改值來修改所存儲的計(jì)算模型。這些功能在下文進(jìn)一步討論。
[0059]更新確定模塊326和更新模塊328可以使用算法220基于訓(xùn)練數(shù)據(jù)316(它可以是語 音語料庫)來訓(xùn)練DNN 304。在出于語音分析目的來訓(xùn)練DNN 304的情況中,DNN 304可以是 連同HMM-起被使用的上下文相關(guān)的DNN。在一些示例中,DNN可以是上下文無關(guān)的DNN13DNN 304可以是MLP,MLP將給定觀察向量〇(例如,音頻數(shù)據(jù))的類s(例如,三音素(triphone)或 senone)的后驗(yàn)概率PsIc1(Slo)建模成對數(shù)線性模型的(L+1)個(gè)層的棧。根據(jù)式(1)、(2)以及 (3),給定隱藏層的輸入向量Λ前L層(1 = 0...L-1)對隱藏二元向量h1(隱藏層的輸出)的后 驗(yàn)概率進(jìn)行建模,而頂層L對所需類后驗(yàn)進(jìn)行建模。式(1)、(2)以及(3)使用權(quán)重矩陣W 1和偏 置向量a1,其中
子別是h1和Z1U 1)第j個(gè)分量。
[0060]
[0061]
[0062]
[0063] 對所有隱藏變量的全速求和(full-out summation)有時(shí)是不可行的。在這種情況 下,這一總和可通過"平均場近似"來逼近,其中到隱藏層的輸入V1被當(dāng)作前一層的對應(yīng)輸 出向量h1的期望值。進(jìn)一步,為了用于DNN 304,狀態(tài)后驗(yàn)?5|。(8|〇)可通過除以它們的先驗(yàn) 來被轉(zhuǎn)換成縮放的似然性。
[0064] 因此,更新確定模塊326和更新模塊328可以根據(jù)式(4)中所示的交叉熵準(zhǔn)則D來訓(xùn) 練DNN 304:
[0065]
(4)
[0066] 通過使用圖5所示的隨機(jī)梯度下降(SGD),其中學(xué)習(xí)速率是ε:
[0067]
(5)
[0068] 梯度次P/在式(6)、(7)、(8)以及(9)中示出,具有誤差信號eHt),逐分量導(dǎo)數(shù) Oy(Z) = Oj(Z) · (l-Oj(z)),以及(log softmax)j'(z) = 5s(t),j-softmaxj(z),以及 Kronecker 增量 δ "
[0069]
[0070]
[0071]
[0072]
[0073] 達(dá)些寺式怩1興J Ρ」仕雙字上1 兀化父義燜的公式。
[0074] 在至少一個(gè)示例中,更新確定模塊326基于從訓(xùn)練數(shù)據(jù)316選擇的小批218來確定 DNN 304的各梯度,例如沒值,式(6)。更新確定模塊被配置成使用隨機(jī)梯度下降算法 來確定修改值。更新模塊328基于來自一個(gè)或多個(gè)節(jié)點(diǎn)的梯度(修改值)(式(5))修改例如 DNN的所存儲的計(jì)算模型。量化模塊324和傳送模塊330合作來按需向各節(jié)點(diǎn)提供所確定的 梯度。以下將結(jié)合圖5-6討論傳送的各示例。
[0075] 對DNN 304的訓(xùn)練可通過使用多個(gè)節(jié)點(diǎn)(例如,多個(gè)處理單元306)以并行化方式 (即同時(shí)執(zhí)行多個(gè)計(jì)算)將后向傳播的計(jì)算流水線化。在各示例中,流水線化不被使用。在一 些示例中,節(jié)點(diǎn)中的一者或多者在計(jì)算的同時(shí)進(jìn)行通信。
[0076] 收斂(即,訓(xùn)練完成)可通過使用來自訓(xùn)練數(shù)據(jù)3116的隨機(jī)采樣的幀318的不同大 小的各批(本文中稱為"小批")執(zhí)行隨機(jī)梯度下降來達(dá)成,如以上在式(5)中描述的。小批的 大小可受到算法220的并行化計(jì)算性質(zhì)的限制。例如,對DNN 304的模型更新被用于算法220 的計(jì)算迭代,模型更新涉及處理單元之間的數(shù)據(jù)交換。然而,跨多個(gè)處理單元的模型更新可 在算法220的執(zhí)行期間使用高帶寬量。在一個(gè)示例中,DNN 304(具有7個(gè)隱藏層)可包括數(shù)以 億計(jì)的參數(shù)。在這樣的示例中,對相關(guān)于DNN 304的樣本幀的合理大小的小批的處理可被轉(zhuǎn) 換成由節(jié)點(diǎn)中的每一者收集和重新分發(fā)400兆字節(jié)(MB)價(jià)值的梯度。
[0077] 用于訓(xùn)練DNN的單獨(dú)小批的大小可受兩個(gè)因素的約束。小批大小的上限約束是模 型更新的頻率。樣本幀128的小批的小批大小越大可導(dǎo)致越少的模型更新。然而,增加批大 小可導(dǎo)致計(jì)算準(zhǔn)確度的損失,尤其是在算法220的早期計(jì)算迭代期間。計(jì)算準(zhǔn)確度的這種損 失可導(dǎo)致算法220延長的執(zhí)行時(shí)間來達(dá)到收斂,即完成DNN 304的訓(xùn)練。在極端情況下,延長 的執(zhí)行時(shí)間可甚至導(dǎo)致算法220不能達(dá)到收斂,即不能完成訓(xùn)練。小批大小的下限約束是節(jié) 點(diǎn)以及其中的處理單元306的利用效率。節(jié)點(diǎn)所執(zhí)行的各計(jì)算周期的使用效率可隨樣本幀 小批218的小批大小的減小而降低。從而,小批大小的過度減少還可能導(dǎo)致低效,即延長算 法220達(dá)到收斂的執(zhí)行時(shí)間。
[0078] 在至少一個(gè)示例中,批選擇模塊322可以基于所配置的小批大小將訓(xùn)練數(shù)據(jù)316分 成各隨機(jī)采樣的幀小批218,例如如以上參考批選擇224描述的。小批的示例在下文參考圖5 討論。批選擇模塊322可以基于處理單元之間的數(shù)據(jù)傳送速率和處理單元306每秒能夠執(zhí)行 的操作數(shù)來配置樣本幀小批218的小批大小。為提高計(jì)算效率,小批大小可被設(shè)置成使得對 小批執(zhí)行計(jì)算所需的時(shí)間約等于將與小批相關(guān)的數(shù)據(jù)傳送給和傳送出節(jié)點(diǎn)所需的時(shí)間。在 至少一個(gè)示例中,小批大小被選擇得盡可能高同時(shí)至少提供所選擇的準(zhǔn)確度,且節(jié)點(diǎn)數(shù)量 被選擇以使得使用所選大小的小批執(zhí)行計(jì)算的時(shí)間基本上等于傳遞所選大小的小批的梯 度所需的時(shí)間。這準(zhǔn)許數(shù)據(jù)傳輸與計(jì)算重疊。例如,給定能夠進(jìn)行每秒2-4萬億次浮點(diǎn)運(yùn)算 (TFLOPS)的2-4個(gè)GPGPU的陣列,以及GPGPU之間的6G字節(jié)(GB)/秒的傳送速率,小批大小可 以在每樣本小批256至1024個(gè)樣本幀的范圍內(nèi)。
[0079] 在至少一個(gè)示例中,在處理單元306的數(shù)據(jù)傳輸速率相對高于處理單元306的執(zhí)行 速度時(shí),批選擇模塊322可以配置較大的小批大小。相反,在處理單元306的執(zhí)行速度相對高 于處理單元306之間的數(shù)據(jù)傳送速率時(shí),批選擇模塊322可以配置較小的小批大小。
[0080] 算法220所執(zhí)行的示例計(jì)算迭代可執(zhí)行以下步驟:輸入數(shù)據(jù)的前向傳播、誤差后向 傳播、以及模型更新。這些步驟可按所列次序或另一次序執(zhí)行。輸入數(shù)據(jù)的前向傳播可由式 (1)、(2)以及⑶描述,誤差后向傳播可由式⑶描述,且模型更新可由式(5)描述。
[0081] 進(jìn)一步,數(shù)據(jù)傳送并行化232技術(shù)涉及數(shù)據(jù)傳送與計(jì)算的并行化。數(shù)據(jù)傳送并行化 232的第一部分可在執(zhí)行誤差后向傳播步驟之后發(fā)生。在這一部分中,來自處理某些數(shù)據(jù)或 訓(xùn)練數(shù)據(jù)316的一部分的節(jié)點(diǎn)處的計(jì)算的輸出數(shù)據(jù)可被流傳輸?shù)教幚鞤NN 304的模型或訓(xùn) 練數(shù)據(jù)316的不同部分的另一節(jié)點(diǎn)。這種流傳送可與模型更新步驟或輸入數(shù)據(jù)前向傳播步 驟并行地或部分并行地執(zhí)行,因?yàn)槟P透虏襟E和前向傳播步驟使用與所述輸出數(shù)據(jù)不同 的數(shù)據(jù)。同樣,在執(zhí)行輸入數(shù)據(jù)前向傳播步驟之后,來自一個(gè)節(jié)點(diǎn)處的計(jì)算的輸出數(shù)據(jù)可被 流傳輸?shù)搅硪还?jié)點(diǎn)。這種流傳送可與對另一誤差后向傳播步驟的誤差計(jì)算并行地或部分并 行地執(zhí)行。從而,在其中流傳送時(shí)間比計(jì)算時(shí)間短的示例中,對數(shù)據(jù)傳送并行化232的使用 可減少或消除由多個(gè)處理單元之間的數(shù)據(jù)交換導(dǎo)致的任何時(shí)間延遲。
[0082] 如上所述,模型條紋化228是跨多個(gè)節(jié)點(diǎn)(包括處理單元,如處理單元306)并行地 處理DNN 304的各部分。每一節(jié)點(diǎn)可以計(jì)算梯度條紋(部分)。梯度條紋隨后可例如被分發(fā)給 其他節(jié)點(diǎn),例如各處理單元306中的處理單元,或在各節(jié)點(diǎn)之間交換以用于完成模型的當(dāng)前 迭代的計(jì)算(例如,使用訓(xùn)練數(shù)據(jù)的當(dāng)前小批來訓(xùn)練計(jì)算)。在各示例中,模型條紋化228可 與數(shù)據(jù)并行化一起使用,例如通過跨多群模型并行節(jié)點(diǎn)并行地運(yùn)行數(shù)據(jù)。數(shù)據(jù)并行化在下 文描述,例如參考式(16)。在一示例中,模型條紋化228可與層并行化一起使用以準(zhǔn)許更靈 活地并行地處理各層。
[0083]在用于計(jì)算模型的數(shù)學(xué)優(yōu)化的系統(tǒng)的至少一個(gè)示例中(例如,用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練, 如DNN訓(xùn)練),節(jié)點(diǎn)中的每一者包括操作耦合到相應(yīng)計(jì)算機(jī)可讀介質(zhì)312的多個(gè)處理單元 306。在這一示例中,每一處理單元306被配置成至少執(zhí)行更新確定模塊326。在一示例中,該 系統(tǒng)可包括通信地連接各節(jié)點(diǎn)的縱橫結(jié)構(gòu)(例如,圖1的網(wǎng)絡(luò)106)。各節(jié)點(diǎn)可被配置成執(zhí)行 傳送模塊330以經(jīng)由縱橫結(jié)構(gòu)與執(zhí)行更新確定模塊326同時(shí)地傳送經(jīng)量化的修改值中的至 少一些。在一些示例中,每一節(jié)點(diǎn)的至少一個(gè)處理單元306可包括配置成執(zhí)行更新模塊328 和量化模塊324的通用圖形處理單元(GPGPU),以及配置成執(zhí)行傳送模塊330的中央處理單 元(CPU)〇
[0084]根據(jù)各示例的計(jì)算機(jī)可讀介質(zhì)312上具有計(jì)算機(jī)可執(zhí)行指令。計(jì)算機(jī)可執(zhí)行指令 在被執(zhí)行時(shí)配置計(jì)算機(jī)(例如,計(jì)算設(shè)備300或其中的處理單元306)來執(zhí)行各操作。各操作 可包括下文參考圖4-6討論的操作。在至少一個(gè)示例中,各操作可包括使用訓(xùn)練樣本來確定 神經(jīng)網(wǎng)絡(luò)模型的梯度的第一值。這可由更新確定模塊326來完成。包括隨機(jī)梯度下降和 Hessian-free方法的后向傳播技術(shù)可由更新確定模塊326中的指令來控制。
[0085]各操作還包括例如通過傳送模塊330傳送梯度的第一值的的一部分并接收與梯度 的第一值的第二不同部分相對應(yīng)的第二值。各操作可包括使傳送和接收重疊。重疊的各示 例在圖5中示出。
[0086] 值的第一和第二部分可對應(yīng)于模型的不同條紋,例如如下文參考圖5討論的。例 如,圖5的節(jié)點(diǎn)1傳送的梯度的第一值的的一部分可以是與DNN 304的子集2相對應(yīng)的條紋 518。節(jié)點(diǎn)1可以接收條紋522,這對應(yīng)于DNN 304的不同子集1。在該示例中,第一值的對應(yīng)第 二部分是條紋516。
[0087] 各操作還可包括合計(jì)第二部分(例如,條紋516)與接收到的第二值(例如,條紋 522)。這可由合計(jì)模塊332來完成。各操作隨后可包括例如使用傳送模塊330傳送經(jīng)合計(jì)的 值。這準(zhǔn)許高效的數(shù)據(jù)并行DNN訓(xùn)練。
[0088] 在至少一個(gè)示例中,各操作還包括在傳送第一部分之前量化所確定的第一值。各 操作還可包括在合計(jì)之前確定經(jīng)重構(gòu)(逆量化)的值并使用經(jīng)重構(gòu)的值來變換接收到的第 二值。這些操作可由量化模塊324執(zhí)行,這可例如至少部分地基于梯度的值來確定經(jīng)重構(gòu)的 值。例如,經(jīng)重構(gòu)的值q的經(jīng)量化的值可以是被量化成q的前一小批中的所有梯度的均值(參 見例如式(14))。相應(yīng)經(jīng)量化的值q的經(jīng)重構(gòu)的值的歷史可被記錄并平滑化,例如使用指數(shù) 加權(quán)移動(dòng)平均(EffMA)或移動(dòng)窗口。經(jīng)重構(gòu)的值可每η個(gè)小批(對于所選擇的η)或以隨機(jī)的間 隔來被重新計(jì)算。在取平均或以其他方式使用梯度來確定重構(gòu)值的任何技術(shù)中,一些梯度 可以從梯度的平均或組合中省略。例如,局外點(diǎn)(ou 11 i er)可以從平均省略,或隨機(jī)選擇的 元素可被省略。在各示例中,經(jīng)重構(gòu)的值由量化模塊324確定且與經(jīng)量化的數(shù)據(jù)一起傳送。 這仍然造成所傳送數(shù)據(jù)的節(jié)省。例如,被量化在一起的一群值的維度X可以是例如2048,且 樣本可以是浮點(diǎn)值。未經(jīng)量化的數(shù)據(jù)是32X位。量化成1位且與數(shù)據(jù)一起傳送兩個(gè)32位浮點(diǎn) 重構(gòu)值(一個(gè)針對位且一個(gè)針對"Γ位)將數(shù)據(jù)傳輸要求降低至X+2x32。對于任何整數(shù)X 彡3而言,這是節(jié)省。
[0089] 在DNN訓(xùn)練系統(tǒng)的各示例中,例如實(shí)現(xiàn)諸如以上描述的那些指令等計(jì)算機(jī)程序指 令,該系統(tǒng)中的各節(jié)點(diǎn)中的至少一個(gè)節(jié)點(diǎn)可以將經(jīng)量化的修改值直接傳送給各節(jié)點(diǎn)中的至 少一個(gè)其他節(jié)點(diǎn)。即,各節(jié)點(diǎn)可按對等拓?fù)浣Y(jié)構(gòu)而非主機(jī)-從機(jī)拓?fù)浣Y(jié)構(gòu)來通信。然而,本文 的各示例不限于對等的且可與節(jié)點(diǎn)互連的各種拓?fù)浣Y(jié)構(gòu)一起操作。使用對等傳輸可有利地 準(zhǔn)許多個(gè)節(jié)點(diǎn)同時(shí)傳送數(shù)據(jù)且因而更高效地使用可用帶寬。
[0090] 在至少一個(gè)示例中,該系統(tǒng)中的各單獨(dú)節(jié)點(diǎn)包括耦合到相應(yīng)至少一個(gè)處理單元 306的相應(yīng)存儲器320。在這一示例中,單獨(dú)存儲器320可被配置成存儲對應(yīng)節(jié)點(diǎn)的相應(yīng)私有 量化狀態(tài),例如包括以上參考圖2的量化226描述的所存儲的誤差值。在這些示例中的一些 示例中,各節(jié)點(diǎn)有利地不共享與量化誤差有關(guān)的狀態(tài)。這準(zhǔn)許各節(jié)點(diǎn)關(guān)于量化獨(dú)立地操作, 這可減少要傳送的狀態(tài)數(shù)據(jù)的量并提高訓(xùn)練速度。
[0091] 在一些示例中,節(jié)點(diǎn)包括連接到通信接口 308的CPU和配置成執(zhí)行更新確定模塊 326中的指令的GPGPU。在這些示例中的一些示例中,傳送模塊330可例如被配置成與將經(jīng)量 化的修改值中的至少一些傳送給節(jié)點(diǎn)或其他處理單元306中的至少其他一者并行地,將第 二經(jīng)量化的修改值從GPGPU傳送給CPU。以此方式,計(jì)算和數(shù)據(jù)傳輸可以不僅在節(jié)點(diǎn)之間重 疊,還在節(jié)點(diǎn)內(nèi)重疊。這可準(zhǔn)許維持節(jié)點(diǎn)中的計(jì)算和通信資源兩者的高利用因子,從而提高 訓(xùn)練速度。在支持設(shè)備(如CPU、GPGPU、或網(wǎng)絡(luò)控制器)之間的直接存儲器訪問(DMA)的系統(tǒng) 中,DMA傳輸可被用來與計(jì)算并行地在節(jié)點(diǎn)內(nèi)移動(dòng)數(shù)據(jù)。
[0092] 說明性過程
[0093] 圖4是示出訓(xùn)練深神經(jīng)網(wǎng)絡(luò)的示例過程400的示圖。
[0094]在框402,訓(xùn)練引擎(如圖1的訓(xùn)練引擎118、圖2的訓(xùn)練引擎202、或圖3的訓(xùn)練引擎 302)確定神經(jīng)網(wǎng)絡(luò)模型的梯度矩陣。如以上參考更新確定模塊326所述,訓(xùn)練引擎202可執(zhí) 行例如以下步驟:另一神經(jīng)網(wǎng)絡(luò)訓(xùn)練算法的隨機(jī)梯度下降(SGD,例如式(5))或包括SGD和其 他技術(shù)的組合神經(jīng)網(wǎng)絡(luò)訓(xùn)練算法。術(shù)語"矩陣"不要求任何特定維度或大小的矩陣。梯度矩 陣可小至單個(gè)標(biāo)量以及具有任何數(shù)量的維度或這些維度中的任何程度。在一示例中,梯度 矩陣是 2048 X 2048。
[0095]在框404,訓(xùn)練引擎202使用對應(yīng)的所存儲的誤差矩陣來量化梯度矩陣。例如,誤差 矩陣可如下參考式(10)所討論的被結(jié)合在量化中。量化可包括例如確定諸如梯度矩陣的相 應(yīng)元素的近似單個(gè)位表示等單個(gè)位表示。在一些示例中,經(jīng)量化的表示每值可具有兩個(gè)位、 三個(gè)位、或任何數(shù)量b個(gè)位,b小于梯度矩陣在量化之前的位計(jì)數(shù)B。在框406,訓(xùn)練引擎202使 用(例如,結(jié)合)對應(yīng)的經(jīng)量化的梯度矩陣來更新誤差矩陣。
[0096] 在至少一個(gè)示例中,量化(框404)和更新(框406)根據(jù)式(10)和(11)來執(zhí)行,其中 GljlU)是梯度參數(shù),是其經(jīng)量化的表示,Q( ·)是量化函數(shù),Q、·)是對應(yīng)逆量 化(重構(gòu))函數(shù),AljlU)是量化誤差,N是小批大小,且t是樣本索引。
[0097] (KI)
[0098] (I!)
[0099] 如可看到的,小批中的樣本t-N的量化誤差A(yù)ljlU-N)被用于確定下一小批中的對 應(yīng)樣本的經(jīng)量化的值此外,誤差矩陣Δ是經(jīng)更新的(Δ ^(t)),使得誤差將盡 可能針對樣本t+N的下一量化中的給定Q被校正。
[0100] 在至少一個(gè)示例中,量化函數(shù)是式(12)中示出的閾值函數(shù)。
[0101]
(12)
[0102] 這一函數(shù)提供要被量化的值X的1位輸出Q(X)。其他量化函數(shù)可被使用例如以將X 的所選范圍(例如,[0,1])分成所選數(shù)量的等間隔的各步(例如,針對η位經(jīng)量化的值的2n 步,或在各示例中,k步,k>2)。在一些示例中,量化閾值是使用梯度來設(shè)置的,如在式(13)中 所示:
[0103]
(13)
[0104] 其t
使用來自當(dāng)前小批的數(shù)據(jù),g
使用來自前 一小批的數(shù)據(jù)。貫穿本公開,t-N可以用t-kN來代替,其中整數(shù)k>0。即,出于量化、重構(gòu)、或本 文的任何目的,可以使用舊一個(gè)以上小批的數(shù)據(jù)。
[0105] 在框408,訓(xùn)練引擎202與多個(gè)節(jié)點(diǎn)交換經(jīng)量化的梯度矩陣???08可包括訓(xùn)練引擎 202將經(jīng)量化的梯度矩陣中的一些或全部傳送給至少一個(gè)其他節(jié)點(diǎn),例如圖2的至少一個(gè)其 他計(jì)算設(shè)備210或處理單元212???08可包括多個(gè)計(jì)算設(shè)備210將相應(yīng)的經(jīng)量化的梯度矩陣 傳送給該多個(gè)計(jì)算設(shè)備中的其他計(jì)算設(shè)備。各節(jié)點(diǎn)可同步地交換經(jīng)量化的梯度矩陣。這一 交換的示例在下文參考圖5討論。該交換可包括根據(jù)接收到的經(jīng)量化的值(例如,使用下式 (14)或(15))來重構(gòu)梯度值。在一示例中,交換框408包括只交換經(jīng)量化的梯度矩陣。在至少 一個(gè)示例中,交換框408包括交換經(jīng)量化的梯度矩陣和一個(gè)或多個(gè)節(jié)點(diǎn)的交叉熵(CE)準(zhǔn)則 值。CE準(zhǔn)則值可被用來跟蹤神經(jīng)網(wǎng)絡(luò)訓(xùn)練的進(jìn)展。在一示例中,交換框408包括交換經(jīng)量化 的梯度矩陣、重構(gòu)梯度值、合計(jì)經(jīng)重構(gòu)的值、量化所合計(jì)的值、以及交換經(jīng)量化的所合計(jì)的 值,例如如下文參考圖5和6討論的。
[0106] 在框410,使用梯度來更新神經(jīng)網(wǎng)絡(luò)模型。這可以例如以上參考式(5)所描述的那 樣完成。經(jīng)重構(gòu)的梯度值可被使用。所合計(jì)的梯度可如以下參考圖5和6所討論地使用。
[0107] 在判定框412,訓(xùn)練引擎202可以確定是否還有節(jié)點(diǎn)具有要處理的數(shù)據(jù)。如果是,則 該過程可返回至框402。如果否,該過程可進(jìn)至框414。以此方式,確定框402、量化框404、更 新框406、交換框408、以及模型更新框410或這些框的任何組合可由各節(jié)點(diǎn)中的各單獨(dú)節(jié)點(diǎn) 針對梯度矩陣中的相應(yīng)矩陣以及與梯度矩陣中的相應(yīng)矩陣相對應(yīng)的誤差矩陣來執(zhí)行。各節(jié) 點(diǎn)可以并行地執(zhí)行這一處理以減少訓(xùn)練時(shí)間。
[0108] 在框414,在一些示例中,可根據(jù)批大小至少部分地基于時(shí)間測量來調(diào)整并行化因 子。如上所述,小批大小N和并行地進(jìn)行計(jì)算的節(jié)點(diǎn)數(shù)量K影響總訓(xùn)練時(shí)間??苫谕ㄐ呕蛴?jì) 算所花費(fèi)的時(shí)間測量來調(diào)整這些值以提高訓(xùn)練速度。
[0109] 在判定框416,訓(xùn)練引擎202可以確定是否滿足所選擇的終止準(zhǔn)則。如果是,則可以 確定訓(xùn)練過程完成。可以使用一個(gè)以上準(zhǔn)則,例如在滿足一個(gè)準(zhǔn)則(滿足所選數(shù)量的準(zhǔn)則) 時(shí)指示完成或在滿足所有準(zhǔn)則時(shí)指示完成。在訓(xùn)練完成時(shí),訓(xùn)練引擎可以將經(jīng)訓(xùn)練的DNN 208提供給數(shù)據(jù)分析引擎206,這兩者都在圖2中示出。如果準(zhǔn)則沒有被滿足,則該過程可返 回到框402。以此方式,確定框402、量化框404、更新框406、交換框408、模型更新框410、判定 框412以及調(diào)整框414可針對神經(jīng)網(wǎng)絡(luò)模型的多個(gè)小批中的每一者來重復(fù)。在至少一個(gè)示例 中,第一小批的交換由框408執(zhí)行,與第二小批的確定、量化、或更新并行。
[0110] 示例準(zhǔn)則可以是準(zhǔn)確度??梢栽谟?xùn)練期間評估DNN(例如,DNN 204或304)的訓(xùn)練幀 準(zhǔn)確度,且準(zhǔn)則可以是至少所選擇的訓(xùn)練幀準(zhǔn)確度??稍跍y試輸入集上周期性地測試DNN, 并確定誤差率,且準(zhǔn)則可以是至多所選誤差率。示例準(zhǔn)則可以是已過去的訓(xùn)練時(shí)間。例如, 在所選擇的流逝時(shí)間和所選數(shù)量的訓(xùn)練時(shí)期之后,訓(xùn)練可被終止。在DNN沒有針對所使用的 特定參數(shù)收斂的情況下,這可以終止訓(xùn)練。示例準(zhǔn)則可以是訓(xùn)練幀準(zhǔn)確度或誤差率的改進(jìn)。 該準(zhǔn)則可以是小于這些量中的任一者的所選改進(jìn)。例如,如果訓(xùn)練幀準(zhǔn)確度接近漸近線或 只是例如每時(shí)期增長〈〇. 1 %點(diǎn),則訓(xùn)練可在假定DNN已基本上收斂的情況下終止。
[0111] 在框418,在確定訓(xùn)練完成之后,例如因?yàn)闈M足終止準(zhǔn)則,提供經(jīng)訓(xùn)練的神經(jīng)網(wǎng)絡(luò) (例如,經(jīng)訓(xùn)練的DNN 208或318)。在一示例中,在訓(xùn)練結(jié)束時(shí)來自式(5)的權(quán)重W1和偏置a1被 存儲到計(jì)算機(jī)可讀介質(zhì),例如諸如計(jì)算機(jī)可讀介質(zhì)312等計(jì)算機(jī)可讀介質(zhì)。在至少一個(gè)示例 中,框418包括使用所存儲的權(quán)重和偏置(例如,在DNN操作引擎120或數(shù)據(jù)分析引擎206中) 來執(zhí)行神經(jīng)網(wǎng)絡(luò)算法,以處理輸入數(shù)據(jù)236來產(chǎn)生輸出數(shù)據(jù)234。
[0112] 圖5是示出用于交換數(shù)據(jù)的示例過程中的各步驟的數(shù)據(jù)流程圖500。該過程可由具 有圖4的相應(yīng)交換框408的多個(gè)節(jié)點(diǎn)合作地執(zhí)行。該過程在本文中也被稱為"歸納"。在這一 示例中,三個(gè)節(jié)點(diǎn)參與,如由圖5中的"節(jié)點(diǎn)Γ到"節(jié)點(diǎn)3"附圖標(biāo)記所指示的。
[0113] 小批502包括來自訓(xùn)練數(shù)據(jù)216的多個(gè)隨機(jī)采樣的幀218,這兩者在圖2中示出。在 各示例中,小批502可例如由配置成協(xié)調(diào)各節(jié)點(diǎn)的努力的處理單元被分成各子小批504、 506、508。在一些示例中,節(jié)點(diǎn)中的一者或多者可劃分小批502。在至少一個(gè)示例中,單獨(dú)節(jié) 點(diǎn)只從小批502檢索其對應(yīng)的子小批504、506、508。
[0114] 在這一示例中,節(jié)點(diǎn)1、2以及3中的每一者接收訓(xùn)練數(shù)據(jù)216的一個(gè)相應(yīng)子小批 504、506、508并基于訓(xùn)練數(shù)據(jù)的接收到的子小批來計(jì)算計(jì)算模型的修改值。在一個(gè)示例方 面,計(jì)算模型是神經(jīng)網(wǎng)絡(luò)模型且更新是適于用于隨機(jī)梯度下降(SGD)過程中的梯度,例如如 以上參考式(5)描述的。為清楚起見,將貫穿圖5的討論來使用這一示例,但所描述和示出的 技術(shù)不限于神經(jīng)網(wǎng)絡(luò)或SGD。
[0115] 框510表示由節(jié)點(diǎn)1使用子小批504計(jì)算出的梯度???12表示由節(jié)點(diǎn)2使用子小批 506計(jì)算出的梯度。框514表示由節(jié)點(diǎn)3使用子小批508計(jì)算出的梯度。各單獨(dú)節(jié)點(diǎn)接收與由 其他節(jié)點(diǎn)計(jì)算出的梯度有關(guān)的信息是合乎需要的。這樣的接收準(zhǔn)許一單獨(dú)節(jié)點(diǎn)更新其神經(jīng) 網(wǎng)絡(luò)模型以準(zhǔn)備SGD過程的下一迭代。
[0116] 如以上參考交換230討論的,為準(zhǔn)許與其他節(jié)點(diǎn)高效地交換梯度信息,一單獨(dú)節(jié)點(diǎn) 將其梯度分成各"條紋"。在這一示例中,框510包括條紋516、518、520;框512包括條紋522、 524、526;且框514包括條紋528、530、532。條紋分別對應(yīng)于計(jì)算模型的不同參數(shù)子集。
[0117] 在一示例中,DNN 204的單個(gè)層222(這兩者都在圖2中示出)中的計(jì)算神經(jīng)元可被 指派給三個(gè)部分之一。每一條紋涉及相應(yīng)部分中的計(jì)算神經(jīng)元的權(quán)重和偏置。條紋與對應(yīng) 訓(xùn)練數(shù)據(jù)和模型子集之間的關(guān)系的示例在下表1中闡明。在這一示例中,子小批504包括300 個(gè)數(shù)據(jù)樣本,編號為1-300。子小批506包括樣本301-600,且子小批508包括樣本601-900。
[0118] 表1
[0120] 如表1所示,為確定模型參數(shù)的子集1的各模型參數(shù),來自條紋516、522以及528的 梯度可被組合成合計(jì)條紋534,且同樣子集2的條紋518、524、530可被組合成合計(jì)條紋536, 以及子集3的條紋520、526、532可被組合成合計(jì)條紋538。
[0121] 因此,在第一階段("階段Γ),節(jié)點(diǎn)1-3在它們之間交換數(shù)據(jù),以使得在該示例中, 每一節(jié)點(diǎn)合計(jì)與單個(gè)子集相對應(yīng)的條紋。實(shí)線所指示的傳送可并發(fā)地執(zhí)行,且虛線所指示 的傳送可并發(fā)地執(zhí)行。在各示例中,傳送在下表2中給出。邊界將可并發(fā)地執(zhí)行的各傳送群 分開。
[0122] 表2
[0124] 在表2的示例中,節(jié)點(diǎn)1合計(jì)其自己的條紋516(即,節(jié)點(diǎn)1計(jì)算出的梯度的條紋516, 由虛線箭頭指示)與接收到的條紋522和528,以提供用于子集1的合計(jì)條紋534。合計(jì)條紋 534包括該模型的子集1相關(guān)于訓(xùn)練樣本1-900的梯度(或其合計(jì),例如總和)。類似地,節(jié)點(diǎn)2 合計(jì)其自己的條紋524與接收到的條紋518和530以提供用于子集2的合計(jì)條紋536。節(jié)點(diǎn)3合 計(jì)其自己的條紋532與接收到的條紋520和526以提供用于子集3的合計(jì)條紋538。
[0125] 在以上討論的示例中,節(jié)點(diǎn)1-3在它們之間交換數(shù)據(jù)。在至少一個(gè)示例中,用于提 供合計(jì)條紋534、536、538中的一者或多者的合計(jì)操作在與節(jié)點(diǎn)1、2以及3不同的節(jié)點(diǎn)上執(zhí) 行。在一些示例中,合計(jì)操作在節(jié)點(diǎn)1、2以及3之一上執(zhí)行以用于其他節(jié)點(diǎn)或用于該節(jié)點(diǎn)以 及其他節(jié)點(diǎn)。合計(jì)條紋534、536、538可由執(zhí)行合計(jì)的節(jié)點(diǎn)提供給需要合計(jì)條紋的節(jié)點(diǎn)。執(zhí)行 合計(jì)的節(jié)點(diǎn)的數(shù)量可以相同于或不同于計(jì)算梯度的節(jié)點(diǎn)的數(shù)量。
[0126] 如以上參考式(10)討論的,梯度值可以在階段1中傳送之前被量化。一單獨(dú)節(jié)點(diǎn)可 以量化它所傳送的梯度值,例如節(jié)點(diǎn)1的條紋518、520。一單獨(dú)節(jié)點(diǎn)隨后可在合計(jì)合計(jì)條紋 534、536、538之前對接收到的值執(zhí)行逆量化ζΓ 1以確定對應(yīng)的經(jīng)重構(gòu)的值。逆量化可以例如 使用分成它們的量化箱(bin)的先前數(shù)據(jù)列的均值(例如,~2000個(gè)值的均值)來確定。在至 少一個(gè)示例中,逆量化可如式(14)中所示地執(zhí)行:
[0127]
[0128] 在一位量化(q = 0或1)的示例中,^T1(O)是量化為0的先前小批的均值,且^T1(I)是 被量化為1的先前小批的均值。這可以提供最小均方誤差估計(jì)。在至少一個(gè)示例中,經(jīng)重構(gòu) 的值可以是先前小批的梯度的最小值和最大值,如式(15)所示:
[0129]
(IS)
[0130] 在階段1和2之間,節(jié)點(diǎn)1_3(或執(zhí)行合計(jì)的其他節(jié)點(diǎn),或計(jì)算和合計(jì)節(jié)點(diǎn)的任何組 合)可以對合計(jì)條紋534、536、538的數(shù)據(jù)執(zhí)行進(jìn)一步處理。在一示例中,處理包括動(dòng)量平滑。 在一示例中,該處理包括梯度的AdaGrad歸一化。
[0131] 在第二階段("階段2"),節(jié)點(diǎn)1-3交換合計(jì)條紋,以使得在該示例中,每一節(jié)點(diǎn)具有 完整模型(包括所有三個(gè)子集)。傳送在下表3中闡明。圖5上的實(shí)線和虛線以及表3中的邊界 如以上參考階段1所討論的那樣。圖5上的在階段2期間的虛線表示重用分別由節(jié)點(diǎn)1、2、3已 計(jì)算出的合計(jì)條紋534、536、538。
[0132] 表3
542,節(jié)點(diǎn)2具有完整梯度集合;且在框544,節(jié)點(diǎn)3具有完整梯度集合。每一個(gè)框540、542、544 包括三個(gè)合計(jì)條紋534、536、538。
[0135] 在各示例中,節(jié)點(diǎn)在將合計(jì)條紋534、536、538中的梯度值在階段2中傳送之前對它 們進(jìn)行量化。接收到經(jīng)量化的合計(jì)梯度值的節(jié)點(diǎn)隨后可重構(gòu)((T 1)這些值,并使用所得的經(jīng) 重構(gòu)的梯度來更新計(jì)算模型,例如DNN 114。
[0136] 圖5中描述的技術(shù)使用兩個(gè)階段來在三個(gè)節(jié)點(diǎn)之間交換數(shù)據(jù)。一般而言,對于K個(gè) 節(jié)點(diǎn),K>1,這一技術(shù)使用K-I個(gè)階段。一單獨(dú)節(jié)點(diǎn)在每一階段將梯度的K分之一傳送兩次。在 使用縱橫結(jié)構(gòu)或類似設(shè)備來互連各節(jié)點(diǎn)的示例系統(tǒng)中,在每一階段,所有K個(gè)階段都可同時(shí) 傳送信息。在這些示例中,任何給定數(shù)據(jù)傳輸所需的時(shí)間指示梯度的K分之一的傳輸時(shí)間。 將梯度數(shù)據(jù)的總大小表示為Μ,在這些示例中完成所示出的傳輸所需的時(shí)間是式(16)中示 出的量級=
[0137]
(16)
[0138] 或0(2Μ(Κ-1)/Κ)~0(Μ)。因此,在使用同時(shí)傳送時(shí),執(zhí)行圖5所示的數(shù)據(jù)交換所需 的時(shí)間大致獨(dú)立于節(jié)點(diǎn)K的數(shù)量。這有利地準(zhǔn)許增加參與并行處理的節(jié)點(diǎn)數(shù)量K,以及相應(yīng) 地提高訓(xùn)練速度,而不由于傳輸開銷而遭受降低的性能。
[0139] 圖6是示出用于交換數(shù)據(jù)(例如,以上參考圖4的框408討論的)的示例過程600中的 各步驟的流程圖。在以下討論中對圖5和6作出參考。該示例過程接收來自圖4的框404的經(jīng) 量化的梯度矩陣作為輸入。
[0140]在框602,劃分梯度矩陣??筛鶕?jù)節(jié)點(diǎn)數(shù)量K或不同數(shù)量來劃分梯度矩陣。如上所 述,執(zhí)行合計(jì)的(諸)節(jié)點(diǎn)可以與執(zhí)行計(jì)算的(諸)節(jié)點(diǎn)相同或不同。在至少一個(gè)示例中,梯度 矩陣可根據(jù)執(zhí)行合計(jì)的節(jié)點(diǎn)的數(shù)量來劃分。梯度矩陣可被量化,如上所述。從這一劃分中獲 得的各單獨(dú)分區(qū)在本文中被稱為"條紋"。這一劃分的不例是將框510、512、514劃分成各條 紋,如上所述。
[0141] 在框604,各單獨(dú)條紋(分區(qū))被提供給各節(jié)點(diǎn)中的相應(yīng)節(jié)點(diǎn)。即,經(jīng)量化的梯度矩 陣的各分區(qū)中的各單獨(dú)分區(qū)被提供給各節(jié)點(diǎn)中的相應(yīng)節(jié)點(diǎn)。在圖5的示例中,條紋516已駐 留在節(jié)點(diǎn)1處。提供框602因此可包括由與節(jié)點(diǎn)1相關(guān)聯(lián)的處理單元212選擇條紋516的數(shù)據(jù) 以供進(jìn)一步處理。條紋522和528沒有駐留在節(jié)點(diǎn)1處,所以提供框602可包括將條紋522傳送 給節(jié)點(diǎn)1的節(jié)點(diǎn)2(虛線箭頭)和將條紋528傳送給節(jié)點(diǎn)1的節(jié)點(diǎn)3(實(shí)線箭頭)。類似的,條紋 518和530被傳送給節(jié)點(diǎn)2且條紋524被節(jié)點(diǎn)2選擇為提供框602的一部分,且條紋520、526被 傳送給節(jié)點(diǎn)3且條紋532被節(jié)點(diǎn)3選擇。在圖5所示的示例傳送在以上表2中概括。
[0142] 在一些示例中,在框606,根據(jù)經(jīng)量化的分區(qū)的數(shù)據(jù)來重構(gòu)梯度矩陣。如本文所描 述的,重構(gòu)可被執(zhí)行。在一示例中,框604包括傳送( q,Q4(q))值的表連同經(jīng)量化的值q,且重 構(gòu)包括在該表中查找經(jīng)量化的值q。
[0143] 在框608,接收到的分區(qū)被合計(jì)在各節(jié)點(diǎn)中的對應(yīng)節(jié)點(diǎn)處。這對應(yīng)于生成圖5中的 合計(jì)條紋534、536、538。合計(jì)可包括例如對經(jīng)重構(gòu)的梯度求和。
[0144] 在一些示例中,在框610,所合計(jì)的分區(qū)中的修改值(例如,梯度值)可被進(jìn)一步處 理,例如如以上參考圖5討論的。在一示例中,處理包括動(dòng)量平滑。在一示例中,該處理包括 梯度的AdaGrad歸一化。
[0145] 在一些示例中,在框612,所合計(jì)的分區(qū)中的修改值(例如,梯度值)可被量化。量化 可以使用與在框604中使用的相同量化函數(shù)或不同量化函數(shù)。經(jīng)重構(gòu)的值可如本文參考梯 度矩陣的量化描述的那樣來確定(框404)。
[0146] 在框614,所合計(jì)的數(shù)據(jù)(例如,經(jīng)量化的所合計(jì)的分區(qū))從各節(jié)點(diǎn)中的產(chǎn)生該分區(qū) 的各單獨(dú)節(jié)點(diǎn)傳送給各節(jié)點(diǎn)中的其他節(jié)點(diǎn)。例如,合計(jì)條紋534從節(jié)點(diǎn)1傳送給節(jié)點(diǎn)2和3,且 同樣用于以上表3中描述的其他傳送。
[0147] 在一些示例中,在框616,所合計(jì)的分區(qū)被重構(gòu),例如如以上參考框606所描述的。 框616隨后可以是圖4的框410。
[0148] 圖6的示例過程也可與其他計(jì)算模型一起使用來代替神經(jīng)網(wǎng)絡(luò)模型,且使用其他 修改值來代替梯度。
[0149] 說明性結(jié)果
[0150] 執(zhí)行了各實(shí)驗(yàn)以測試根據(jù)本文的各示例的用于DNN訓(xùn)練的系統(tǒng)。CD-DNN-HMM( "模 型")在SWBD-I訓(xùn)練集合(309小時(shí)音頻)上訓(xùn)練。該模型具有維度為2048且輸出維度為9304 (用于總共M = 64M個(gè)模型參數(shù))的七個(gè)隱藏層。所使用的測試集合是Hub-5'00(1831句話 語)。在配備8個(gè)NVIDIA TESLA K20Xm GPU卡的服務(wù)器上執(zhí)行了測試。還在通過INFINIBAND 連接的24個(gè)雙-K20Xm服務(wù)器的服務(wù)器場上執(zhí)行了測試。
[0151] DNN訓(xùn)練使用1位量化,如上所述,其中0(零)作為量化閾值。在一個(gè)測試中,前24小 時(shí)的數(shù)據(jù)被處理,而不使用并行化或量化。其余數(shù)據(jù)使用具有誤差反饋的1位量化來處理, 如上所述(例如,式(10)和(11) 一起),其中K=4。詞語誤差率和訓(xùn)練幀準(zhǔn)確度沒有因添加帶 誤差反饋的量化而被顯著地更改。在另一測試中,AdaGrad自適應(yīng)學(xué)習(xí)權(quán)重被應(yīng)用于經(jīng)量化 的梯度。與應(yīng)用于未經(jīng)量化的梯度的AdaGrad相比,這一配置將幀準(zhǔn)確度改進(jìn)了1.7%。這一 配置,其中Κ = 4,提供了 8.1小時(shí)的訓(xùn)練時(shí)間。這與對應(yīng)的非并行化測試的35小時(shí)的訓(xùn)練時(shí) 間形成對比。因此,并行化操作以及使用經(jīng)量化的梯度可以提供訓(xùn)練速度的顯著改進(jìn),即顯 著減少訓(xùn)練時(shí)間。如上所述,這一速度提高沒有犧牲來自經(jīng)訓(xùn)練的DNN 114的結(jié)果的質(zhì)量。 在又一測試中,具有AdaGrad的DNN在使用和不使用批大小調(diào)整(例如,批選擇224,圖2)的情 況下被測試。使用批大小調(diào)整將訓(xùn)練時(shí)間從41小時(shí)降至35小時(shí)。還執(zhí)行了將數(shù)據(jù)與模型并 行化相比的測試。在各示例中,只使用數(shù)據(jù)并行化。例如,具有4χ2(數(shù)據(jù)X模型)并行化的系 統(tǒng)的測試具有40.9kfps的訓(xùn)練速度,與具有8x1并行化的更高訓(xùn)練速度50.6kfps形成對比。 在一個(gè)測試中,160M個(gè)參數(shù)的生產(chǎn)規(guī)模模型在低于24小時(shí)的流逝時(shí)間內(nèi)完成一遍3,300小 時(shí)的訓(xùn)練數(shù)據(jù)。這些示例示范了量化(例如,1位量化)加速了數(shù)據(jù)傳輸并使得數(shù)據(jù)并行SGD 在基本上不損失準(zhǔn)確度的情況下可行。
[0152]示例條款
[0153] A: -種方法,包括:確定優(yōu)化問題的計(jì)算模型(例如,神經(jīng)網(wǎng)絡(luò)模型)的梯度矩陣; 使用(例如,結(jié)合)對應(yīng)的所存儲的誤差矩陣來量化所述梯度矩陣;使用對應(yīng)的經(jīng)量化的梯 度矩陣來更新所述誤差矩陣;以及與多個(gè)節(jié)點(diǎn)交換經(jīng)量化的梯度矩陣。
[0154] B:如段落A所述的方法,所述確定、量化、以及更新由所述節(jié)點(diǎn)中的各單獨(dú)節(jié)點(diǎn)針 對所述梯度矩陣中的相應(yīng)梯度矩陣以及與所述梯度矩陣中的所述相應(yīng)梯度矩陣相對應(yīng)的 誤差矩陣來執(zhí)行。
[0155] C:如段落A或B所述的方法,還包括在交換之后重構(gòu)經(jīng)量化的梯度矩陣。
[0156] D:如段落A或B所述的方法,還包括使用梯度矩陣來更新神經(jīng)網(wǎng)絡(luò)模型。
[0157] E:如段落B、C或D中的任一段所述的方法,還包括為所述神經(jīng)網(wǎng)絡(luò)模型的多個(gè)小批 中的每一小批重復(fù)所述確定、量化、更新以及交換步驟,所述小批中的第一小批的交換與所 述小批中的第二小批的確定、量化或更新并行地執(zhí)行。
[0158] F:如段落E所述的方法,所述交換包括交換經(jīng)量化的梯度矩陣,例如只交換經(jīng)量化 的梯度矩陣。
[0159] G:如段落E或F所述的方法,所述諸節(jié)點(diǎn)同步地交換經(jīng)量化的梯度矩陣。
[0160] H:如段落E-G中的任一段所述的方法,所述交換包括:例如根據(jù)節(jié)點(diǎn)的數(shù)量來劃分 經(jīng)量化的梯度矩陣;將所述經(jīng)量化的梯度矩陣的各分區(qū)中的各單獨(dú)分區(qū)提供給所述節(jié)點(diǎn)中 的相應(yīng)節(jié)點(diǎn);在所述節(jié)點(diǎn)處合計(jì)接收到的分區(qū);以及將來自所述節(jié)點(diǎn)中的各單獨(dú)節(jié)點(diǎn)的所 合計(jì)的數(shù)據(jù)傳送給所述節(jié)點(diǎn)中的其他節(jié)點(diǎn)。
[0161] I:如段落A-H中的任一段所述的方法,還包括根據(jù)批大小至少部分地基于時(shí)間測 量來調(diào)整并行化因子。
[0162] J:如段落A-H中的任一段所述的方法,所述量化包括確定梯度矩陣的每一元素的 單個(gè)位表示,例如近似單個(gè)位表示。
[0163] K: -種其上具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)(例如,計(jì)算機(jī)存儲介質(zhì)), 該計(jì)算機(jī)可執(zhí)行指令在被執(zhí)行時(shí)將計(jì)算機(jī)配置成執(zhí)行段落A-J中的任一段所述的方法。
[0164] L: -種設(shè)備,包括:處理器;以及其上具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì) (例如,計(jì)算機(jī)存儲介質(zhì)),該計(jì)算機(jī)可執(zhí)行指令在被執(zhí)行時(shí)將所述設(shè)備配置成執(zhí)行段落A-J 中的任一段所述的方法。
[0165] M: -種系統(tǒng),包括:用于處理的裝置;以及用于在其上存儲有計(jì)算機(jī)可執(zhí)行指令的 裝置,這些計(jì)算機(jī)可執(zhí)行指令包括用于將該設(shè)備配置成執(zhí)行如段落A-J中的任一段所述的 方法的裝置。
[0166] N: -種系統(tǒng),包括:其上具有多個(gè)模塊和優(yōu)化問題的計(jì)算模型的一個(gè)或多個(gè)計(jì)算 機(jī)可讀介質(zhì)(例如,計(jì)算機(jī)存儲介質(zhì));以及多個(gè)節(jié)點(diǎn),每一節(jié)點(diǎn)包括至少一個(gè)處理單元,每 一處理單元能操作耦合到所述計(jì)算機(jī)可讀介質(zhì)中的至少一者,所述處理單元被適配成互通 信且執(zhí)行所述多個(gè)模塊中的各模塊,所述多個(gè)模塊包括:被配置成確定所述計(jì)算模型的修 改值的更新確定模塊;被配置成使用所存儲的誤差值來量化所確定的修改值并使用所確定 的修改值和經(jīng)量化的修改值來更新所存儲的誤差值的量化模塊;被配置成將經(jīng)量化的修改 值中的至少一些傳送給所述處理單元中的至少一個(gè)其他處理單元的傳送模塊;以及被配置 成根據(jù)接收到的經(jīng)量化的修改值來修改所存儲的計(jì)算模型的更新模塊。
[0167] 0:如段落N所述的系統(tǒng),所述量化模塊被進(jìn)一步配置成使用所傳送的經(jīng)量化的梯 度修改值來重構(gòu)修改值以及更新模塊被配置成根據(jù)經(jīng)重構(gòu)的修改值來修改所存儲的計(jì)算 模型。
[0168] P:如段落N所述的系統(tǒng),其特征在于,所述諸節(jié)點(diǎn)中的至少一者將經(jīng)量化的修改值 直接傳送給所述諸節(jié)點(diǎn)中的至少一個(gè)其他節(jié)點(diǎn)。
[0169] Q:如段落N、0或P中的任一段所述的系統(tǒng),每一節(jié)點(diǎn)包括耦合到所述相應(yīng)至少一個(gè) 處理單元且被配置成存儲包括所存儲的誤差值的相應(yīng)私有量化狀態(tài)的相應(yīng)存儲器。
[0170] R:如段落N-Q中的任一段所述的系統(tǒng),所述計(jì)算模型包括神經(jīng)網(wǎng)絡(luò)模型,且所述更 新確定模塊被配置成使用隨機(jī)梯度下降算法來確定所述修改值。
[0171] S:如段落N-R中的任一段所述的系統(tǒng),所述諸節(jié)點(diǎn)中的每一者包括能操作耦合到 相應(yīng)計(jì)算機(jī)可讀介質(zhì)且被配置成至少執(zhí)行所述更新確定模塊的多個(gè)處理單元。
[0172] T:如段落N-S中的任一段所述的系統(tǒng),其特征在于,還包括將所述諸節(jié)點(diǎn)通信地連 接的縱橫結(jié)構(gòu),其中所述諸節(jié)點(diǎn)被配置成執(zhí)行所述傳送模塊以經(jīng)由所述縱橫結(jié)構(gòu)與執(zhí)行所 述更新確定模塊并行地傳送所述經(jīng)量化的修改值中的至少一些。
[0173] U:如段落N-T中的任一段所述的系統(tǒng),每一節(jié)點(diǎn)的至少一個(gè)處理單元包括配置成 執(zhí)行所述更新模塊和量化模塊的通用圖形處理單元(GPGPU)以及配置成執(zhí)行所述傳送模塊 的中央處理單元(CPU)。
[0174] V:如段落U所述的系統(tǒng),所述傳送模塊被配置成與將經(jīng)量化的修改值中的至少一 些傳送給處理單元中的至少一個(gè)其他處理單元并行地,將第二經(jīng)量化的修改值從GPGPU傳 送給CPU。
[0175] W:-種在其上具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令 在執(zhí)行時(shí)配置計(jì)算機(jī)來執(zhí)行各操作,包括:使用訓(xùn)練樣本集合來確定神經(jīng)網(wǎng)絡(luò)模型的梯度 的第一值;傳送梯度的第一值的第一部分;接收與梯度的第一值的第二不同部分相對應(yīng)的 第二值;將該第二部分與接收到的第二值合計(jì)在一起;以及傳送經(jīng)合計(jì)的值。
[0176] X:如段落W所述的計(jì)算機(jī)可讀介質(zhì),各操作還包括在傳送第一部分之前量化所確 定的第一值。
[0177] Y:如段落W或Y所述的計(jì)算機(jī)可讀介質(zhì),各操作還包括確定逆量化值并在合計(jì)之前 使用逆量化值變換接收到的第二值。
[0178] Z:如段落Y所述的計(jì)算機(jī)可讀介質(zhì),逆量化值是至少部分地基于梯度的值來確定 的。
[0179] AA:如段落W-Z中的任一段所述的計(jì)算機(jī)可讀介質(zhì),各操作還包括時(shí)傳送和接收重 疊。
[0180] AB: -種系統(tǒng),包括:用于處理的裝置;以及如段落W-AA中的任一段所述的計(jì)算機(jī) 可讀介質(zhì)。
[0181] 本文描述的訓(xùn)練技術(shù)可減少為特定目的(如語音識別)而訓(xùn)練DNN所使用的時(shí)間 量。減少的訓(xùn)練時(shí)間可導(dǎo)致在執(zhí)行語音-文本轉(zhuǎn)錄或文本-語音合成時(shí)DNN的實(shí)現(xiàn)和使用的 增加。
[0182] 結(jié)語
[0183] 雖然已經(jīng)用對結(jié)構(gòu)特征和/或方法動(dòng)作專用的語言描述了各項(xiàng)技術(shù),但是應(yīng)該理 解,所附權(quán)利要求不必限于所述的特征或動(dòng)作。相反,這些特征和動(dòng)作是作為實(shí)現(xiàn)這些技術(shù) 的示例形式而描述的。
[0184] 示例過程的操作在單獨(dú)的框中示出,并且參考這些框來概括。這些過程被示為邏 輯框流,其每個(gè)框可表示可用硬件、軟件或其組合實(shí)現(xiàn)的一個(gè)或多個(gè)操作。在軟件的上下文 中,這些操作表示存儲在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可執(zhí)行指令,這些指令在 由一個(gè)或多個(gè)處理器執(zhí)行時(shí)使得一個(gè)或多個(gè)處理器執(zhí)行既定操作。一般而言,計(jì)算機(jī)可執(zhí) 行指令包括執(zhí)行特定功能或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、模塊、組件、數(shù)據(jù)結(jié) 構(gòu)等。描述操作的次序并不旨在解釋為限制,并且任何數(shù)量的所述操作可以按任何次序執(zhí) 行、按任何次序進(jìn)行組合、細(xì)分成多個(gè)子操作、或并行執(zhí)行,以實(shí)現(xiàn)所描述的過程。所描述的 過程可由與一個(gè)或多個(gè)計(jì)算設(shè)備210或處理單元212相關(guān)聯(lián)的資源來執(zhí)行,如上述加速器或 其他處理單元212。這樣的設(shè)備包括例如一個(gè)或多個(gè)內(nèi)部或外部CPU或GPU、或一個(gè)或多個(gè)硬 件邏輯,如FPGA或DSP。
[0185] 上述所有方法和過程可以用由一個(gè)或多個(gè)通用計(jì)算機(jī)或處理器執(zhí)行的軟件代碼 模塊來具體化,并且可經(jīng)由這些軟件代碼模塊來完全自動(dòng)化。這些代碼模塊可以存儲在任 何類型的計(jì)算機(jī)可執(zhí)行存儲介質(zhì)或其他計(jì)算機(jī)存儲設(shè)備中。方法中的某些或全部可以用專 用計(jì)算機(jī)硬件來具體化。
[0186] 除非另外具體聲明,否則在上下文中可以理解條件語言(諸如"能"、"能夠"、"可 能"或"可以")表示特定示例包括而其他示例不包括特定特征、元素或步驟。因此,這樣的條 件語言一般并非旨在暗示對于一個(gè)或多個(gè)示例需要特定特征、元素或步驟,或者一個(gè)或多 個(gè)示例必然包括用于決定的邏輯、具有或不具有用戶輸入或提示、在任何特定實(shí)施例中是 否要包括或要執(zhí)行特定特征、元素或步驟。除非另外具體聲明,應(yīng)理解聯(lián)合語言(諸如短語 "X、Y或Z中至少一個(gè)")表示項(xiàng)、詞語等可以是X、Y或Z中的任一者、或其組合。
[0187] 本文所述或附圖中描述的流程圖中任何例行描述、元素或框應(yīng)理解成潛在地表示 包括用于實(shí)現(xiàn)該例程中具體邏輯功能或元素的一個(gè)或多個(gè)可執(zhí)行指令的代碼的模塊、片段 或部分。替換實(shí)現(xiàn)被包括在本文描述的示例的范圍內(nèi),其中各元素或功能可被刪除,或與所 示出或討論的順序不一致地執(zhí)行,包括基本上同步地執(zhí)行或按相反順序執(zhí)行,這取決于所 涉及的功能,如本領(lǐng)域技術(shù)人也將理解的。應(yīng)當(dāng)強(qiáng)調(diào),可對上述示例作出許多變型和修改, 其中的元素如同其他可接受的示例那樣應(yīng)被理解。所有這樣的修改和變型本文旨在包括在 本公開的范圍內(nèi)并且由以下權(quán)利要求書保護(hù)。
【主權(quán)項(xiàng)】
1. 一種方法,包括: 確定優(yōu)化問題的計(jì)算模型的梯度矩陣; 使用對應(yīng)的所存儲的誤差矩陣來量化所述梯度矩陣; 使用對應(yīng)的經(jīng)量化的梯度矩陣來更新所述誤差矩陣;以及 與多個(gè)節(jié)點(diǎn)交換經(jīng)量化的梯度矩陣。2. 如權(quán)利要求1所述的方法,其特征在于,所述確定、量化、以及更新由所述諸節(jié)點(diǎn)中的 各單獨(dú)節(jié)點(diǎn)針對所述梯度矩陣中的相應(yīng)梯度矩陣以及與所述相應(yīng)梯度矩陣相對應(yīng)的誤差 矩陣來執(zhí)行。3. 如前述權(quán)利要求中的任一項(xiàng)所述的方法,其特征在于,還包括為所述計(jì)算模型的多 個(gè)小批中的每一小批重復(fù)所述確定、量化、更新以及交換步驟,所述小批中的第一小批的交 換與所述小批中的第二小批的確定、量化或更新并行地執(zhí)行。4. 如權(quán)利要求3所述的方法,其特征在于,所述交換包括交換經(jīng)量化的梯度矩陣。5. 如權(quán)利要求3或4所述的方法,其特征在于,所述諸節(jié)點(diǎn)同步地交換經(jīng)量化的梯度矩 陣。6. 如權(quán)利要求3-5中的任一項(xiàng)所述的方法,其特征在于,所述交換包括: 劃分所述經(jīng)量化的梯度矩陣; 將所述經(jīng)量化的梯度矩陣的各分區(qū)中的各單獨(dú)分區(qū)提供給所述諸節(jié)點(diǎn)中的相應(yīng)節(jié)點(diǎn); 在所述諸節(jié)點(diǎn)處合計(jì)接收到的分區(qū);以及 將來自所述諸節(jié)點(diǎn)中的各單獨(dú)節(jié)點(diǎn)的所合計(jì)的數(shù)據(jù)傳送給所述諸節(jié)點(diǎn)中的其他節(jié)點(diǎn)。7. 如前述權(quán)利要求中的任一項(xiàng)所述的方法,其特征在于,還包括根據(jù)批大小至少部分 地基于時(shí)間測量來調(diào)整并行化因子。8. 如前述權(quán)利要求中的任一項(xiàng)所述的方法,其特征在于,所述量化包括確定所述梯度 矩陣中的每一元素的近似單個(gè)位表示。9. 一種其上具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令在執(zhí)行 時(shí)配置計(jì)算機(jī)來實(shí)現(xiàn)如前述權(quán)利要求中的任一項(xiàng)所述的方法。10. -種系統(tǒng),包括: 其上具有多個(gè)模塊和優(yōu)化問題的計(jì)算模型的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì);以及 多個(gè)節(jié)點(diǎn),每一節(jié)點(diǎn)包括至少一個(gè)處理單元,每一處理單元能操作親合到所述計(jì)算機(jī) 可讀介質(zhì)中的至少一者,所述處理單元被適配成互通信且執(zhí)行所述多個(gè)模塊中的各模塊, 所述多個(gè)模塊包括: 被配置成確定所述計(jì)算模型的修改值的更新確定模塊; 被配置成使用所存儲的誤差值來量化所確定的修改值并使用所確定的修改值和經(jīng)量 化的修改值來更新所存儲的誤差值的量化模塊; 被配置成將經(jīng)量化的修改值中的至少一些傳送給所述處理單元中的至少一個(gè)其他處 理單元的傳送模塊;以及 被配置成根據(jù)接收到的經(jīng)量化的修改值來修改所存儲的計(jì)算模型的更新模塊。11. 如權(quán)利要求10所述的系統(tǒng),其特征在于,所述諸節(jié)點(diǎn)中的至少一者將經(jīng)量化的修改 值直接傳送給所述諸節(jié)點(diǎn)中的至少一個(gè)其他節(jié)點(diǎn)。12. 如權(quán)利要求11所述的系統(tǒng),其特征在于,每一節(jié)點(diǎn)包括耦合到所述相應(yīng)至少一個(gè)處 理單元且被配置成存儲包括所存儲的誤差值的相應(yīng)私有量化狀態(tài)的相應(yīng)存儲器。13. 如權(quán)利要求10-12中的任一項(xiàng)所述的系統(tǒng),其特征在于,所述計(jì)算模型包括神經(jīng)網(wǎng) 絡(luò)模型,且所述更新確定模塊被配置成使用隨機(jī)梯度下降算法來確定所述修改值。14. 如權(quán)利要求10-13中的任一項(xiàng)所述的系統(tǒng),其特征在于,所述諸節(jié)點(diǎn)中的每一者包 括能操作耦合到相應(yīng)計(jì)算機(jī)可讀介質(zhì)且被配置成至少執(zhí)行所述更新確定模塊的多個(gè)處理 單元。15. 如權(quán)利要求10-14中的任一項(xiàng)所述的系統(tǒng),其特征在于,還包括將所述諸節(jié)點(diǎn)通信 地連接的縱橫結(jié)構(gòu),其中所述諸節(jié)點(diǎn)被配置成執(zhí)行所述傳送模塊以經(jīng)由所述縱橫結(jié)構(gòu)與執(zhí) 行所述更新確定模塊并行地傳送所述經(jīng)量化的修改值中的至少一些。
【文檔編號】G06N3/08GK106062786SQ201480068322
【公開日】2016年10月26日
【申請日】2014年9月12日
【發(fā)明人】J·蘭福德, G·李, F·T·B·賽德, J·德羅普, D·俞
【申請人】微軟技術(shù)許可有限責(zé)任公司