新版本 | MindSpore 1.3,打造無所不在的智能,詮釋可以信賴的開源

夏日的陽光已經(jīng)灑在樹梢枝畔,奮斗了又3個月的MindSpore社區(qū)開發(fā)者們,帶著無比的興奮,為大家獻上全新的1.3版本!日益精進的我們,在這個版本中為大家?guī)砹巳碌腗indSpore Federated能力,解鎖了支撐盤古千億稠密大模型的眾多關(guān)鍵特性、以及面向更多類型硬件的推理優(yōu)化、圖算融合、簡易部署等新工藝,猶如開源時所誓言,持續(xù)不斷的為AI開發(fā)者帶來驚喜。下面就帶大家快速瀏覽1.3版本的關(guān)鍵特性。

MindSpore Federated——支持千萬級無狀態(tài)設(shè)備的聯(lián)邦學(xué)習(xí)

聯(lián)邦學(xué)習(xí)是一種加密的分布式機器學(xué)習(xí)技術(shù),它是指參與聯(lián)邦學(xué)習(xí)的各用戶在不共享本地數(shù)據(jù)的前提下共建AI模型,主要用于解決數(shù)據(jù)隱私和數(shù)據(jù)孤島的問題。MindSpore Federated優(yōu)先專注于大規(guī)模參與方的橫向聯(lián)邦的應(yīng)用場景。

端云場景下的參與方是非常大量的手機或者IoT設(shè)備,其分布規(guī)模和設(shè)備不可靠性帶來了系統(tǒng)異構(gòu)、通信效率、隱私安全和標簽缺失等挑戰(zhàn)。MindSpore Federated設(shè)計了松耦合分布式服務(wù)器、限時通信模塊、容忍退出的安全聚合等模塊,使得任何時候只要部分客戶端可用,都可以進行聯(lián)邦學(xué)習(xí)任務(wù),并解決了系統(tǒng)異構(gòu)帶來的“長尾效應(yīng)”,提高了學(xué)習(xí)效率

新版本

搭載于MindSpore端邊云全場景統(tǒng)一的基礎(chǔ)架構(gòu),MindSpore Federated將會作為華為終端的核心競爭力之一,在保護用戶隱私的前提下,提供更具有個性化的用戶信息決策。

盤古千億稠密大模型關(guān)鍵特性開源

0.中文語言理解任務(wù)評測全球第一

全球最大中文語言預(yù)訓(xùn)練模型“鵬程.盤古”,在2021年4月23日權(quán)威的中文語言理解評測基準CLUE榜單中,總成績及閱讀理解、分類任務(wù)單項均排名第一,刷新三項榜單紀錄,總成績得分83;在NLPCC2018文本摘要任務(wù)中,取得了Rouge平均分0.53的業(yè)界最佳成績,超越第二名百分之六十。

1.超大模型關(guān)鍵特性之——分布式推理及在線部署

當(dāng)大模型推理參數(shù)量較大難以部署到一張卡上時,MindSpore可通過OP-Level和PipeLine模型并行將大模型切分到多卡。我們實現(xiàn)了鵬程.盤古2000億級參數(shù)量的模型部署。

新版本

MindSpore Serving支持分布式模型的在線推理部署,根據(jù)模型并行策略切分為多個小圖,每個卡部署兩個圖的各一個小圖。下圖中,每個卡通過一個Agent進程管理圖加載和執(zhí)行,卡之間通過HCCL進行高速通信,分布式主worker進程和各個Agent進程之間通過gRPC通信,用于請求數(shù)據(jù)的發(fā)送和請求結(jié)果的接受。

新版本

2.超大模型關(guān)鍵特性之——增量推理(state resuse)及部署

對于自回歸(Auto-regressive)的語言模型,隨著新詞的生成,推理輸入長度不斷增大。如果使用動態(tài)圖執(zhí)行,在不同迭代間,圖中每個算子的shape發(fā)生改變,無法利用之前緩存的算子編譯信息,會影響性能。

