搭載于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è)界最佳成績,超越第二名百分之六十。
模型詳細介紹請參考MindSpore首席架構(gòu)師金雪鋒的分析文章:
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)練一般流程如下:
端側(cè)訓(xùn)練特性demo試用:
調(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)開展性能對比評測,使用圖算融合的有普遍的性能提升,提升詳情如下圖所示:
MindSpore是華為開源的一款全場景AI計算框架,旨在提供友好設(shè)計、高效運行、簡捷部署的開發(fā)體驗,目前應(yīng)用于醫(yī)療、金融、科研等多個領(lǐng)域,提供面向端邊云多種場景的主流硬件支持,并針對昇騰硬件平臺提供深度優(yōu)化能力。MindSpore著力構(gòu)筑面向全球的人工智能開源社區(qū),推動人工智能軟硬件應(yīng)用生態(tài)繁榮發(fā)展。對MindSpore感興趣的小伙伴點擊下方卡片關(guān)注我們吧~