大模型高效開發(fā)的秘密武器——大模型低參微調(diào)套件MindSpore PET篇

人工智能進(jìn)入“大模型時代”。

大模型具備更強泛化能力,在各垂直領(lǐng)域落地時,只需要進(jìn)行參數(shù)微調(diào),就可以適配多個場景。因此,發(fā)展大模型已成為產(chǎn)學(xué)研各界共識。

在大模型開發(fā)方面,昇騰推出了大模型開發(fā)使能平臺,基于昇思MindSpore構(gòu)建了支撐大模型開發(fā)的全流程大模型使能套件,包括TransFormers大模型套件MindSpore TransFormers、以文生圖大模型套件MindSpore Diffusion、人類反饋強化學(xué)習(xí)套件MindSpore RLHF、大模型低參微調(diào)套件MindSpore PET,支撐大模型從預(yù)訓(xùn)練、微調(diào)、壓縮、推理及服務(wù)化部署。

本期,我們將開啟“大模型高效開發(fā)的秘密武器”系列之首篇,為大家介紹大模型低參微調(diào)套件——MindSpore PET。

MindSpore PET(MindSpore Parameter-Efficient Tuning)是基于昇思MindSpore AI融合框架開發(fā)的大模型低參微調(diào)套件。當(dāng)前該套件提供6種算法,包含5種經(jīng)典的低參微調(diào)算法LoRA、Prefix-Tuning、Adapter、LowRankAdapter、BitFit,以及1種用于下游任務(wù)精度提升的微調(diào)算法R_Drop。低參微調(diào)算法只需微調(diào)極少量的參數(shù),即可在保持全參微調(diào)精度的情況下,大大節(jié)約計算和存儲內(nèi)存,減少微調(diào)訓(xùn)練的時間;精度提升的微調(diào)算法在幾乎不增加計算內(nèi)存及時間情況下,增加模型隨機(jī)性,防止模型過擬合從而提高模型的正確率。

套件為所有算法提供了API調(diào)用接口及使用案例,實現(xiàn)開箱即用,并為低參微調(diào)算法提供了只保存極少的可學(xué)習(xí)參數(shù)的接口,使得生成的ckpt文件非常小。

開源倉地址:https://github.com/mindspore-lab/MindPet

 

LoRA: Low-Rank Adaptation of Large Language Models,是微軟提出的一種針對大語言模型的低參微調(diào)算法。LoRA假設(shè)在適配下游任務(wù)時,大模型的全連接層存在一個低內(nèi)在秩(low intrinsic rank),即包含大量冗余信息。因此提出將可訓(xùn)練的秩分解矩陣注入Transformer架構(gòu)的全連接層,并凍結(jié)原始預(yù)訓(xùn)練模型的權(quán)重,從而可大大減少參與訓(xùn)練的參數(shù)量。

以悟空畫畫為例,悟空畫畫模型是基于擴(kuò)散模型的中文文生圖大模型。雖然有強大的能力,但模型網(wǎng)絡(luò)規(guī)模巨大,約9億參數(shù)量,適配下游任務(wù)時訓(xùn)練時間長,計算和存儲內(nèi)存開銷大。

經(jīng)分析,悟空畫畫中使用CLIP模型將人類語言轉(zhuǎn)換成機(jī)器能理解的數(shù)學(xué)向量,并通過 U-Net 模型預(yù)測噪聲。這兩種模型的Attention結(jié)構(gòu)都包含全連接層,適配下游任務(wù)時可能含有大量冗余信息。

因此,我們分別在 U-Net的交叉注意力層q、k、v、output四個模塊上,注入了LoRA模塊,發(fā)現(xiàn)效果異常好。

如下圖所示,適配LoRA后即使僅訓(xùn)練0.07%參數(shù),也可以生成高質(zhì)量的圖像!

同時,相比全參微調(diào),應(yīng)用LoRA算法,訓(xùn)練性能也得到大幅提升:原本端到端全參微調(diào)需17小時,適配后僅需9小時,節(jié)約近50%時間; 計算內(nèi)存節(jié)約40%,可繼續(xù)增大一倍batch_size,速度更快;最終保存的ckpt大小才3.06MB,不再需要用4個GB保存所有參數(shù)。

這說明當(dāng)有n個下游任務(wù)時,僅需保存n x 3.06MB,避免了n x 4GB的“龐然大物”。而且,我們還做了令人振奮的實驗。如果用戶訓(xùn)練了多種風(fēng)格的模型,只需0.5s就可以切換風(fēng)格,真正的無縫切換“畢加索”和“新海誠”!

