業界

原標題:業界 | 超越最強GPU:谷歌雲TPU開放測試版實力對比評測



今年 2 月 12 日,谷歌官方宣佈雲 TPU 機器學習加速器測試版已向外部用戶開放,價格約為每雲 TPU 每小時 6.50 美元。此舉意味著這種曾支持瞭圍棋程序 AlphaGo 的芯片已可以被人們用來訓練自己的機器學習模型。不過,興奮之餘我們還有疑問:TPU 和目前流行的 GPU 相比誰更強大?性價比又如何?近日,來自創業公司 RiseML 的 Elmar Hau?mann 為我們進行瞭簡單的對比評測,經過眾多讀者的審閱和建議,本文修正瞭初版的一些錯誤。





大多數人認為,今天的深度學習仍基於英偉達的 GPU,幾乎沒有可替代的相關實際選擇。谷歌專門為深度學習定制的芯片張量處理單元(Tensor Processing Unit,TPU)有望改變這種情況。

台中家電行

首次發佈九個月後,谷歌終於在谷歌雲平臺上向早期測試版用戶發佈瞭 TPUv2。我們進行瞭幾個快速基準測試。下面,我們分享一下這次評測的經驗和初步結果。



我們一直希望深度學習硬件市場的競爭越來越激烈,日益激烈的競爭有望打破英偉達對深度學習硬件的壟斷。除此之外,這還將定義未來深度學習的基礎架構。



但要記住:正如谷歌在許多地方提到的,TPU 仍處於早期測試階段,所以我們討論的一些事情未來可能發生變化。



谷歌雲上的 TPU



第一代芯片 TPUv1 面向推斷(inference),而第二代芯片的重點在於加速學習。TPUv2 的內核中有一個廣泛應用於深度學習的脈動陣列,負責執行矩陣乘法。Jeff Dean 在報告中稱,每個 Cloud TPU 設備具備四個「TPUv2 芯片」。每個芯片有 16GB 內存和兩個內核,每個內核中有兩個矩陣乘法單元。兩個內核一共提供 45 萬億次浮點運算(45 TFLOPs),整個 TPU 設備可提供 180 TFLOPs、64GB 內存。而目前這一代 Nvidia V100 GPU 可提供 125 TFLOPs、16GB 內存。



要在谷歌雲平臺上使用 TPU,你需要啟動 Cloud TPU(在獲得 quota 命令後執行此操作)。無需(或無法)將 Cloud TPU 分配給特定的 VM 實例,通過網絡即可發現實例中的 Cloud TPU。每個 Cloud TPU 都被分配瞭一個名稱和 IP 地址,你需要將二者提供給 TensorFlow 代碼。









創建一個新的 Cloud TPU。請註意,Cloud TPU 有 IP 地址。
聯毅家電生活館|台中南屯家電行|台中南屯家電行推薦



TPU 僅接受 TensorFlow 1.6 版本(發行候選版)的支持。除此之外,由於與 TPU 通信所需的各種代碼都由 TensorFlow 提供,所以你的 VM 實例上不需要任何驅動程序。在 TPU 上執行的代碼經過優化,且通過 TensorFlow 中的 XLA 進行實時編譯。



為瞭高效使用 TPU,你的代碼應該建立在高級別的 Estimator 抽象上。然後,你可以使用 TPUEstimator 來執行必要任務,提高使用 TPU 的效率,如為 TPU 設置數據排隊並在不同核上進行並行計算。當然有使用 TPUEstimator 的方法,但目前我們還不知道例子或文檔。



完成所有設置後,即可正常地運行 TensorFlow 代碼,你會在啟動過程中發現 TPU,計算圖被編譯並傳輸至 TPU。有趣的是,TPU 可以直接從雲存儲中讀取和寫入,以存儲檢驗點(checkpoint)或事件摘要(event summary)。為瞭實現這一點,你需要提供支持 Cloud TPU 寫入雲存儲的服務賬戶。



