智慧晶片創業公司 Graphcore 推出的 IPU(智慧處理單元)究竟實力如何?近日,該公司的開發人員使用 Poplar 應用庫中的各種機器學習應用對 IPU、GPU 和 CPU 進行了效能對比。結果表明這種晶片的確可以像宣傳的那樣「提升 AI 應用 10 倍到 100 倍處理速度」。
Graphcore 的智慧處理單元(IPU)是一種全新的 AI 加速器,可為現在和未來的機器學習工作負載帶來前所未有的效能提升。其獨特的大規模並行多工計算能力,可以讓任務在單個或多個 IPU 中的同步執行,革新的資料交流結構和巨大的板載 SRAM 的組合賦予其聞所未聞的使用大範圍機器學習演算法進行訓練和推理的能力。
在於 2016 年 10 月,Graphcore 公佈 A 輪融資時,我們對 IPU 的效能做出了三項宣告:
1. 相比其它 AI 加速器,它能提升 10 倍到 100 倍的效能。
2. 它不僅擅長訓練,還擅長推理。
3. 它能使機器學習開發者革新那些甚至不能在最好的替代架構中執行的模型和演算法。
在那之後,我們就被對宣告提供更多技術細節的要求所淹沒。今天,我們很高興能分享三個預備性的基準測試以確證我們的早期目標。
我們從一開始就明白,一個完整的解決方案不僅僅是一種新型的晶片設計,軟體基礎建設需要具備綜合性和易用性,使得機器學習開發者能儘快讓硬體適應他們的需求。因此,我們很早就集中精力構建了一個完整的軟體堆疊,以確保 IPU 一開始就可以獲得實際應用。
我們的 Poplar 圖形程式設計框架和應用庫提供了這些能力。我們開發了 TensorFlow 的移植介面以使 Poplar 庫能在其它使用中的機器學習框架中得到支援。有了這些軟體工具,我們可以透過週期精確的晶片模擬和真實的硬體執行多種實際應用。
CNN 模型訓練(甚至在 batch size 很小的情況下)
卷積神經網路(CNNs)在影像處理中獲得了廣泛應用。一個 CNN 模型通常包含了多個層以進行多種卷積計算,卷積計算的引數需要用訓練演算法學習得到,通常以隨機梯度下降(在影像資料上重複執行模型,計算模型梯度然後更新模型引數)訓練。
在訓練機器學習模型的時候,batch size 是指你需要處理的資料的數目(和當前引數集平行)。由於必須在更新引數之前先處理一個完整的 batch,batch size 限制了更新引數的頻率。用大型的 batch size 訓練模型得到的結果可能並不理想。IPU 系統的一個特性是即使用很小的 batch size 的情況下也能得到很好的結果。
以下圖表展示了在 ImageNet 資料集上訓練 ResNet-50 神經網路學習影像識別的(每秒訓練影像的數目)評估效能。
即使在 batch size 較小的時候也能獲得巨大的效能增益,當擴充套件到 8-C2 IPU 加速器卡的時候我們只使用了大小為 64 的 batch size。
無論從哪個角度上看,使用 IPU 系統都能獲得巨大的效能飛躍,獲得超越所有現有技術的表現。例如,使用一個功耗 300W 的 GPU 加速器(和一個 C2 加速器的耗能預算相同)獲得的最佳效能大約為每秒訓練 580 張影像。
LSTM 推斷
迴圈神經網路經常被用於處理序列資料,例如,在翻譯或文字到語音應用中。LSTM(長短期記憶)網路是迴圈神經網路的一種形式,其中包含的一些元素可以在形成輸出時選擇是否記憶被處理序列中的歷史資料。
所有迴圈神經網路都包含了對於資料的依賴性,這對目前的晶片架構提出了挑戰。資料依賴性限制了並行處理的數量,同時,從記憶體中獲取的每次運算元據體大小也受到了限制。IPU 與 Poplar 庫可以透過大量板載記憶體和靈活的計算和資料傳遞機制很好地應對這些限制。
對於執行推理的伺服器,還有一個問題在於等待推理結果的最短延遲時間。下表展示了單層 LSTM 網路在不同的延遲要求下,IPU 與 GPU 的表現對比:
該單層測試引數的資料來自百度。
百度釋出的 DeepBench 測試套件包含了用於深度學習應用的典型迴圈網路層。
生成網路
我們需要研究的最後一類應用是生成神經網路。這是一種迴圈神經網路,每單位時間生成新的資料。例如,WaveNet 每次會生成一個音訊波形,提供文字到語音轉換能力。我們在這裡研究的是百度 Deep Voice——WaveNet 的一個變種。
我們的應用試驗了兩類效能指標。首先,生成一個樣例需要多少時間。在實踐中,樣本的生成速度需要足夠快,這樣才能生成實時資料流(例如 16Khz);如果可以生成實時資料流,我們還需考慮可以生成多少個聲道(產生不同的說話者)。
下表展示了 Deep Voice 生成演算法在 IPU 上與其他平臺(CPU、GPU)效能對比的結果:
以上這些實驗僅作為測試的範例。IPU 與 Poplar 軟體堆疊提供了全面靈活的可程式設計平臺,在未來的一年裡還會有更多的應用加入其中。目前 Poplar 框架已與部分使用者分享,在幾個月之內,相關文件和程式碼將會公開。