谷歌發(fā)布深度學(xué)習(xí)庫TensorFlow Fold,支持動態(tài)計算圖
在大部分的機器學(xué)習(xí)過程中,用于訓(xùn)練 (training) 和推理 (inference) 的數(shù)據(jù)都需要進行數(shù)據(jù)的預(yù)處理,通過預(yù)處理將不同的輸入數(shù)據(jù)(例如圖像)規(guī)整至相同尺寸并進行批(batch)存儲。這一步使高性能的深度學(xué)習(xí)庫,例如 TensorFlow,可以并行的處理批存儲中的所有輸入,且以相同的計算圖(computation graph)進行處理。批處理(Batching)利用現(xiàn)代 GPU 和多核 CPU 的單指令流多數(shù)據(jù)流(SIMD)性能來加速運算執(zhí)行。但是,當(dāng)輸入數(shù)據(jù)的尺寸和結(jié)構(gòu)變化時會產(chǎn)生諸多問題,例如在自然語言理解中的解析樹(parse tree)、源代碼中的抽象語法樹(abstract syntax tree)、網(wǎng)頁的文檔樹(DOM tree)等。在這些情況下,不同的輸入數(shù)據(jù)需要不同的計算圖,通常這些計算圖不能夠批存儲在一起,導(dǎo)致處理器、存儲器以及緩存利用率低。
今天我們發(fā)布 TensorFlow Fold 來解決這些困難。TensorFlow Fold 使得處理不同數(shù)據(jù)尺寸和結(jié)構(gòu)的深度學(xué)習(xí)模型更容易實現(xiàn)。不僅如此,TensorFlow Fold 將批處理的優(yōu)勢賦予這些模型,使得這些模型在 CPU 上的運行速度有超過 10 倍的提升,在 GPU 上的運行有超過 100 倍的提升(相比于其他實現(xiàn)方式)。這一提升來源于動態(tài)批存儲(dynamic batching)技術(shù),在我們的論文中有詳細介紹(Deep Learning with Dynamic Computation Graphs)。

以上動圖演示了動態(tài)批處理運行的遞歸神經(jīng)網(wǎng)絡(luò)。帶有同樣的顏色的運算聚成一批,這使得 TensorFlow 能夠更快的運行它們。Embed 運算將單詞轉(zhuǎn)換為向量表征。完全連接(fully connected,F(xiàn)C)運算結(jié)合詞向量,從而形成段落向量表征。網(wǎng)絡(luò)的輸出是一個完整語句的向量表征。盡管上圖只演示了一個語句解析樹,但在多種任意形狀與大小的解析樹上,這個網(wǎng)絡(luò)同樣也能運行并實現(xiàn)批處理運算。
TensorFlow Fold 庫首先會為每個輸入建立一個獨立的計算圖。
因為單獨的輸入可能有不同的大小和結(jié)構(gòu),計算圖也可能是這樣。動態(tài)批處理自動結(jié)合這些圖,從而獲取在輸入內(nèi)以及整個輸入進行批處理機會的優(yōu)勢,并且插入額外的指令在批處理操作之間移動數(shù)據(jù)。(查看技術(shù)細節(jié)請參考論文)
想要了解更多,也可以查看我們的 github 網(wǎng)址:https://github.com/tensorflow/fold。我們希望 TensorFlow Fold 能夠幫助研究人員與從業(yè)者在 TensorFlow 中部署動態(tài)計算的神經(jīng)網(wǎng)絡(luò)。
論文:DEEP LEARNING WITH DYNAMIC COMPUTATION GRAPHS
摘要:在包括自然語言處理(解析樹)與化學(xué)信息學(xué)(分子圖)在內(nèi)的多個領(lǐng)域中,在圖結(jié)構(gòu)上進行計算的神經(jīng)網(wǎng)絡(luò)是解決問題的天然方式。然而,因為每個輸入的計算圖有不同的形狀與大小,所以網(wǎng)絡(luò)通常不能直接進行批訓(xùn)練或推斷。它們也難以部署到流行的深度學(xué)習(xí)庫中,因為這些庫是基于靜態(tài)數(shù)據(jù)流圖的。我們引入了一種稱之為動態(tài)批處理(Dynamic Batching) 的技術(shù),它不僅能批處理不同輸入圖(形狀也不類似)之間的運算,也能批處理單個輸入圖內(nèi)的不同節(jié)點。該技術(shù)使得我們能夠創(chuàng)造靜態(tài)圖、使用流行的庫、模仿任意形狀與大小的動態(tài)計算圖。我們進一步展現(xiàn)了組成區(qū)塊的高層次庫,從而簡化了創(chuàng)造動態(tài)圖模型的過程。使用這一庫,我們論證了文獻中多種模型的簡潔且明智的批處理并行實現(xiàn)。
原文:https://research.googleblog.com/2017/02/announcing-tensorflow-fold-deep.html
【本文是51CTO專欄機構(gòu)機器之心的原創(chuàng)譯文,微信公眾號“機器之心( id: almosthuman2014)”】