當前位置:
首頁 > 最新 > 這是AMD深度學習的開源戰略

這是AMD深度學習的開源戰略

當一家公司開始使用突破性技術或商業模式時,其結果可能是令人難以想像的,甚至讓競爭對手完全喪失追趕的可能。

能夠達到這種結果的原因是:儘管公司的早期發展看起來是線性的,但其最終將顯現為以指數形式增長。當一家公司到達這一點時,競爭對手再想趕上就變得非常困難,幾乎不可能了。

本文將探討AMD的深度學習開源策略,並解釋AMD ROCm計劃在加速深度學習發展方面的優勢。回答AMD的競爭對手,是否需要關注AMD正在進行的突破性改變的問題。

AMD深度學習開源堆棧

在介紹AMD深度學習堆棧的細節之前,讓我們來看看開發工具背後的理念。AMD作為CPU和GPU的供應商,享有獨一無二的地位,多年來一直在推廣異構系統架構(HSA)的概念。與其他供應商的大多數開發工具不同,AMD的工具旨在支持其基於x86的CPU和GPU。AMD在HSA基金會(成立於2012年)共享HSA設計和成果,該基金會是一個非營利組織,其成員包括ARM,Qualcomm和Samsung等其他CPU供應商。

HSA基金會用一個圖表,說明了HSA堆棧:

來源:HSA 基金會

如圖所示所見,中間件(即HSA Runtime Infrastructure)在駐留在單個系統中的不同類型的計算設備之間提供了一個抽象層。人們可以將其視為允許在CPU和GPU上運行相同程序的虛擬機。

2015年11月,AMD宣布ROCm計劃將支持高性能計算(HPC)工作負載,並為Nvidia的CUDA平台提供替代方案。該計劃發布了一個開源的64位Linux驅動程序(稱為ROCk內核驅動程序)和擴展(即非標準)HSA運行環境(稱為ROCr Runtime)。ROCm還繼承了之前HSA的創新,如AQL數據包、用戶模式隊列和環境切換。