我們通過修改推理腳本,實現(xiàn)了增量推理的功能,一次增量推理的流程包含兩個階段:第一階段推理,輸入為全量,將輸入padding到固定長度,保存到state,這一階段是為了處理不定長的輸入,將輸入的state保存下來;后續(xù)推理階段,輸入字長為1,即每次輸入上一步生成的token,利用保存的state實現(xiàn)增量推理,產(chǎn)生下一個token并更新state。由于非線性操作的存在,此種增量推理的流程與正常全量推理并不完全等價,不過我們在下游任務(wù)推理中發(fā)現(xiàn),增量推理的精度并無明顯劣化。我們通過鵬程.盤古在昇騰硬件平臺上進行了一系列實驗,結(jié)果如下圖所示:

新版本

在增量推理過程中,第一階段只執(zhí)行一次,而第二階段會執(zhí)行多次,比單純的全量推理,整體性能提升比較明顯。

新版本

MindSpore Serving支持增量推理模型部署,包括單卡模型和分布式模型場景。使用自定義子圖間編排串接兩個不同序列長度輸入的執(zhí)行,維護模型的狀態(tài),避免多個請求的執(zhí)行干擾。

新版本

MindSpore Lite端云訓(xùn)練

隨著用戶對數(shù)據(jù)隱私要求越來越高,許多用戶隱私數(shù)據(jù)無法上傳到云側(cè),因此在用戶端側(cè)進行訓(xùn)練將逐漸成為一個趨勢,并且端云協(xié)同訓(xùn)練將可以充分利用端側(cè)的計算資源,進一步降低訓(xùn)練所需的時間。當(dāng)前MindSpore Lite支持對MindSpore訓(xùn)練導(dǎo)出的模型進行增量訓(xùn)練,實現(xiàn)云-端訓(xùn)練的無縫切換。但由于端側(cè)硬件資源的限制,如何在不影響用戶體驗下進行訓(xùn)練,對端側(cè)訓(xùn)練的內(nèi)存和性能提出了挑戰(zhàn)。

MindSpore Lite采用了訓(xùn)練內(nèi)存復(fù)用、virtual batch、混合精度訓(xùn)練、在線融合、量化等手段對減少端側(cè)訓(xùn)練時的內(nèi)存占用。同時在聯(lián)邦學(xué)習(xí)MindSpore Federated場景下支持云側(cè)對端側(cè)權(quán)重的讀寫,權(quán)重采用差分隱私方式進行端云傳輸進一步保證了端云訓(xùn)練中的安全性。端云訓(xùn)練一般流程如下:

新版本

調(diào)試器易用性更上一層樓:圖碼結(jié)合調(diào)試和訓(xùn)練回放

作為MindSpore圖模式下的調(diào)試利器,調(diào)試器提供了豐富的檢查規(guī)則幫助用戶快速識別常見精度問題。為了幫助大家更好地在圖模式下調(diào)試腳本,1.3版本中,我們新增了圖碼結(jié)合調(diào)試和訓(xùn)練回放功能。

圖碼結(jié)合調(diào)試能幫助您掌握代碼和計算圖的關(guān)系,通過調(diào)試器提供的代碼信息,您能夠更好地理解計算圖背后的代碼邏輯,提升精度問題分析效率。

訓(xùn)練回放是通過離線調(diào)試這一全新的試模式實現(xiàn)的,在訓(xùn)練結(jié)束后,您可以通過離線調(diào)試模式對訓(xùn)練過程進行分析,還能對并行訓(xùn)練(單機多卡)中的精度問題進行分析和定位。

1.圖碼結(jié)合調(diào)試:一眼掌握代碼和計算圖的關(guān)系

MindSpore圖模式的調(diào)試中,如果能方便地找到某行代碼所關(guān)聯(lián)的計算圖節(jié)點,對調(diào)試效率將有很大提升。在調(diào)試器的幫助下,您可以方便地查看計算圖中算子節(jié)點和代碼的關(guān)聯(lián)關(guān)系,無論是以碼搜圖,還是以圖找碼,都能在圖形界面下快速完成。

以碼搜圖時,輸入想要查找的代碼行(例如alexnet.py:52),即可尋找同此行代碼關(guān)聯(lián)的計算圖節(jié)點。如下圖所示:

新版本

以圖找碼時,在計算圖中選中算子節(jié)點(例如Conv2D-op108),即可在堆棧信息中查看該算子對應(yīng)的代碼行。如下圖所示:

