您的位置:首頁>科技>正文

如何在集群中高效地部署和使用 AI 晶片? | 分享總結

雷鋒網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 研習社

雷鋒網出品

接下來是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 研習社

雷鋒網出品

Next Article
喜欢就按个赞吧!!!
点击关闭提示