最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

文心ERNIE 3.0 Tiny新升級!端側(cè)壓縮部署“小” “快” “靈”!

2023-02-14 10:35 作者:飛槳PaddlePaddle  | 我要投稿

大家好,今天帶來的是有關(guān)文心ERNIE 3.0 Tiny新升級內(nèi)容的文章。

近年來,隨著深度學(xué)習(xí)技術(shù)的迅速發(fā)展,大規(guī)模預(yù)訓(xùn)練范式通過一次又一次刷新各種評測基線證明了其卓越的學(xué)習(xí)與遷移能力。在這個(gè)過程中,研究者們發(fā)現(xiàn)通過不斷地?cái)U(kuò)大模型參數(shù)便能持續(xù)提升深度學(xué)習(xí)模型的威力。然而,參數(shù)的指數(shù)級增長意味著模型體積增大、所需計(jì)算資源增多、計(jì)算耗時(shí)更長,而這無論出于業(yè)務(wù)線上響應(yīng)效率的要求還是機(jī)器資源預(yù)算問題,都給大模型落地帶來了極大的挑戰(zhàn)。讓我們一起看看文心ERNIE 3.0 Tiny如何來解決這些問題的吧!

圖:模型上線時(shí)精度、時(shí)延、內(nèi)顯存占用等多重需求示意

如何在保證效果的前提下壓縮模型?如何適配 CPU、GPU 等多硬件的加速?如何在端側(cè)場景下落地大模型?如何讓加速工具觸手可及?這是行業(yè)內(nèi)亟待解決的課題。2022年6月,文心大模型中的輕量化技術(shù)加持的多個(gè)文心ERNIE 3.0 Tiny輕量級模型(下文簡稱文心ERNIE 3.0 Tiny v1)開源至飛槳自然語言處理模型庫PaddleNLP中,該模型刷新了中文小模型的SOTA成績,配套模型動(dòng)態(tài)裁剪和量化推理方案,被學(xué)術(shù)與工業(yè)界廣泛使用。

近期,文心ERNIE 3.0 Tiny升級版–––文心ERNIE 3.0 Tiny v2也開源了!相較于v1,文心ERNIE 3.0 Tiny v2在Out-domain(域外數(shù)據(jù))、Low-resource(小樣本數(shù)據(jù))的下游任務(wù)上精度顯著提升,并且v2還開源了3L128H結(jié)構(gòu),5.99M參數(shù)量的小模型,更適用于端側(cè)等低資源場景。

同時(shí),PaddleNLP依托PaddleSlim、Paddle Lite、FastDeploy開源了一整套端上語義理解壓縮和部署方案。通過模型裁剪、量化感知訓(xùn)練、Embedding量化等壓縮方案,在保持模型精度不降的情況下,推理加速2.1倍,內(nèi)存占用降低62.18%(降低2.6倍),體積縮小92.2%(縮小12.8倍)僅5.4M。再結(jié)合高性能NLP處理庫FastTokenizer對分詞階段進(jìn)行加速,使端到端推理性能顯著提升,從而將文心ERNIE 3.0 Tiny v2模型成功部署至端側(cè)。由于端側(cè)部署對內(nèi)存占用的要求比服務(wù)端更高,因此該方案也同樣適用于服務(wù)端部署。

圖:端側(cè)設(shè)備示意

文心 ERNIE 3.0 Tiny v2開源

百度文心大模型團(tuán)隊(duì)在2021年底發(fā)布了百億級別大模型文心ERNIE 3.0和千億級別的大模型文心ERNIE 3.0 Titan。為了讓大模型的能力能夠真正在一線業(yè)務(wù)發(fā)揮威力,文心大模型團(tuán)隊(duì)推出多個(gè)輕量級模型,即文心ERNIE 3.0 Tiny系列,刷新了中文小模型的成績。除了在GPU上,這些模型也能在CPU上輕松調(diào)用,極大拓展了大模型的使用場景。本次開源的文心ERNIE 3.0 Tiny v2,使教師模型預(yù)先注入下游知識(shí)并參與多任務(wù)訓(xùn)練,大大提高了小模型在下游任務(wù)上的效果。

多任務(wù)學(xué)習(xí)提升泛化性

