0
雷鋒網AI研習社按:人工智能技術發展迅猛的背后不僅得益于龐大的數據量,更需要強大的硬件支持。面對層出不窮的 AI 應用,已經很難采用一種通用的硬件進行高效的數據計算和處理,這也促使了各種類型的 AI 芯片蓬勃發展。
近期,在雷鋒網 AI 研習社線上公開課上,Thinker (AI 芯片) 團隊深度學習平臺負責人周鵬程分享了目前主流的分布式異構計算特性,區別和應用,并且介紹了如何讓當前流行的大數據分析引擎(如:Spark)從 AI 芯片的強大計算能力中獲益。視頻回放:http://www.mooc.ai/open/course/479
周鵬程,Thinker (AI 芯片) 團隊深度學習平臺負責人,曾就職于阿里巴巴技術保障事業部,擔任算法工程師;清華大學微電子碩士,主要研究方向:面向可重構芯片的編譯器后端優化,指令級并行,高并發編程模型以及分布式計算。
分享主題:如何在集群中高效地部署和使用 AI 芯片
分享提綱:
關于Hadoop YARN資源管理系統的介紹
Spark分布式計算框架的介紹
各種異構芯片不同的平臺,特性,區別,以及應用
開源項目StarGate
這次直播分享首先為大家介紹 Hadoop YARN 資源管理系統。Hadoop YARN 資源管理框架,它主要管理集群中的 CPU 和內存。
YARN(Yet Another Resource Negotiator)是一個通用的資源管理平臺,可為各類計算框架提供資源的管理和調度。

YARN 總體上是 Master/Slave 結構,主要由 ResourceManager、NodeManager、 ApplicationMaster 和 Container 等幾個組件構成。
NodeManager (NM) 是每個節點上的資源和任務管理器。它會定時地向 RM 匯報本節點上的資源使用情況和各個 Container 的運行狀態;同時會接收并處理來自 AM 的 Container 啟動/停止等請求。
ApplicationMaster (AM) 用戶提交的應用程序均包含一個 AM,負責應用的監控,跟蹤應用執行狀態,重啟失敗任務等。ApplicationMaster 是應用框架,它負責向 ResourceManager 協調資源,并且與 NodeManager 協同工作完成 Task 的執行和監控。
Container 是 YARN 中的資源抽象,它封裝了某個節點上的多維度資源,如內存、CPU、磁盤、網絡等,當 AM 向 RM 申請資源時,RM 為 AM 返回的資源便是用 Container 表示的。YARN 會為每個任務分配一個 Container 且該任務只能使用該 Container 中描述的資源。
接下來介紹一個特殊的 applicationmaster,它就是 Spark。這個計算框架非常流行,可以支持流式計算,圖計算,數據庫查詢。更多關于 Spark 的介紹,大家可以參考官網,本文主要介紹如何讓 spark 應用在異構計算平臺上。

Spark 的數據結構 RDD (Resilient Distributed Dataset)
RDD 是 Spark 提供的核心抽象,全稱為 Resillient Distributed Dataset,即彈性分布式數據集。可以抽象地認為它是在一個集群環境中的一個大數組,這個數組不可變,但又可以切分很多的小數組,每一個小數組(partition)被分發到集群中的幾個節點,這樣就實現了數據的并行,然后把計算推送到有數據的節點上,就完成了一次分布式計算。

RDD 通常通過 Hadoop 上的文件,即 HDFS 文件或者 Hive 表,來進行創建;有時也可以通過應用程序中的集合來創建。
RDD 最重要的特性就是,提供了容錯性,可以自動從節點失敗中恢復過來。即如果某個節點上的 RDD partition,因為節點故障,導致數據丟了,那么 RDD 會自動通過自己的數據來源重新計算該 partition。這一切對使用者是透明的。
RDD 的數據默認情況下存放在內存中的,但是在內存資源不足時,Spark 會自動將 RDD 數據寫入磁盤。
Spark on YARN 模式的計算瓶頸是底層芯片上,關于這部分可觀看回放視頻介紹。

接下來是CPU,GPU,FPGA,AI芯片在不同的應用上的區別。

圖中綠色的部分是 GPU 計算核心,GPU 的計算單元特別豐富,但是控制邏輯單元非常少,這就導致它只能適用于比較規則的計算類型,比如卷積運算,這種類型的運算只是簡單且重復的做矩陣乘法。因此,最適合用GPU了。
FPGA 和 GPU 的不一樣在于,FPGA 首先設計資源受到很大的限制,例如 GPU 如果想多加幾個核心只要增加芯片面積就行,但 FPGA 一旦你型號選定了邏輯資源上限就確定了(浮點運算在 FPGA 里會占用很多資源),其次,FPGA 里面的邏輯單元是基于 SRAM-查找表,其性能會比 GPU 里面的標準邏輯單元差好多。最后,FPGA 的布線資源也受限制(有些線必須要繞很遠),不像 GPU 這樣走 ASIC flow 可以隨意布線,這也會限制性能。
現實中有很多應用,不是都適合用 GPU 來處理,比如圖計算。我們都知道圖是由很多的節點和邊組成,如果用一個節點表示一個算子,節點之間的邊表示數據相關或數據依賴的話,我們就構建了一個計算圖,也可以稱為數據流圖(DFG)。之所以說圖計算不適合用 GPU 來做的,是因為它沒有辦法高效處理這種數據依賴,只能通過訪存來傳遞這種依賴。而如果把這種數據流圖映射到 FPGA 上,就可以通過計算單元之間的連線結構來傳遞和處理這種依賴,而且不同的計算單元可以執行不同的算子,再應用流水線技術,便可以大大降低訪存的壓力,大幅度提高性能。這就是 FPGA 比較適用于不規則應用(如:圖計算、流式計算)的原因所在。
CPU,GPU,FPGA,ASIC 的架構特點

下圖是我們團隊研發的三款芯片,主要用于深度學習應用的加速。

英特爾FPGA的開發流程

了解芯片的基本開發流程后,我們接下來要考慮的是如何高效地管理和使用服務器上已經安裝好的各種加速器資源。為了實現這個目標,需要設計和實現對應的組件或者服務,比如需要一個監控組件用于實時監控加速器的各種狀態和資源使用情況,同時還需要一個調度器組件負責為多個應用程序分配相應的加速器資源。總之,我們需要一個進行資源管理的服務。

這是我們團隊自主研發的 StarGate 開源項目。地址:http://github.com/stargate-team/stargate

StarGate 的主要架構

接下來是 Spark on StarGate 部分的講解,由于篇幅限制,這里不再做文字內容回顧,感興趣的同學可以直接觀看視頻回放。視頻地址鏈接:http://www.mooc.ai/open/course/479
總結
當前流行的大數據生產系統的計算瓶頸存在于底層芯片上,而芯片能夠在很大程度上緩解計算壓力。為了說明 AI 芯片強大的計算能力,分別介紹 AI 芯片的基本架構、特性以及適用場景。但是不同的 AI 芯片對當前主流的大數據生產系統的支持程度不同,很多時候需要擴展當前的生產系統才能集成現有的 AI 芯片。為了最小化 AI 芯片在數據中心部署的代價并且高效地利用 AI 芯片的強大計算能力,我們設計并開發了開源項目 StarGate。
以上就是本次雷鋒網 AI 研習社公開課的全部分享內容。更多視頻直播課程關注微信公眾號:AI 研習社
雷鋒網出品
雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。