ROCm還發布了一個名為異構計算編譯器(HCC)的C / C ++編譯器,旨在支持HPC應用程序。HCC基於開源的LLVM編譯器基礎設施項目(https://en.wikipedia.org/wiki/LLVM)。

還有許多使用LLVM的開源語言,包括Ada,C#,Delphi,Fortran,Haskell,Javabytecode,Julia,Lua,Objective-C,Python,R,Ruby,Rust和Swift。這個豐富的生態系統開啟了ROCm平台上替代語言的可能性。一個令人矚目的開發就是名為NUMBA的Python應用。

添加到編譯器的是一個稱為HC的API,它提供對同步,數據遷移和內存分配的附加控制。HCC支持其他並行編程API,為了避免混淆,不會在這篇文章中介紹。

HCC編譯器基於HSA基礎上工作。這樣可以將CPU和GPU代碼寫入相同的源文件,並支持統一的CPU-GPU內存分配等功能。

為了進一步縮小差距,ROCm 項目創建了一個名為HIP的CUDA移植工具(讓我們忽略縮寫代表的意思)。HIP提供了掃描CUDA源代碼並將其轉換為相應的HIP源代碼的工具。HIP源代碼看起來類似於CUDA代碼,但編譯的HIP代碼可以支持基於CUDA和AMD的GPU設備。

來源: AMD

AMD採用Caffe架構,擁有5.5萬行優化的CUDA代碼,並應用了HIP工具。55,000行代碼中的99.6%由HIP自動翻譯,其餘部分代碼由一個開發人員花了一個星期完成。一旦移植成功,HIP代碼和原始的CUDA版本表現一直。

HIP並不是100%兼容CUDA,但它確實為開發人員提供了支持替代GPU平台的遷移路徑。對於已經擁有大量CUDA代碼庫的開發人員來說,這是非常有幫助的。

今年年初,AMD宣布決定,將通過「閃電編譯器計劃(Lightning Compiler Initiative)」來「更接近金屬」。該HCC編譯器現在支持直接生成Radeon GPU指令集(稱為GSN ISA)而不再是HSAIL。

我們將在後面看到,直接針對本地GPU的指令對於獲得更高的性能至關重要。ROCm下的所有庫都支持GSN ISA。

來源:AMD

該圖描繪了ROCm組件之間的關係。HCC編譯器生成CPU和GPU代碼,使用不同的LLVM後端從單個C/ C ++源生成x86和GCN ISA代碼。GSN ISA彙編器也可以用作GCN目標源。

CPU和GPU代碼與HCC運行時鏈接以形成應用程序(與HSA圖進行比較)。應用程序與駐留在Linux中的用戶空間中的ROCr驅動程序進行通信。ROCr驅動程序使用低延遲機制(基於數據包的AQL)來與ROCk內核驅動程序協調。

這提出了高性能計算所需要的兩個關鍵點:

1. 在設備的彙編語言級別執行工作的能力。

2. 高度優化庫的可用性。

2015年,Peter Warden在《為什麼GEMM是深度學習的核心?》(https://petewarden.com/2015/04/20/why-gemm-is-at-the-heart-of-deep-learning/)中談到了關於優化矩陣庫的重要性。BLAS(基本線性代數子程序)是人工優化庫,可追溯到Fortran代碼。Warden寫道:

「科學程序員們,在Fortran世界花了幾十年時間優化代碼,來執行大規模矩陣到矩陣乘法,並且從常規的存儲器訪問模式中的獲益,要大於存儲成本的浪費。」

儘管我們在編譯器技術方面取得了進展,但是對於內存訪問的每個詳細細節的關注卻很難複製。在2017年,Warden在《為什麼深度學習需要彙編黑客呢?》(https://petewarden.com/2017/01/03/why-deep-learning-needs-assembler-hackers/)中寫道:

「我花了大量的時間來努力擺脫開發中硬體的性能。」

儘管是最近才出現的技術,但是深度學習的軟體是一個複雜的堆棧。公認的最流行的深度學習框架(TensorFlow,Torch,Caffe等)都是開源的。然而,這些框架是建立在高度優化的內核上,但這些內核通常是不公開的。開發人員需要盡全力擠出他們硬體中每一點可用的性能。

例如,Nervana系統的Scott Gray不得不逆轉Nvidia的指令集來創建彙編器(https://github.com/NervanaSystems/maxas/wiki/Introduction):

「我基本上得出結論,不可能充分利用Nvidia提供的工具來達到我所購買硬體的最優性能。不幸的是,Nvidia也不買自己工具的帳,他們手工組裝自己的庫常式,而不是像我們其他人一樣使用Nvidia的ptxas。」

Gray使用彙編語言來編寫他們自己的內核,從而創建最佳的專有替代方案的演算法。現在想像如果彙編語言是可用的並記錄在文檔中,他可以少做多少工作。這也是AMD將要推出的。

ROCm計劃提供手工庫和彙編語言工具,這將使開發人員能夠發揮AMD硬體中的每一微小性能。

這都是從頭開始應用HIP介面實現的。AMD甚至提供了支持rocBLAS基準測試的工具(即Tensile,https://github.com/RadeonOpenCompute/Tensile/wiki)。AMD還提供了一個名為rocFFT的FFT庫,它也是用HIP介面編寫的。

深度學習演算法將繼續快速發展。

一開始,框架利用了可用的矩陣乘法庫。這些精細調整的演算法已經開發了幾十年。隨著研究的不斷深入,還將有新的演算法提出。

因此,需要超越通用矩陣乘法的演算法。卷積網路的出現導致了更多的創新演算法。今天,許多這類演算法通過彙編語言手工實現。這些底層調整可以顯著提高性能。對於某些操作(如批量歸一化),與傳統非優化解決方案相比,新演算法性能提高了14倍。

AMD發布了一個名為MiOpen(https://rocmsoftwareplatform.github.io/MIOpen/doc/html/)的庫,其中包括手工實現的深度學習優化。

該庫包含了針對Radeon GPU特定的操作優化,也將可能包含上述描述的許多優化。MiOpencoin的發布恰逢Caffe版本釋放。這將允許使用這些框架的應用程序代碼在Radeon GPU硬體上更有競爭力。

Arxiv上幾乎每天都會有新的演算法論文發表,而許多最先進的方法還未進入專有的深度學習庫。

任何供應商都難以跟上這樣激動人心的步伐。在目前的情況下,鑒於開發工具缺乏透明度,開發人員不得不選擇等待,儘管他們很希望能自己進行編碼和優化。幸運的是,開源ROCm項目解決了這個問題。

部署

在本文中,我們討論了ROCm軟體棧的前景。到了ROCm大展身手的時候,我們需要討論軟體運行的硬體種類,部署深度學習在很多不同的場景下都是富有意義的。與通常的觀點不同,並不是所有的東西都要部署在雲端。無人車或通用翻譯設備就需要在沒有連接的情況下運行。

深度學習也有兩種主要的操作模式 ——「訓練」和「推理」。在訓練模式下,您總希望擁有許多地球上最強最快的GPU。在推理模式下,您仍然希望能更快,但重點卻轉向經濟功耗,我們不想看到通過支付昂貴的電力來開展業務。

總而言之,您需要在不同的情境下運行各種硬體。這就體現了AMD的優勢。AMD最近宣布了一些令人非常印象深刻的硬體,專門面向深度學習的工作負載。

該產品稱為Radeon Instinct,它由幾個GPU晶元組成:MI6,MI8和MI25。編號數字大致對應於晶元的操作次數。MI6可以每秒執行大約6萬億次浮點運算(也稱為teraflops)。

在嵌入式設備層面也有新的曙光。AMD已經支持Microsoft Xbox和Sony PlayStation的定製CPU-GPU晶元。AMD APU(即具有集成GPU的CPU)也可為具有較小外觀的設備提供解決方案。

AMD戰略的優點在於,開發者既可以將HSA的架構用於最小的伺服器上,也可以部署到最快的伺服器上。這種廣泛的硬體產品允許深度學習的開發人員在部署他們的解決方案方面擁有豐富的靈活性。深度學習正以爆炸的速度發展,人們永遠不能預測部署解決方案的最佳方式。

結論

像互聯網和智能移動設備一樣,深度學習是一種突破性的技術。開源軟體已經成為支持這些技術的主要平台。

AMD將這些強大的原理與開源的ROCm計劃相結合,這本身就具有加速深度學習發展的潛力。ROCm提供了一整套滿足高性能計算需求的組件,例如提供更接近硬體的工具,包括手動編程庫和對彙編語言工具的支持。

未來的深度學習軟體將需要更多優化,涵蓋多種計算核心。在我看來,AMD在異構系統架構中大量投資的戰略眼光讓他們的平台有了顯著的優勢。

AMD開源戰略具有獨特的地位,將打破未來深度學習的發展。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機械雞 的精彩文章:

用聲音檢測技術降低美國「賭城」槍擊案傷亡
每個數據科學專家都應該知道的六個概率分布
蘋果收購僅6人的Init.ai團隊 併入Siri 開發小組
日本早稻田大學的研究人員,使用AI給黑白照片著色
Google DeepMind顧問預言:五年後AI將在《星際爭霸》中戰勝人類

TAG:機械雞 |