文心ERNIE 3.0 Tiny v1直接通過在線蒸餾技術(shù)將預(yù)訓(xùn)練大模型壓縮成預(yù)訓(xùn)練小模型。在此基礎(chǔ)上,文心ERNIE 3.0 Tiny v2 首先在多個(gè)下游任務(wù)中微調(diào)教師模型,讓教師模型學(xué)習(xí)到下游任務(wù)相關(guān)知識(shí),并將這些知識(shí)通過蒸餾的方式傳導(dǎo)給學(xué)生模型。盡管學(xué)生模型完全沒有見過下游數(shù)據(jù),也能夠蒸餾獲取到下游任務(wù)的相關(guān)知識(shí),進(jìn)而使下游任務(wù)的效果得到提升。由于教師模型是在多任務(wù)上進(jìn)行微調(diào)的,多任務(wù)學(xué)習(xí)帶來的強(qiáng)泛化性也能傳遞給學(xué)生模型,從而提升小模型的泛化性,最終獲得的學(xué)生模型相比文心ERNIE 3.0 Tiny v1在Out-domain和Low-resource數(shù)據(jù)集上獲得大幅提升。

圖:文心ERNIE 3.0 Tiny v2示意

文心ERNIE 3.0 Tiny v2 包含一系列不同尺寸的中文預(yù)訓(xùn)練模型,方便不同性能需求的應(yīng)用場景使用:

  • 文心ERNIE 3.0 Tiny-Base-v2

  • 文心ERNIE 3.0 Tiny-Medium-v2

  • 文心ERNIE 3.0 Tiny-Mini-v2

  • 文心ERNIE 3.0 Tiny-Micro-v2

  • 文心ERNIE 3.0 Tiny-Nano-v2

  • 文心ERNIE 3.0 Tiny-Pico-v2

除以上中文模型外,本次還發(fā)布了英文版文心ERNIE 3.0 Tiny-Mini-v2,適用于各類英文任務(wù)。多任務(wù)學(xué)習(xí)的能力加持下,在文本分類、文本推理、實(shí)體抽取、問答等各種 NLU 任務(wù)上,文心ERNIE 3.0 Tiny v2相比文心ERNIE 3.0 Tiny v1在Out-domain、Low-resource數(shù)據(jù)上均獲得顯著的效果提升,在In-domain上也有一定提升。


文心ERNIE 3.0 Tiny v2 多任務(wù)學(xué)習(xí)、在線蒸餾方案效果顯著,刷新了中文小模型的SOTA成績。具體對比數(shù)據(jù)見如下模型精度-時(shí)延圖,橫坐標(biāo)表示在 ARM CPU(高通865芯片)上,基于ARMv8 arch測試(batch_size=1, seq_len=32)的推理時(shí)延(Latency,單位毫秒),縱坐標(biāo)是 CLUE 10 個(gè)任務(wù)上的平均精度(包含文本分類、文本匹配、自然語言推理、代詞消歧、閱讀理解等任務(wù)),其中CMRC2018閱讀理解任務(wù)的評價(jià)指標(biāo)是Exact Match(EM),其它任務(wù)的評價(jià)指標(biāo)均是Accuracy。模型名下方標(biāo)注了模型的參數(shù)量。


圖中越靠左上方的模型,精度和性能水平越高??梢钥吹?strong>文心ERNIE 3.0 Tiny v2在同等規(guī)模的開源模型中,綜合實(shí)力領(lǐng)先其他同類型輕量級模型,這波開源厲害了!與UER/RoBERTa-Base相比,12L768H的文心ERNIE 3.0 Base平均精度提升了4.5個(gè)點(diǎn);6L768H的文心ERNIE 3.0 Medium相比12L768H的UER/Chinese-RoBERTa高2.4,并且節(jié)省一倍運(yùn)算時(shí)間;另外值得一提的是,這些小模型能夠直接部署在CPU上,簡直是CPU開發(fā)者的希望之光!

在PaddleNLP中,可一鍵加載以上模型。

此外,PaddleNLP還提供了CLUE Benchmark的一鍵評測腳本,并提供了大量中文預(yù)訓(xùn)練模型在CLUE上的效果。PaddleNLP接入了Grid Search策略,支持在超參列表范圍內(nèi)自動(dòng)搜索超參,保留最佳結(jié)果和對應(yīng)的超參數(shù),方便一鍵復(fù)現(xiàn)模型效果,且打通了CLUE各個(gè)任務(wù)數(shù)據(jù)處理、訓(xùn)練、預(yù)測、結(jié)果提交的流程,方便用戶快速提交CLUE榜單。