新版本

2.支持離線調(diào)試:隨時離線回放分析訓(xùn)練過程,節(jié)約AI處理器資源

在使用之前的調(diào)試器時,要求先啟動訓(xùn)練進程,在訓(xùn)練進程運行的過程中對精度問題進行分析。我們提供了離線調(diào)試的能力,通過dump功能將調(diào)試數(shù)據(jù)保存到磁盤上,然后就可以在不使用昇騰AI處理器的情況下回看訓(xùn)練過程,分析精度問題。由于數(shù)據(jù)在磁盤上,離線調(diào)試中還可以隨意切換正在調(diào)試的迭代,回放訓(xùn)練,免去在線調(diào)試錯過關(guān)鍵迭代后又要從頭運行腳本的煩惱

3.支持單機多卡調(diào)試:定位并行訓(xùn)練中的精度問題

在離線調(diào)試功能的基礎(chǔ)上,調(diào)試器支持了單機多卡訓(xùn)練的調(diào)試。在MindSpore上調(diào)試單機多卡的訓(xùn)練時,只需通過dump功能保存數(shù)據(jù)到磁盤,就可以使用MindInsight可視化地進行分析。調(diào)試器中已經(jīng)提供的監(jiān)測點,例如檢查梯度消失,檢查激活值飽和,檢查權(quán)重不更新等,都可以繼續(xù)在此場景下使用。圖碼結(jié)合調(diào)試同樣支持單機多卡。

推理優(yōu)化——X86_64 CPU PC推理能力

為了更好的支持PC側(cè)推理,x86_64從匯編層面入手,支持針對不同卷積shape的動態(tài)block切分,充分利用寄存器等硬件資源,使我們推理性能達到極致,較上個版本推理時延有了10%~75%+的提升。我們在Intel Core i7-8700 CPU上與OpenVINO(2021.3.394)、MNN(1.2.0)、TNN(v0.3)在幾個經(jīng)典CV類網(wǎng)絡(luò)上進行benchmark測試,從測試結(jié)果可以看出MindSpore Lite保持了較高的水平。

新版本

更多推理性能優(yōu)化

隨著數(shù)據(jù)集和網(wǎng)絡(luò)規(guī)模越來越大,網(wǎng)絡(luò)計算量也越來越大;同時交互式推理任務(wù)中的對時延要求更加嚴格,深度神經(jīng)網(wǎng)絡(luò)推理任務(wù)逐漸向AI加速硬件(比如GPU)進行遷移。MindSpore 1.3版本提供了更多與此相關(guān)的推理性能進行優(yōu)化,性能相比此前大幅提升。

基于Model Zoo中的一些典型的網(wǎng)絡(luò),分別使用MindSpore1.2和MindSpore1.3版本對,統(tǒng)計推理請求平均執(zhí)行時間,推理性能提升3~8倍。

新版本

新版本

圖算融合加速MindSpore網(wǎng)絡(luò)訓(xùn)練

圖算融合是MindSpore的關(guān)鍵技術(shù)之一,通過圖層融合與算子生成的協(xié)同優(yōu)化來提升網(wǎng)絡(luò)執(zhí)行性能。在之前版本,我們使能了NPU(昇騰)和GPU上圖算融合的基本能力,并且在標桿網(wǎng)絡(luò)上取得了不錯的成績。在1.3版本中,我們加強了圖算融合在GPU上的泛化能力,通過對Model Zoo 40多張主流網(wǎng)絡(luò)的驗證,平均可獲得89%的性能提升。以Transformer為例,使能圖算后,從2.5小時/epoch降低到1.75小時/epoch,完整訓(xùn)練時間從5.4天降低到3.8天!

同時,在易用性方面我們新增了環(huán)境變量的控制方式,使得用戶不需要對網(wǎng)絡(luò)代碼做任何侵入修改,即可享受圖算融合帶來的性能收益:

export MS_GRAPH_KERNEL_FLAGS=”–opt_level=2”

我們選取了部分主流的網(wǎng)絡(luò)(NLP、推薦及CV)開展性能對比評測,使用圖算融合的有普遍的性能提升,提升詳情如下圖所示:

新版本

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責(zé)任。
任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )