0
雷鋒網(wǎng)按:谷歌去年年中推出的 TPUv1 一度讓英偉達(dá)感受到威脅將近,而現(xiàn)在的谷歌 TPU 二代 TPUv2 則著著實(shí)實(shí)得將這份威脅變成了現(xiàn)實(shí),去年的評(píng)測(cè)中英偉達(dá) Tesla V100 尚能不懼谷歌 TPUv1 的挑戰(zhàn),但是現(xiàn)在谷歌 TPU 二代來了,英偉達(dá) Tesla V100 尚能戰(zhàn)否?
以下為 RiseML 對(duì)谷歌 TPUv2 和英偉達(dá) Tesla V100 的對(duì)比評(píng)測(cè),雷鋒網(wǎng)(公眾號(hào):雷鋒網(wǎng))AI 科技評(píng)論將其內(nèi)容編譯如下。
谷歌在 2017 年為加速深度學(xué)習(xí)開發(fā)了一款的定制芯片,張量處理單元 v2 (TPUv2)。TPUv2 是谷歌在 2016 年首次公開的深度學(xué)習(xí)加速云端芯片 TPUv1 的二代產(chǎn)品,被認(rèn)為有著替代英偉達(dá) GPU 的潛在實(shí)力。RiseML 此前撰寫過一篇谷歌 TPUv2 的初體驗(yàn),并隨后收到了大家「將谷歌 TPUv2 與英偉達(dá) V100 GPU 進(jìn)行對(duì)比評(píng)測(cè)」的大量迫切要求。
但是將這兩款深度學(xué)習(xí)加速芯片進(jìn)行公平而又有意義的對(duì)比評(píng)測(cè)并非易事。同時(shí)由于這兩款產(chǎn)品的對(duì)業(yè)界未來發(fā)展的重要程度和當(dāng)前深度詳細(xì)評(píng)測(cè)的缺失,這讓我們深感需要自行對(duì)這兩款重磅云端芯片進(jìn)行深度評(píng)測(cè)。我們?cè)谠u(píng)測(cè)過程中也盡可能地站在芯片對(duì)立雙方傾聽不同意見,因此我們也同時(shí)與谷歌和英偉達(dá)的工程師建立聯(lián)系并讓他們?cè)诒敬卧u(píng)測(cè)文草稿階段留下各自的意見。以上措施使得我們做出了針對(duì) TPUv2 和 V100 這兩款云端芯片的最全面深度對(duì)比評(píng)測(cè)。
我們用四個(gè) TPUv2 芯片(來自一個(gè) Cloud TPU 設(shè)備)對(duì)比四個(gè)英偉達(dá) V100 GPU,兩者都具備 64GB 內(nèi)存,因而可以訓(xùn)練相同的模型和使用同樣的批量大小。該實(shí)驗(yàn)中,我們還采用了相同的訓(xùn)練模式:四個(gè) TPUv2 芯片組成的一個(gè) Cloud TPU 來運(yùn)行一種同步數(shù)據(jù)并行分布式訓(xùn)練,英偉達(dá)一側(cè)也是同樣利用四個(gè) V100 CPU。
模型方面,我們決定使用圖像分類的實(shí)際標(biāo)準(zhǔn)和參考點(diǎn)在 ImageNet 上訓(xùn)練 ResNet-50 模型。雖然 ResNet-50 是可公開使用的參考實(shí)例模型,但是現(xiàn)在還沒有能夠單一的模型實(shí)現(xiàn)支持在 Cloud TPU 和多個(gè) GPU 上進(jìn)行模型訓(xùn)練。
對(duì)于 V100,英偉達(dá)建議使用 MXNet 或者 TensorFlow 的實(shí)現(xiàn),可以在 Nvidia GPU Cloud 平臺(tái)上的 Docker images 中使用它們。然而,我們發(fā)現(xiàn) MXNet 或者 TensorFlow 實(shí)現(xiàn)直接拿來使用的話,在多 GPU 和對(duì)應(yīng)的大訓(xùn)練批量下并不能很好地收斂。這就需要加以調(diào)整,尤其是在學(xué)習(xí)率的設(shè)置方面。
作為替代,我們使用了來自 TensorFlow 的 基準(zhǔn)庫(kù)(benchmark repository),并在 tensorflow/tensorflow:1.7.0-gpu, CUDA 9.0, CuDNN 7.1.2 下在 Docker image 中運(yùn)行它。它明顯快過英偉達(dá)官方推薦的 TensorFlow 實(shí)現(xiàn),而且只比 MXNet 實(shí)現(xiàn)慢 3%。不過它在批量下收斂得很好。這就有助于我們?cè)谕瑯悠脚_(tái)(TensorFlow 1.7.0)下使用相同框架,來對(duì)兩個(gè)實(shí)現(xiàn)進(jìn)行比較。
云端 TPU 這邊,谷歌官方推薦使用來自 TensorFlow 1.7.0 TPU repository 的 bfloat16 實(shí)現(xiàn)。TPU 和 GPU 實(shí)現(xiàn)利用各個(gè)架構(gòu)的混合精度訓(xùn)練計(jì)算以及使用半精度存儲(chǔ)最大張量。
針對(duì) V100 的實(shí)驗(yàn),我們?cè)?AWS 上使用了四個(gè) V100 GPU(每個(gè) 16 GB 內(nèi)存)的 p3.8xlarge 實(shí)例(Xeon E5-2686@2.30GHz 16 核,244 GB 內(nèi)存,Ubuntu 16.04)。針對(duì) TPU 實(shí)驗(yàn),我們使用了一個(gè)小型 n1-standard-4 實(shí)例作為主機(jī)(Xeon@2.3GHz 雙核,15GB 內(nèi)存,Debian 9),并為其配置了由四個(gè) TPUv2 芯片(每個(gè) 16 GB 的內(nèi)存)組成的云端 TPU(v2-8)。
我們進(jìn)行了兩種不同的對(duì)比實(shí)驗(yàn),首先,我們?cè)谌斯ず铣勺匀粓?chǎng)景(未增強(qiáng)數(shù)據(jù))下,觀察了兩者在每秒圖像處理上的原始表現(xiàn),具體來說是數(shù)據(jù)吞吐速度(每秒處理的圖像數(shù)目)。這項(xiàng)對(duì)比與是否收斂無關(guān),而且確保 I / O 中無瓶頸或無增強(qiáng)數(shù)據(jù)影響結(jié)果。第二次對(duì)比實(shí)驗(yàn),我們觀察了兩者在 ImageNet 上的準(zhǔn)確性和收斂性。
我們?cè)谌斯ず铣勺匀粓?chǎng)景(未增強(qiáng)數(shù)據(jù))下,以每秒圖像處理的形式觀測(cè)了數(shù)據(jù)吞吐速度,也就是,在不同批量大小下,訓(xùn)練數(shù)據(jù)也是在運(yùn)行過程中創(chuàng)造的。同時(shí)需要注意,TPU 的官方推薦批量大小是 1024,但是基于大家的實(shí)驗(yàn)要求,我們還在其他批量大小下進(jìn)行了兩者的性能測(cè)試。
當(dāng)批量大小為 1024,兩者在數(shù)據(jù)吞吐速度中并無實(shí)際區(qū)別!谷歌 TPU 有約 2% 的輕微領(lǐng)先優(yōu)勢(shì)。大小越小,兩者的性能表現(xiàn)會(huì)越降低,這時(shí) GPU 就表現(xiàn)地稍好一點(diǎn)。但如上所述,目前這些批量大小對(duì)于 TPU 來說并不是一個(gè)推薦設(shè)置。
根據(jù)英偉達(dá)的官方建議,我們還在 MXNet 上使用 GPU 做了一個(gè)實(shí)驗(yàn),使用的是 Nvidia GPU Cloud 上提供的 Docker image (mxnet:18.03-py3) 內(nèi)的 ResNet-50 實(shí)現(xiàn)。在批量大小為 768 時(shí)(1024 太大),GPU 能每秒處理 3280 張圖像。這比上面 TPU 最好的性能表現(xiàn)還要快 3%。但是,就像上面那樣,在批量大小同為 168 時(shí),多 GPU 上 MXNet 收斂得并不好,這也是我們?yōu)槭裁搓P(guān)注兩者在 TensorFlow 實(shí)現(xiàn)上的表現(xiàn)情況,包括下面提及的也是一樣。
現(xiàn)在 Google Cloud 已經(jīng)開放了云端 TPU(四個(gè) TPUv2 芯片)。只有在被要求計(jì)算時(shí),云端 TPU 才會(huì)連接到 VM 實(shí)例。云端測(cè)試方面,我們考慮使用 AWS 來測(cè)試英偉達(dá) V100(因?yàn)?Google Cloud 當(dāng)前仍不支持 V100)?;谏厦娴臏y(cè)試結(jié)果,我們總結(jié)出了兩者在各自平臺(tái)和 provider 上的每秒處理圖像數(shù)量上的花費(fèi)成本(美元)。
在上表所示的成本下,云端 TPU 顯然是個(gè)贏者。然而,當(dāng)你考慮長(zhǎng)期租用或者購(gòu)買硬件(云 TPU 現(xiàn)在還沒有辦法買到),情況可能會(huì)不同。以上情況還包括當(dāng)租用 12 個(gè)月時(shí)的情況(在 AWS 上的 p3.8xlarge 保留實(shí)例的價(jià)格(無預(yù)付款))。這種租用情況將明顯得將價(jià)格降低至每 1 美元處理 375 張圖像的成本。
GPU 這邊有一個(gè)更有意思的購(gòu)買選項(xiàng)可以考慮,例如 Cirrascale 就提供了四個(gè) V100 GPU 服務(wù)器的月租服務(wù),月租金 7500 美元(約 10.3 美元/小時(shí))。但是由于硬件會(huì)因 AWS 上的硬件配置(CPU 種類,內(nèi)存以及 NVLink 支持等等)的不同而改變,而以 benchmarks 為基準(zhǔn)的對(duì)比評(píng)測(cè)要求的是直接的對(duì)比(非云端租用)。
除報(bào)告兩者的原始性能之外,我們還想驗(yàn)證計(jì)算(computation)是「有意義」的,也就是指,實(shí)現(xiàn)收斂至好的結(jié)果。因?yàn)槲覀儽容^的是兩種不同的實(shí)現(xiàn),所以一些誤差是在預(yù)料之中的。因此,這是一項(xiàng)不僅僅是關(guān)于硬件速度,還會(huì)涉及到實(shí)現(xiàn)質(zhì)量的對(duì)比評(píng)測(cè)。TPU 的 ResNet-50 實(shí)現(xiàn)中加入了非常高計(jì)算強(qiáng)度的圖像預(yù)處理過程,這實(shí)際上犧牲了一部分?jǐn)?shù)據(jù)吞吐速度。谷歌給出的實(shí)現(xiàn)中就是這樣設(shè)計(jì)的,稍后我們也會(huì)看到這種做法確實(shí)獲得了回報(bào)。
我們?cè)?ImageNet 數(shù)據(jù)集上訓(xùn)練模型,訓(xùn)練任務(wù)是將一張圖像分類至如蜂鳥,墨西哥卷餅或披薩的 1000 個(gè)類別。這個(gè)數(shù)據(jù)集由訓(xùn)練用的 130 萬張圖像(約 142 GB)以及 5 萬張用于驗(yàn)證的圖像(約 7 GB)組成。
我們?cè)谂看笮?1024 的情況下,對(duì)模型進(jìn)行了 90 個(gè)時(shí)期的訓(xùn)練,并將數(shù)據(jù)驗(yàn)證的結(jié)果進(jìn)行了比較。我們發(fā)現(xiàn),TPU 實(shí)現(xiàn)始終保持每秒處理 2796 張圖像的進(jìn)程,同時(shí) GPU 實(shí)現(xiàn)保持每秒處理 2839 張。這也是根據(jù)上面數(shù)據(jù)吞吐速度結(jié)果所得的區(qū)別,我們是在未進(jìn)行數(shù)據(jù)增強(qiáng)和使用生成的數(shù)據(jù)的情況下,對(duì) TPU 和 GPU 進(jìn)行的原始速度比較。
如上圖所示,TPU 實(shí)現(xiàn) 進(jìn)行了 90 個(gè)時(shí)期訓(xùn)練后的首位準(zhǔn)確率比 GPU 多 0.7%。這在數(shù)值上可能看起來是很小的差別,但是在兩者已經(jīng)非常高的水平上進(jìn)行提升是極度困難的,以及在兩者在實(shí)際應(yīng)用場(chǎng)景中,即便是如此小差距的提升也將最終導(dǎo)致在表現(xiàn)產(chǎn)生天壤之別。
讓我們來看一下在不同的訓(xùn)練時(shí)期模型學(xué)習(xí)識(shí)別圖像的首位準(zhǔn)確率。
上表中放大圖部分首位準(zhǔn)確率的劇烈變化,與 TPU 和 GPU 這兩個(gè) 實(shí)現(xiàn)上模型的學(xué)習(xí)速率是相吻合的。TPU 實(shí)現(xiàn)上的收斂過程要好于 GPU,并在 86 個(gè)時(shí)期的模型訓(xùn)練后,最終達(dá)到 76.4% 的首位準(zhǔn)確率,但是作為對(duì)比,TPU 實(shí)現(xiàn)則只需 64 個(gè)模型訓(xùn)練時(shí)期就能達(dá)到相同的首位準(zhǔn)確率。TPU 在收斂上的提升貌似歸功于更好的預(yù)處理和數(shù)據(jù)增強(qiáng),但還需要更多的實(shí)驗(yàn)來確認(rèn)這一點(diǎn)。
最后,在需要達(dá)到一定的精確度的情況下,時(shí)間和金錢成本最為關(guān)鍵。我們假設(shè)精確度 75.7%(GPU 實(shí)現(xiàn)可實(shí)現(xiàn)的最高精確度)為可接受的解決方案,我們就可以計(jì)算出,基于要求的模型訓(xùn)練時(shí)期和模型圖像每秒處理的訓(xùn)練速度,達(dá)到該精確度的所需成本。這還包括計(jì)算模型在某個(gè)訓(xùn)練時(shí)期節(jié)點(diǎn)上花費(fèi)的時(shí)間和模型初始訓(xùn)練所需的時(shí)間。
正如上表所示,云端 TPU 允許用戶在 9 個(gè)小時(shí)內(nèi)并且花費(fèi) 55 美元,就能在 ImageNet 上從零開始訓(xùn)練模型精確度至 75.7%,花費(fèi) 73 美元能將模型收斂訓(xùn)練至 76.4%。雖然V100 與 TPU 的運(yùn)行速度同樣,但V100 花費(fèi)價(jià)格過高以及其收斂實(shí)現(xiàn)更慢,所以采用 TPU是明顯更具性價(jià)比的解決方案。
需要再一次說明的是,我們本次所做的對(duì)比評(píng)測(cè)的結(jié)果取決于實(shí)現(xiàn)的質(zhì)量以及云端服務(wù)器的標(biāo)價(jià)。
另外一項(xiàng)兩者的有趣對(duì)比將會(huì)是基于兩者在能量功耗上的比較。然而,我們現(xiàn)在還無法得知任何公開的 TPUv2 能量功耗信息。
基于我們的實(shí)驗(yàn)標(biāo)準(zhǔn),我們總結(jié)出,在 ResNet-50 上四個(gè) TPUv2 芯片(即一個(gè)云端 TPU)和四個(gè) GPU 的原始運(yùn)行速度一樣快(2% 的實(shí)驗(yàn)誤差范圍內(nèi))。我們也期待將來能通過對(duì)軟件(TensorFlow 或 CUDA)優(yōu)化來提升兩者在平臺(tái)上的運(yùn)行性能和改善實(shí)驗(yàn)誤差。
在特定問題實(shí)例上達(dá)到特定的精確度的兩者實(shí)際運(yùn)用中,時(shí)間和云端成本最為關(guān)鍵。以目前的云端 TPU 定價(jià),配合高水平的 ResNet-50 實(shí)現(xiàn),在 ImageNet 上達(dá)到了令人欽佩的準(zhǔn)確率對(duì)時(shí)間和金錢成本(僅花費(fèi) 73 美元就能訓(xùn)練模型達(dá)到 76.4%的精確度)。
將來,我們還將采用來自其他領(lǐng)域的不同網(wǎng)絡(luò)架構(gòu)作為模型的基準(zhǔn)以進(jìn)行更深度的評(píng)測(cè)。還有一個(gè)有趣的實(shí)驗(yàn)點(diǎn)是,對(duì)于給定的硬件平臺(tái),想要高效地利用硬件資源需要花費(fèi)多少精力。舉例來說,混合精度的計(jì)算可以帶來明顯的性能提升,然而在 GPU 和 TPU 上的實(shí)現(xiàn)和模型表現(xiàn)卻是迥異的。
最后,感謝弗萊堡大學(xué)的 Hannah Bast、卡耐基梅隆大學(xué)的 David Andersen、Tim Dettmers 和 Mathias Meyer 對(duì)本次對(duì)比評(píng)測(cè)草稿文的研讀與矯正。
via RiseML Blog,雷鋒網(wǎng) AI 科技評(píng)論編譯。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。