以上模型均已開源,如有幫助,歡迎star支持。

  • 模型地址 ?

https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/ernie-tiny

端上語義理解壓縮、部署方案

由文心大模型蒸餾得到的文心ERNIE 3.0 Tiny v2可以直接在下游任務(wù)上微調(diào)應(yīng)用,如果想要將模型部署在移動(dòng)端、邊緣端,或者想要進(jìn)一步壓縮模型體積,降低推理時(shí)延,可使用PaddleNLP開源的端上語義理解壓縮方案。以邊緣端業(yè)務(wù)上線場景為例,模型經(jīng)過壓縮后,精度基本無損,端到端推理速度達(dá)到原來的2.13倍,內(nèi)存占用減小了62.18%,體積減小了92.2%

結(jié)合飛槳模型壓縮工具PaddleSlim,PaddleNLP發(fā)布了端上語義理解壓縮方案,包含裁剪、量化級聯(lián)壓縮,如下圖所示:

基于PaddleNLP提供的的模型壓縮API,可大幅降低開發(fā)成本。壓縮API支持對ERNIE、BERT等ransformer類下游任務(wù)微調(diào)模型進(jìn)行裁剪和量化。只需要簡單地調(diào)用compress()即可一鍵啟動(dòng)裁剪量化流程,并自動(dòng)保存壓縮后的模型。


下面會(huì)對壓縮方案中的詞表裁剪、模型寬度裁剪、量化感知訓(xùn)練、詞表量化進(jìn)行介紹。

詞表裁剪

端側(cè)部署對內(nèi)存占用的要求較高,而文心ERNIE 3.0 Tiny預(yù)訓(xùn)練模型的詞表參數(shù)量在總參數(shù)量中占比很大,因此在下游任務(wù)微調(diào)之前,可以按照詞頻對詞表進(jìn)行裁剪,去除出現(xiàn)頻次較低的詞,這樣能夠減少分詞后[UNK]的出現(xiàn),使精度得到最大限度保持。例如,某數(shù)據(jù)集4w大小的詞表,高頻出現(xiàn)的詞不到1w個(gè),此時(shí)通過詞表裁剪可以節(jié)省不少內(nèi)存。

模型寬度裁剪

基于DynaBERT寬度自適應(yīng)裁剪策略,通過知識(shí)蒸餾的方法,在下游任務(wù)中將文心ERNIE 3.0 Tiny的知識(shí)遷移到寬度更窄的學(xué)生網(wǎng)絡(luò)中,最后得到效果與教師模型接近的學(xué)生模型。一般來說,對于4到6層的NLU模型,寬度裁剪1/4可基本保證精度無損。DynaBERT寬度自適應(yīng)裁剪策略主要分為以下3個(gè)步驟:

Step1

根據(jù)Attention Head和FFN中神經(jīng)元的重要性對神經(jīng)元進(jìn)行重新排序,將新模型作為待壓縮的模型,這樣可以保證之后對神經(jīng)元的裁剪可以更大程度地保留更重要的神經(jīng)元。


Step2

用教師模型同時(shí)蒸餾按不同比例壓縮寬度的多個(gè)模型。


在蒸餾后得到的不同寬度的學(xué)生模型中,選擇大小和精度符合要求的模型并導(dǎo)出。

量化感知訓(xùn)練

模型量化是一種通過將訓(xùn)練好的模型參數(shù)、激活值從FP32浮點(diǎn)數(shù)轉(zhuǎn)換成INT8整數(shù)來減小存儲(chǔ)、加快計(jì)算速度、降低功耗的模型壓縮方法。目前主要有兩種量化方法:

  • 靜態(tài)離線量化:使用少量校準(zhǔn)數(shù)據(jù)計(jì)算量化信息,可快速得到量化模型;

  • 量化感知訓(xùn)練:在模型中插入量化、反量化算子并進(jìn)行訓(xùn)練,使模型在訓(xùn)練中學(xué)習(xí)到量化信息 。

圖:量化感知訓(xùn)練 vs 離線量化

