人工智慧時代計算機架構的趨勢與挑戰

Robinly發表於2019-05-15

1   背景簡介

主持人:Chulian Zhang, compute architect@NVIDIA

20世紀70年代以來微處理器的單執行緒效能一直保持著指數增長。而在2010年後,由於Moore's Law和Dennard scaling幾近終結,其增長速度明顯放緩。

人工智慧時代計算機架構的趨勢與挑戰

圖片來源:www.karlrupp.net/2018/02/42-years-of-microprocessor-trend-data/

然而對算力的需求不僅沒有減緩,反而越來越大,特別是深度學習的再次爆發更是讓這種需求變得愈加緊迫。為了滿足這種需求,一個有效的解決方案就是使用專用處理器。專用處理器的一個典型例子就是GPU,一種專門加速圖形和平行計算的處理器。下圖中可以看到在CPU 加速已經明顯減緩的情況下,GPU加速的計算能力卻還在快速上升。

人工智慧時代計算機架構的趨勢與挑戰圖片來源:https://www.nvidia.com/es-la/data-center/hpc/

隨著深度學習日漸流行,幾乎每家大公司都在打造深度學習處理器,其中Google的Tensor Processing Unit (TPU) 就是一個重要的代表。TPU的主要功能是處理神經網路,而神經網路中的大部分計算最終都歸結於矩陣乘法,因此TPU的核心就是矩陣運算單元(MUX,即進行矩陣相乘計算的單元。

人工智慧時代計算機架構的趨勢與挑戰圖片來源: https://cloud.google.com/tpu/docs/system-architecture

圓桌討論要點

 1. 機器學習應該什麼樣的硬體環境下執行?是使用付費的雲端計算,還是只使用線下已有的專用計算和儲存資源

觀點1:

TPU的主要作用是提供更多的計算能力。目前只有Google Cloud提供TPU,然而云資源非常昂貴,單是獲得TPU的使用許可權就要800美元,最終總費用是按小時數計算。所以計算的成本必須足夠高才值得嘗試在TPU上執行。

 如果個人或者初創公司想要嘗試,最划算的方法是購買廉價的GPU安裝在自己的計算機上。對於初學者來說,可以嘗試NVIDIA GTX 1060或RTX 2070。2070的效能更好一些,而2060或1060則更便宜。訓練了一段時間之後,可以再看看其他選擇。如果需要更強的計算能力,可以使用AWS或者Google Cloud。比如在我使用雲的時候,通常一半的模型訓練在本地執行,其餘的在雲上執行。

 觀點2:

我們還可以利用Google Colab(類似Python Jupyter Notebook)進行模型訓練,通過瀏覽器訪問免費的TPU資源和NVIDIA T4GPU。Colab的問題在於,如果你用的是自己的資料集,那麼每次使用前都需要重新設定。如果把資料從網路硬碟匯入Colab,再進行相同的操作,速度也會慢得多。不過對初學者來說,這是一個非常好的選擇。

 2. 5G物聯網時代,選擇哪種裝置進行邊緣計算更合適:GPU、FPGA還是ASIC?

 觀點1

目前市場上有幾個解決方案。我認為在物聯網裝置的特定應用中採納優化後的ASIC是一個很好的解決方案。但問題是,機器學習演算法本身仍在快速發展,而GPU和FPGA可程式設計性的優勢依然會持續。我們固然可以構建一個最優的ASIC設計,但是在流片(tape-out)的1.5年後,演算法可能已經過時了。將來也許行業會趨同於使用某個特定的演算法,那時候使用ASIC 就是最佳方案了。

 觀點2:

隨著演算法的發展,ASIC也在不斷演變。每半年或一年就會有新一代物聯網裝置出現,能夠執行更先進的演算法。FPGA和ASIC實際上大同小異,都只是負責執行命令。FPGA可以用來開發程式,方便靈活,但是效能不佳;而ASIC則可以針對特定目的進行優化並不斷更新迭代。兩者的組合現在已經成了趨勢。Intel支援的晶片創業公司SiFive最近收購了一家名為Open-Silicon的公司。他們的專用ASIC具有嵌入式程式設計功能,如eFPGA,能夠重新編譯和開發更多演算法。

3.深度學習加速器目前主要用於模型訓練和推理這兩種功能,那麼這兩類加速器在將來更加分化還是逐漸趨同?

 觀點1:

我認為它們不會趨同,因為提高應用能效和目標優化是兩個完全不同的方向,最終它們將會拆分成兩個市場。但即使是這兩個市場的公司,也有不同的要求。以NVIDIA為例,他們在資料中心的訓練方面做得很好,甚至還包括一些資料中心推理。但是如果是純粹推理,市場上就出現了很多競爭對手。所以我認為這兩種功能很難趨同,特別是考慮到邊緣應用的專用程度。我認為除了NVIDIA或Google之外,很多其他公司都可以通過開啟一個非常小眾的市場並深入研究來立足。

 觀點2:

從架構的角度來看,我認為它們有可能趨同,因為它們仍然能夠解決類似的問題。但是對於給定的架構,它們可以通過不同的方法實現。

 觀點3:

對於推理,我們通常更關心效率。我們通常在資料中心進行訓練,而在邊緣裝置上進行推理,因此推理的架構的設計傾向於使用更少的bits。正因如此,才會有兩種不同的設計方式。

 觀點4:

我認為這是兩個不同的市場,目標也不盡相同。對於訓練,我們希望吞吐量越大越好;對於推理,我們要考慮的則是減少延遲和功耗。因此,在設計架構時,首先要考慮最終目標,然後相應地設計架構。例如,對於在資料中心中進行訓練,我們並不關心單個網路的延遲,只關心一小時內可以訓練多少個網路。對於在邊緣裝置上進行推斷,我們關心的是執行單個網路的延遲以及功耗。這樣一來,我認為趨同的可能性不大。

4. Google近期開發了哪些加速器?

觀點

TensorFlow的生態系統中,Google有許多加速器,如TPU和Edge TPU,還有許多非開源的內部開發專案。

除了硬體之外,Google最近釋出了一個名為MLIR(multi-level intermediate representation)的開源專案。TensorFlow的圖形結構使其並不能非常有效的構建連線不同後端的編譯器,所以MLIR被用作中間語言,成為連線SLA (Specialized learning accelerator),TPU和不同後端的橋樑。

 MLIR的快速開發過程得益於Chris Laettner的全力推動,他2017年加盟Google,是LLVM(編譯器的框架系統)和Swift程式語言的設計者。(完)

相關文章