原因在于MindSpore框架的靜態(tài)圖特性,只需要在第一次正向訓(xùn)練時編圖,后續(xù)即使加載其它LoRA-ckpt更新參數(shù),也無需重新編圖。

為大模型減輕負(fù)擔(dān)的LoRA算法本身用起來也很輕松,端到端僅需簡單五步就可以完成適配。

第一步:將模型CrossAttention結(jié)構(gòu)中qkvo的Dense層替換成LoRADense:

第二步:在訓(xùn)練腳本中調(diào)用凍結(jié)方法,僅訓(xùn)練新增的lora模塊:

第三步:在訓(xùn)練腳本中將保存ckpt的ModelCheckpoint替換為TrainableParamsCheckPoint,僅保存需要更新的參數(shù):

第四步:根據(jù)訓(xùn)練目標(biāo)調(diào)整學(xué)習(xí)率、batch_size等參數(shù):

第五步:訓(xùn)練完成后,在評估腳本中分別加載預(yù)訓(xùn)練ckpt和微調(diào)后生成的ckpt:

目前已經(jīng)開源所有代碼,詳細(xì)的接口和用例介紹如下:

https://github.com/mindspore-lab/MindPet/blob/master/doc/TK_DeltaAlgorithm_README.md

需要注意的是相比全參微調(diào),適配LoRA后一般要設(shè)置更大的學(xué)習(xí)率。如適配悟空畫畫時,我們就將學(xué)習(xí)率從1e-5增大到1e-4。

MindSpore PET - Prefix-Tuning

Prefix-Tuning: Optimizing Continuous Prompts for Generation,也是一種針對大語言模型的低參微調(diào)算法。研究人員提出,使用連續(xù)的向量而不是離散的詞匯來構(gòu)建前綴模板,即在輸入前加入連續(xù)的token embedding,可以增加query和key的相關(guān)性。因此,Prefix-Tuning通過在每個multi-head attention的 key 矩陣和 value 矩陣前注入可訓(xùn)練的prefix向量k,v,并凍結(jié)原始網(wǎng)絡(luò)參數(shù),來大幅提升生成類任務(wù)的性能。

Prefix-Tuning在GPT-2和盤古Alpha大模型上都有很好的效果。與全參微調(diào)相比,在保持原有精度的前提下,使用Prefix-Tuning訓(xùn)練盤古Alpha僅需5.5%的參數(shù)量,節(jié)約了65%以上的計算內(nèi)存,并將一個迭代的耗時縮短到一半。

MindSpore PET - Rdrop

R-Drop: Regularized Dropout for Neural Networks,是一種用于提升精度的微調(diào)算法,主要通過簡單的“兩次Dropout”來構(gòu)造正樣本進(jìn)行對比學(xué)習(xí),增加模型隨機(jī)性。具體是在模型加載完一個batch的數(shù)據(jù)集之后,復(fù)制一份該數(shù)據(jù),并同時輸入到模型中,然后分別計算損失函數(shù),并將結(jié)果相加得到最終的loss值。盡管邏輯非常簡單,卻能很好的防止模型過擬合,進(jìn)一步提高模型的正確率。經(jīng)在Bert上多個下游任務(wù)上驗證,幾乎保持同樣的內(nèi)存和時間開銷,就能提升2.6個點的精度。

大模型開發(fā)到部署是一個高門檻、復(fù)雜的過程,大模型使能套件將幫助開發(fā)者,讓大模型更易開發(fā)、易適配、易部署。

想了解更多關(guān)于TransFormers大模型套件MindSpore TransFormers、以文生圖大模型套件MindSpore Diffusion、人類反饋強化學(xué)習(xí)套件MindSpore RLHF的相關(guān)信息,請關(guān)注昇思MindSpore公眾號,我們將持續(xù)為大家?guī)?a href="http://ygpos.cn/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD_1.html" target="_blank" class="keylink">人工智能領(lǐng)域技術(shù)干貨和活動消息。

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

贊助商
2023-04-10
大模型高效開發(fā)的秘密武器——大模型低參微調(diào)套件MindSpore PET篇
大模型開發(fā)到部署是一個高門檻、復(fù)雜的過程,大模型使能套件將幫助開發(fā)者,讓大模型更易開發(fā)、易適配、易部署。

長按掃碼 閱讀全文