在對文心ERNIE 3.0 Tiny的壓縮中,更推薦使用量化感知訓(xùn)練的方式。通常情況下,使用量化感知訓(xùn)練的方法能夠比使用靜態(tài)離線量化取得更高的精度。這是因?yàn)樵诹炕兄?xùn)練之前,壓縮API在模型的矩陣乘算子前插入量化、反量化算子,使量化帶來的誤差可以在訓(xùn)練過程中被建模和優(yōu)化,能夠使模型被量化后精度基本無損。

Embedding 量化

端側(cè)部署對顯存的要求比較高,為了能進(jìn)一步節(jié)省內(nèi)存占用,可對模型的 Embedding 權(quán)重進(jìn)行INT8量化,并將精度的損失保持在0.5%之內(nèi)。Embedding 量化主要分兩步:

Step1

離線統(tǒng)計(jì)權(quán)重在log域上的分布并進(jìn)行分桶,根據(jù)分桶結(jié)果將FP32權(quán)重量化成INT8權(quán)重。如圖所示,量化算子會(huì)統(tǒng)計(jì)權(quán)重在log域上量化后的數(shù)值分布,取出現(xiàn)次數(shù)top k的FP32數(shù)值,記錄在對應(yīng)的x軸上,作為buckets的value,其中key為 [-128,127] 范圍內(nèi)的整數(shù)。

Step2

構(gòu)造INT8推理模型:將權(quán)重設(shè)置為量化后的INT8權(quán)重,并在Embedding對應(yīng)的算子后,插入反量化算子,反量化算子根據(jù)buckets將INT8數(shù)值類型的輸入 [5, 3, 6] 反量化為 [1.51, 0.75, 2.50],實(shí)現(xiàn)方式為查表。


部署

模型壓縮后,精度基本無損,體積減小了92.2%,僅有5.4MB。到此,算法側(cè)的工作基本完成。為了進(jìn)一步降低部署難度,可以使用飛槳FastDeploy對模型進(jìn)行部署。FastDeploy是一款全場景、易用靈活、極致高效的AI推理部署工具,提供開箱即用的部署體驗(yàn)。

FastDeploy為NLP任務(wù)提供了一整套完整的部署Pipeline,提供文心ERNIE 3.0 Tiny模型從文本預(yù)處理、推理引擎Runtime以及后處理三個(gè)階段所需要的接口模塊,開發(fā)者可以基于這些接口模塊在云、邊、端上部署各類常見的NLP任務(wù),如文本分類、序列標(biāo)注、信息抽取等。

FastDeploy中的Paddle Lite后端基于算子融合和常量折疊對深度模型進(jìn)行優(yōu)化,無縫銜接了Paddle Lite的FP16和INT8的推理能力,可使模型推理速度大幅提升。其集成的高性能NLP處理庫FastTokenizer(視覺領(lǐng)域集成了高性能AI處理庫FlyCV),能夠?qū)Ψ衷~階段進(jìn)行加速,適配GPU、CPU等多硬件。例如在麒麟985芯片上測試,單條文本的分詞時(shí)延低于0.1毫秒。

在端到端部署方面,FastDeploy在Android端目前支持CV和NLP中的7+場景,35+模型的開箱即用,以及簡單一致的API,讓Android開發(fā)者快速完成AI落地,并且獲得考慮前后處理在內(nèi)端到端高性能的部署體驗(yàn)。

綜上,基于FastDeploy部署工具,可完成文心ERNIE 3.0 Tiny端側(cè)和服務(wù)端的高效部署。以下動(dòng)圖展示了基于文心ERNIE 3.0 Tiny v2的意圖識(shí)別、槽位填充聯(lián)合模型,使用FastDeploy部署在Android APP上進(jìn)行推理的效果展示:

  • GitHub地址 ?

https://github.com/PaddlePaddle/FastDeploy

總結(jié)來說,以上各類壓縮策略以及對應(yīng)的推理功能如果從零實(shí)現(xiàn)非常復(fù)雜,飛槳模型壓縮工具庫PaddleSlim和飛槳高性能深度學(xué)習(xí)端側(cè)推理引擎Paddle Lite提供了一系列壓縮、推理工具鏈。飛槳AI推理部署工具FastDeploy對其進(jìn)一步封裝,使開發(fā)者可以通過更簡單的API去實(shí)現(xiàn)模型壓縮、推理部署流程,適配多領(lǐng)域模型,并兼容多硬件。PaddleNLP依托以上工具,提供NLP模型數(shù)據(jù)處理、訓(xùn)練、壓縮、部署全流程的最佳實(shí)踐。

