快,著實有點快?,F(xiàn)在,經(jīng)典模型 BERT 只需 2.69 分鐘、ResNet 只需 16 秒。
啪的一下,就能完成訓(xùn)練!
這是華為全聯(lián)接 2021 上,針對異構(gòu)計算架構(gòu) CANN 5.0 放出的最新性能“預(yù)熱”:
4K 老電影 AI 修復(fù),原本需要幾天時間,現(xiàn)在幾小時就能完成;
針對不同模型進(jìn)行智能優(yōu)化,300 + 模型平均可獲得 30% 性能收益;
支持超大參數(shù)模型、超大圖片計算,幾乎無需手動修改原代碼……
不同于訓(xùn)練推理框架,異構(gòu)計算架構(gòu)在設(shè)計時,還需要兼顧硬件和軟件的特點。
為的就是盡可能提升 AI 模型的計算效率,減少在訓(xùn)練和推理上占用的時間。
它的存在,能讓開發(fā)者在使用 AI 模型時,最大程度地發(fā)揮硬件的性能。
異構(gòu)計算架構(gòu)究竟為什么重要,昇騰 CANN 5.0 又究竟有哪些特性和優(yōu)勢?
我們對華為昇騰計算業(yè)務(wù)副總裁金穎進(jìn)行了采訪,從 CANN 5.0 的功能解讀中一探究竟。
為什么需要 AI 異構(gòu)計算架構(gòu)?
首先來看看,AI 異構(gòu)計算架構(gòu)到底是什么。
通常做 AI 模型分兩步,先選用一種框架來搭建 AI 模型,像常見的 Caffe、Tensorflow、PyTorch、MindSpore 等;再選用合適的硬件(CPU、GPU 等)來訓(xùn)練 AI 模型。
BUT,在 AI 訓(xùn)練框架和硬件之間,其實還有一層不可或缺的“中間架構(gòu)”,用來優(yōu)化 AI 模型在處理器上的運行性能,這就是 AI 異構(gòu)計算架構(gòu)。
區(qū)別于同構(gòu)計算(同類硬件分布式計算,像多核 CPU),異構(gòu)計算指將任務(wù)高效合理地分配給不同的硬件,例如 GPU 做浮點運算、NPU 做神經(jīng)網(wǎng)絡(luò)運算、FPGA 做定制化編程計算……
面對各種 AI 任務(wù),AI 異構(gòu)計算架構(gòu)會充當(dāng)“引路員”,針對硬件特點進(jìn)行分工,用“組合拳”加速訓(xùn)練/推理速度,最大限度地發(fā)揮異構(gòu)計算的優(yōu)勢。
如果不重視它,各類硬件在處理 AI 任務(wù)時,就可能出現(xiàn)“長跑選手被迫舉重”的情況,硬件算力和效率不僅達(dá)不到最優(yōu),甚至可能比只用 CPU/GPU 更慢。
目前已有越來越多的企業(yè)和機(jī)構(gòu),注意到異構(gòu)計算架構(gòu)的重要性,開始著手布局相關(guān)技術(shù),不少也會開放給開發(fā)者使用。
但開發(fā)者在使用這些異構(gòu)計算架構(gòu)時,會逐漸發(fā)現(xiàn)一個問題:
不少 AI 異構(gòu)計算架構(gòu),基本只針對一種或幾種特定場景來設(shè)計,如安防、客服等 AI 應(yīng)用較成熟的場景;針對其他場景設(shè)計的 AI 模型,異構(gòu)計算架構(gòu)的性能會有所下降。
就像安防公司會針對安防類 AI 模型進(jìn)行優(yōu)化一樣,這類異構(gòu)計算架構(gòu)往往不具有平臺通用性。
這使得開發(fā)者在訓(xùn)練不同的 AI 模型時,需要在搭載不同異構(gòu)計算架構(gòu)的各類處理器之間“反復(fù)橫跳”,找到訓(xùn)練效率最高的方法。
期間不僅要學(xué)習(xí)各類算子庫、張量編譯器、調(diào)優(yōu)引擎的特性,還只能選用特定的訓(xùn)練框架,非常復(fù)雜。
相比之下,華為從 2018 年 AI 戰(zhàn)略制定之初,就選擇了一條不同的路線。
華為昇騰計算業(yè)務(wù)副總裁金穎在采訪中表示:
我們認(rèn)為,AI 模型會由單一的、場景化的模式,逐漸走向通用化,而昇騰系列,就是針對全場景設(shè)計的解決方案。
其中,昇騰 CANN 作為平臺級的異構(gòu)計算架構(gòu),已經(jīng)經(jīng)過了 3 年多的優(yōu)化,迭代了 4 個大版本。
現(xiàn)在,最新“預(yù)熱”的 CANN 5.0 版本,在各種不同場景的模型和任務(wù)上,都表現(xiàn)出了不錯的效果。
昇騰 CANN 5.0 帶來哪些新功能?
相比于昇騰 CANN 3.0,“跨代”的 5.0 版本帶來三大優(yōu)勢:
性能:AI 模型訓(xùn)練/推理性能大幅提升,用時更短;
功能:推理引擎 ATC Suite1.0 首次發(fā)布,AI 模型推理性能更高、功能更全面;
便捷性:代碼開發(fā)和調(diào)試進(jìn)一步簡化,包括支持混合編程等,使用門檻更低。
在性能上,無論是訓(xùn)練規(guī)模大小、場景類型,還是推理效率,均有較大提升。
其中,在 MLPerf 提供的大規(guī)模集群訓(xùn)練場景中測試,結(jié)果如下:
△數(shù)據(jù)來源:昇騰
從上圖可見,原本需要 6.25 分鐘訓(xùn)練的 BERT 模型,在 CANN 5.0 的加持下縮短了一倍多,只需 2.69 分鐘就能完成訓(xùn)練;至于在 3.0 版本上需要 28 秒訓(xùn)練的 ResNet,5.0 版本則是“再進(jìn)化”到了 16 秒。
至于常用的一些小模型訓(xùn)練場景(分類、檢測、語義分割、NLP 等),5.0 版本的性能提升同樣明顯:
△數(shù)據(jù)來源:昇騰
訓(xùn)練以外,5.0 版本的推理性能,在不同場景(分類、翻譯、檢測)下提升效果也非常不錯:
△數(shù)據(jù)來源:昇騰
顯然,無論是訓(xùn)練還是推理,CANN 5.0 都實現(xiàn)了更高效的任務(wù)調(diào)度和更好的性能提升。
在功能上,CANN 5.0 首次發(fā)布了昇騰推理引擎軟件包 ATC Suite1.0(ATC,Ascend Tensor Compiler,昇騰張量編譯器),包括模型壓縮、張量編譯、智能優(yōu)化和媒體預(yù)處理硬加速等能力。
模型壓縮,包括量化、稀疏、張量分解等工具。像其中的 AMCT 模型壓縮工具,就能對浮點數(shù)據(jù)進(jìn)行壓縮處理,來降低模型大小,加速推理速度;
智能優(yōu)化,能為用戶提供在線調(diào)優(yōu)能力,包括圖解析、子圖/算子自動調(diào)優(yōu)、模型編譯優(yōu)化等功能,進(jìn)一步加速 ATC 的計算速度。
此外,推理引擎還包括 Ascend CL(Ascend Computing Language,昇騰統(tǒng)一編程接口)全棧能力調(diào)用,即使是多路復(fù)雜的音視頻處理等特殊場景也能輕松應(yīng)對,以及 ACE(Ascend Computing Execution,昇騰計算執(zhí)行引擎)運行管理等功能;至于在線/離線切換的推理模式,也讓部署場景更加靈活。
在便捷性上,5.0 版本又進(jìn)一步降低了開發(fā)者的使用門檻。
例如,無需開發(fā)者手工修改代碼,5.0 版本支持模型自動遷移。
又例如,進(jìn)一步支持混合編程。相比于 3.0 的手動加載模型,5.0 版本在 APP 中可以直接調(diào)用算子函數(shù),自動完成編譯加載并執(zhí)行:
△3.0 版本
△5.0 版本
再例如,相比 3.0,5.0 版本現(xiàn)在還能自動生成算子測試代碼,省去不少步驟:
可以說是對開發(fā)者新人也很友好了。
然而,相比于表面帶來的更高性能、更全面的功能應(yīng)用,異構(gòu)計算架構(gòu)的性能優(yōu)化,并不如想象中“隨便調(diào)調(diào)參”一般簡單,而是需要大量的技術(shù)支撐。
性能優(yōu)化有多難?
將原本需要跑上幾天的模型訓(xùn)練時間,縮減到幾小時甚至幾秒,背后絕不僅僅靠的是硬件的堆疊。
其中 CANN 5.0 的一個關(guān)鍵技術(shù),就是集群訓(xùn)練(采用大量機(jī)器共同訓(xùn)練模型,以加速訓(xùn)練時間)。
據(jù)金穎介紹,相對于單機(jī)訓(xùn)練,增加訓(xùn)練模型的機(jī)器數(shù)量,往往并不一定能收獲線性的效率提升。
在訓(xùn)練過程中,多臺機(jī)器雖然整體上擁有更多算力,但這些算力是分散的,彼此在進(jìn)行數(shù)據(jù)交互的過程中,實際上又降低了訓(xùn)練效率,這也一直是集群訓(xùn)練的一個瓶頸。
昇騰選擇用圖計算的原理,來分析集群訓(xùn)練的流水線分布、內(nèi)存分配,針對不同機(jī)器的特點進(jìn)行了架構(gòu)上的設(shè)計,合理分配各個節(jié)點中的內(nèi)存和通訊時間,來提高機(jī)器整體的計算效率。
具體來說,CANN 5.0 版本在性能優(yōu)化上,主要自研了 4 點技術(shù):
其一,任務(wù)自動流水。
我們都在打游戲的時候感受過數(shù)據(jù)加載的痛苦,這是因為硬件需要一定的時間來“反應(yīng)”,包括加載計算指令等,但在數(shù)據(jù)量大的情況下,這顯然會極大地延緩整體計算時間。
5.0 實現(xiàn)了計算指令和數(shù)據(jù)載入的多流水并行,載入數(shù)據(jù)滿足分段數(shù)據(jù)量時,不僅啟動后續(xù)計算邏輯、還保持?jǐn)?shù)據(jù)繼續(xù)載入,進(jìn)一步“壓榨”硬件處理器的并行計算能力,實現(xiàn)任務(wù)銜接。
其二,算子深度融合。
算子是支持 AI 模型訓(xùn)練與推理的基本運算單元及組合,異構(gòu)計算架構(gòu)基本都要有自己的算子庫。5.0 版本重新定制了更靈活的算子融合規(guī)則,通過多個算子自動融合提升模型訓(xùn)練效率。
其三,自適應(yīng)梯度切分。
這項技術(shù),是華為針對集群訓(xùn)練提出的智能梯度切分算法,具體針對模型訓(xùn)練中的迭代計算進(jìn)行了優(yōu)化。
CANN 5.0 能通過智能梯度切分算法,自動搜索出最優(yōu)梯度參數(shù)切分方式,讓計算和通信進(jìn)一步并行執(zhí)行,使得通信拖尾時間降至最低、梯度調(diào)優(yōu)時間降低 90%。
其四,AutoTune 智能計算調(diào)優(yōu)。
不同的 AI 模型,如果架構(gòu)只用一種方式進(jìn)行計算分配的話,勢必會造成不適配的情況。
因此,CANN 5.0 研究出了智能數(shù)據(jù)切分技術(shù),提出最優(yōu)切分策略,確保每個計算單元被充分利用,平均性能提升 30% 以上。
5.0 版本也預(yù)置了海量模型優(yōu)化,能極大地縮短開發(fā)者的調(diào)優(yōu)時間。
正是這些技術(shù)優(yōu)勢,讓華為在 AI 性能提升上,擁有了更多的底氣。
如何評價昇騰 CANN 5.0?
一方面,無論是 AI 模型、還是硬件層面的架構(gòu)優(yōu)化,都是 AI 技術(shù)走向更復(fù)雜的“通用化”的一個體現(xiàn)。
對于 AI 模型來說,更加通用的模型,并非僅僅是“參數(shù)越堆越多”的結(jié)果。
目前的通用 AI 模型,無論從訓(xùn)練數(shù)據(jù)、還是架構(gòu)設(shè)計本身來看,技術(shù)上都還有許多亟待完善的地方:由數(shù)據(jù)帶來的模型偏見、架構(gòu)設(shè)計的冗余和不可解釋性……
顯然,AI 模型面臨的這些問題,不可能單純通過“模型變大”來徹底得到解決。
對于硬件也是如此,當(dāng)下 AI 行業(yè)對于算力需求的擴(kuò)大,同樣不可能只通過硬件的堆砌來填補(bǔ)空缺。
如何在單個硬件算力受限的情況下,充分利用每個硬件的性能,達(dá)到算力 1+1=2 甚至是>2 的效果,是 AI 行業(yè)的每個參與者都必須思考的問題。
異構(gòu)計算架構(gòu),是高效利用不同硬件算力的解決方案之一,對于它來說,通用化也是同樣復(fù)雜的一個問題。
相比于單純?yōu)槟骋粓鼍?、或某一功能而設(shè)計的專用異構(gòu)計算架構(gòu),適用于全平臺、全場景的“通用型”異構(gòu)計算架構(gòu),從實現(xiàn)到優(yōu)化上都要復(fù)雜得多。
這里的難度,不僅僅在于實現(xiàn)功能上的通用性,而是在同樣場景下,將對 AI 模型的性能優(yōu)化做得和專用架構(gòu)一樣好。
從這個角度來看,不可能存在一個“一勞永逸”的技術(shù)解決方案。
無論是 AI 模型還是異構(gòu)計算架構(gòu),都必須不斷推陳出新、打破自己和行業(yè)的固有認(rèn)知,與時俱進(jìn),才可能在變幻莫測的時代浪潮中保持身位。
另一方面,回過頭看歷史潮流,僅憑創(chuàng)新,也不足以讓技術(shù)實現(xiàn)“可持續(xù)發(fā)展”,究其根本,還是要回歸現(xiàn)實、解決實際應(yīng)用問題。
例如,昇騰 CANN 5.0 聯(lián)手武漢大學(xué),解決了遙感領(lǐng)域的超大圖片計算瓶頸;同時,也在電影行業(yè)中,幫助修復(fù)了如《紅樓夢》、《開國大典》等高清 4K 影片。
要守住過去繼承下來的技術(shù)地位,又要迎頭直面實實在在的新問題,對華為已是競爭中的必修課。
正如華為輪值董事長徐直軍在全聯(lián)接大會 2021 上所言:
數(shù)字化將注定是一個長期的過程,不可能一蹴而就。
我們所從事的這些技術(shù)領(lǐng)域,有幸處在變化最活躍的環(huán)節(jié)。
廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。