天天看點

谷歌披露了TensorFlow處理器單元架構的細節

本月早些時間谷歌進一步披露了更多關于一年前釋出的tpu的細節。tpu項目和團隊的進階架構師norm jouppi表示,與nvidia k80和haswell e5-2699 v3等主流高性能處理器相比,使用tpu執行神經網絡計算可以獲得成數量級的性能增益。jouppi說:

“據估計tpu會比k80 gpu和haswell cpu快大概15倍到30倍……在6個神經網絡用例中,有4個在tpu上是記憶體或帶寬受限的,假如讓tpu使用和k80 gpu一樣的記憶體系統,那它就可以比gpu和cpu快30到50倍……在一個标準的效率名額功耗效率比(tops/watt)測試中,tpu的測試結果也比傳統處理器高30到80倍。”

最早定制asic的動機來自于使用谷歌翻譯api的計算需求,注意,假設這個地球上的每台手機每天都使用谷歌翻譯api三分鐘,那就得多搭建好幾十個資料中心。

架構白皮書上記錄了把k80和e5-2699作為計算核心進行一定範圍内的神經網絡計算時,相應的實驗設計、資料收集和分析等細節。tpu現在不是用于訓練神經網絡的。它最早就是用作矩陣乘法器,通過矩陣乘法器、闆載記憶體和緩存系統一起,實作神經網絡的多層功能。其中包括在各層之間儲存感覺器的輸出和狀态等,這些在mlp和cnn等内部都廣為使用。

但tpu并不僅僅限于神經網絡的實作,它是通用的,它的架構是基于jouppi和團隊研究的全面用例的。這麼做的部分動機就是要支援tpu的按時傳遞,還有必要的靈活性來優化矩陣浮點運算,而這也是晶片要執行的最基本的運算操作。而把tpu和包含了應用程式所需的其它部件的cpu/gpu架構結合起來很友善,隻需要用上pcie總線就好了。

這樣的架構讓cpu/gpu可以在神經網絡的計算之外執行訓練或tensorflow程式的任意部分。比如程式要提前加載資料,或者要把指令輸入tensorflow運作等等,這些都要由cpu/gpu管理并發給tpu。從這方面看,tpu非常像顯示卡或fpu。

“tpu像cpu或gpu一樣都是可程式設計的。它并不專為某個神經網絡模型設計,可以在多種網絡上執行cisc指令(卷積、lstm模型、大型全連接配接模型等)。是以它是可程式設計的,但使用矩陣作為原語,而不是向量或标量。”

就像cpu和gpu架構的時變優化特性一樣,tpu具有确定性的特性,在功耗效率比的測試中tpu優于基準晶片及每秒千萬億次的超級計算機。據測試資料來看,tpu在功耗效率比的測試中性能超出一般處理器30到80倍。

“與k80 gpu的32位浮點運算相比,tpu使用的是8位收縮矩陣乘法器,消耗的能量少了幾個數量級,壓縮了25倍的mac(65536 8位對2496 32位)和3.5倍的闆上記憶體(28mb對8mb)。更大的記憶體有助于增加應用程式的操作強度,讓它們可以更充分地使用額外的mac……商業産品在計算架構上很少出現數量級的差别,是以tpu可能會成為專用領域架構的一個原型。”

作為實驗設計研究階段的一部分,jouppie和團隊在谷歌的平台上研究了神經網絡的使用,他們發現了更多關于時間敏感型應用的需求,而不是關于他們最初設想的吞吐量敏感型應用,這讓他們意識到,對大量廉價資源的适當使用仍然可以得到成本效益很高的高性能,這也符合阿姆達爾定律。

tpu實驗涉及六種神經網絡:mlp、cnn和lstm各兩種。mlp和lstm都是記憶體受限型的,是以調整實驗的記憶體和帶寬排列對性能的影響非常大。這可能要歸因于mlp和cnn會重用前層的權重,而且也會在一定程度上重用前層的輸出。另一方面,lstm會在各個時間步長重用權重,但隻會選擇性地使用前層的輸出,這樣就會不受限于記憶體,更多地是受限于計算能力。這一點在考察tpu使用的pcie總線io帶寬時也适用。

經過15個月多的開發周期,以及在假設以tpu為核心的架構上對記憶體和緩存的改進,jouppie和團隊聲稱他們已經獲得了比k80和e5-2699性能高30到50倍的成績。

本文轉自d1net(轉載)

繼續閱讀