文心大模型

隨著數(shù)據(jù)井噴、算法進(jìn)步和算力突破,效果好、泛化能力強(qiáng)、通用性強(qiáng)的預(yù)訓(xùn)練大模型(以下簡稱“大模型”),成為人工智能發(fā)展的關(guān)鍵方向與人工智能產(chǎn)業(yè)應(yīng)用的基礎(chǔ)底座。

文心大模型源于產(chǎn)業(yè)、服務(wù)于產(chǎn)業(yè),是產(chǎn)業(yè)級知識(shí)增強(qiáng)大模型,涵蓋基礎(chǔ)大模型、任務(wù)大模型、行業(yè)大模型,大模型總量達(dá)36個(gè),并構(gòu)建了業(yè)界規(guī)模最大的產(chǎn)業(yè)大模型體系。文心大模型配套了豐富的工具與平臺(tái)層,包括大模型開發(fā)套件、API以及內(nèi)置文心大模型能力的EasyDL和BML開發(fā)平臺(tái)。 百度通過大模型與國產(chǎn)深度學(xué)習(xí)框架融合發(fā)展,打造了自主創(chuàng)新的AI底座,大幅降低了AI開發(fā)和應(yīng)用的門檻,滿足真實(shí)場景中的應(yīng)用需求,真正發(fā)揮大模型驅(qū)動(dòng)AI規(guī)?;瘧?yīng)用的產(chǎn)業(yè)價(jià)值。

  • 文心大模型官網(wǎng)地址

https://wenxin.baidu.com/

相關(guān)項(xiàng)目地址

  • 官網(wǎng)地址

https://www.paddlepaddle.org.cn

  • PaddleNLP

https://github.com/PaddlePaddle/PaddleNLP

  • FastDeploy

https://github.com/PaddlePaddle/FastDeploy

  • PaddleSlim

https://github.com/PaddlePaddle/PaddleSlim

  • Paddle Lite ?

https://github.com/PaddlePaddle/Paddle-Lite

參考文獻(xiàn) ?

[1] Liu W, Chen X, Liu J, et al. ERNIE 3.0 Tiny: Frustratingly Simple Method to Improve Task-Agnostic Distillation Generalization[J]. arXiv preprint arXiv:2301.03416, 2023.

[2] Su W, Chen X, Feng S, et al. ERNIE-Tiny: A Progressive Distillation Framework for Pretrained Transformer Compression[J]. arXiv preprint arXiv:2106.02241, 2021.

[3] Wang S, Sun Y, Xiang Y, et al. ERNIE 3.0 Titan: Exploring Larger-scale Knowledge Enhanced Pre-training for Language Understanding and Generation[J]. arXiv preprint arXiv:2112.12731, 2021.

[4] Sun Y, Wang S, Feng S, et al. ERNIE 3.0: Large-scale Knowledge Enhanced Pre-training for Language Understanding and Generation[J]. arXiv preprint arXiv:2107.02137, 2021.

[5] Hou L, Huang Z, Shang L, Jiang X, Chen X and Liu Q. DynaBERT: Dynamic BERT with Adaptive Width and Depth[J]. arXiv preprint arXiv:2004.04037, 2020.[6] Wu H, Judd P, Zhang X, Isaev M and Micikevicius P. Integer Quantization for Deep Learning Inference: Principles and Empirical Evaluation[J]. arXiv preprint arXiv:2004.09602v1, 2020.


文心ERNIE 3.0 Tiny新升級!端側(cè)壓縮部署“小” “快” “靈”!的評論 (共 條)

分享到微博請遵守國家法律
宁海县| 定安县| 自贡市| 密云县| 布尔津县| 福鼎市| 孟连| 仙居县| 大足县| 马尔康县| 滨海县| 华蓥市| 大兴区| 铜川市| 巴彦淖尔市| 双鸭山市| 宣威市| 太原市| 墨竹工卡县| 沾益县| 荃湾区| 长治县| 绵阳市| 苍溪县| 剑河县| 突泉县| 淮阳县| 石台县| 沂水县| 山东省| 余江县| 文成县| 凤阳县| 榆树市| 禹州市| 修水县| 凌源市| 溧水县| 慈溪市| 昌都县| 苏尼特左旗|