基準測試



有趣的地方不在於 TPU 的速度有多快。TensorFlow 有一個 TPU 模型的 GitHub 庫,效果很好。下面,我們介紹在 TPU 上運行 ResNet 和 Inception 的實驗。我們想看一個沒有針對 TPU 進行優化的模型是如何運作的,因此我們在 TPU 上運行一個基於 LSTM 的文本分類模型。通常,谷歌推薦使用較大的模型,而這個模型較小,所以看看這種情況下 TPU 是否仍然具有優勢很有意思。



對於所有的模型,我們將單個 Cloud TPU 的訓練速度與單個 Nvidia P100 和 V100 GPU 進行瞭對比。我們註意到,一個完全的對比除瞭吞吐量之外,還應包括模型的最終質量和收斂性能。我們的實驗算是最初的嘗試,將對未來的研究留下詳細的分析。



TPU 和 P100 的實驗在谷歌雲平臺上的 n1-standard-16 實例(16 vCPU Intel Haswell,60 GB 內存)上運行。對於 V100 GPU,我們在 AWS 上使用 p3.2xlarge 實例(8 vCPU,60 GB 內存),所有系統都運行 Ubuntu 16.04。對於 TPU,我們從 PyPi 存儲庫安裝瞭 TensorFlow 1.6.0-rc1。GPU 實驗則使用 nvidia-docker 運行,nvidia-docker 使用包含 CUDA 9.0 和 cuDNN 7.0 的 TensorFlow 1.5 鏡像(tensorflow: 1.5.0-gpu-py3)。



TPU 優化模型



我們先來看看正式針對 TPU 進行優化的模型的性能。下圖中,你可以看到它們每秒處理圖像的性能。



台中家電行推薦

TPU 的批量大小是 1024,GPU 是 128。對於 GPU,我們使用瞭 TensorFlow 基準庫的實現,使用 flag 『use_fp16=true』而不是標記『fp32』運行。左邊兩組條狀對比的是混合精度的訓練。訓練數據是谷歌存儲在雲存儲(用於 TPU)和本地磁盤(用於 GPU)上的偽 Imagenet 數據集。



在 ResNet-50 上,單個 Cloud TPU(包含 4 個 TPUv2 和 64GB 內存)的速度約是單個 P100 的 7.3 倍,V100 的 2.8 倍。對於 InceptionV3,加速幾乎相同(分別為?7.6 和?2.5)。V100 具備更高精度(fp32),因此速度稍慢。註意:在 TPU 上訓練精度為 fp32 的模型完全不可能,因為它隻支持混合精度計算。





顯然,除瞭速度之外,還必須考慮價格。該表顯示按秒計費的按需定價的標準化性能,TPU 仍然明顯領先。



自定義 LSTM 模型



我們的自定義模型是一個具備 1024 個隱藏單元的雙向 LSTM 文本分類模型。LSTM 是目前 NLP 的一個基本構造塊,所以這與基於計算機視覺的官方模型形成瞭很好的對比。



源代碼已經使用瞭 Estimator 框架,所以調整它來使用 TPUEstimator 非常簡單。但是一定要註意:在 TPU 上,我們無法讓模型收斂,而在 GPU 上的相同模型(批量大小等相同)運行得很好。我們認為這是由於我們的代碼或 TensorFlow 中存在 bug。由於模型無法收斂,這裡我們決定不報告初步結果(因此刪去瞭上一版中的初步結果),而是介紹我們在另一篇博文中的發現。



結論



在我們測試的模型上,TPU 與最新一代的 GPU 相比性能更好,也更加便宜。這與之前的報道形成瞭鮮明對比。總之,就測試版而言。使用 TPU 和適應 TensorFlow 代碼的經驗已經很不錯瞭。



我們認為,一旦 TPU 可以面向更多用戶,它們就可以真正替代英偉達的 GPU。

    uwe686ka82 發表在 痞客邦 留言(0) 人氣()