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

2021-09-17 05:47:50 字數 1911 閱讀 1978

本月早些時間谷歌進一步披露了更多關於一年前發布的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倍的成績。

\\

谷歌披露演算法調整細節 抑或迫於監管壓力?

據外國 報道,谷歌近期首次對外公布了最近一段時期內自身搜尋引擎演算法調整的細節,使外界有史以來第一次對其搜尋引擎排名演算法有了較為詳細的了解。目前谷歌正在面臨美國反壟斷監管機構的反壟斷調查,其調查內容正是谷歌是否在搜尋引擎排名中偏袒自家產品及服務。外界普遍認為谷歌此次 一反常態 披露自身搜尋演算法調...

深度學習框架谷歌TensorFlow學習筆記一

tensorflow是 谷歌基於distbelief進行研發的第二代 人工智慧 學習系統,其命名 於本身的執行原理。tensor 張量 意味著n維陣列,flow 流 意味著基於資料流圖的計算,tensorflow為張量從流圖的一端流動到另一端計算過程。tensorflow是將複雜的資料結構傳輸至人工...

谷歌開源 TensorFlow 的簡化庫 JAX

開發四年只會寫業務 分布式高併發都不會還做程式設計師?谷歌開源了乙個 tensorflow 的簡化庫 jax。jax 結合了 autograd 和 xla,專門用於高效能機器學習研究。憑藉 autograd,jax 可以求導迴圈 分支 遞迴和閉包函式,並且它可以進行三階求導。通過 grad,它支援自...