如此簡(jiǎn)潔易用,得益于本次ERNIE語義理解開源開發(fā)套件的全新升級(jí)。借助國產(chǎn)深度學(xué)習(xí)框架飛槳?jiǎng)討B(tài)圖優(yōu)勢(shì),本次升級(jí)實(shí)現(xiàn)了“動(dòng)態(tài)圖”與“靜態(tài)圖”的完美結(jié)合,即“一套代碼,兩種運(yùn)行方式”,使得開發(fā)者更加高效、方便的使用ERNIE解決工業(yè)生產(chǎn)中的各類NLP問題,達(dá)到簡(jiǎn)單幾行代碼即可實(shí)現(xiàn)基于ERNIE的文本分類、情感分析等經(jīng)典NLP任務(wù)。
ERNIE開源套件:https://github.com/PaddlePaddle/ERNIE
動(dòng)態(tài)圖vs靜態(tài)圖
當(dāng)前,主流深度學(xué)習(xí)框架的編程方式主要包含“聲明式編程”和“命令式編程”兩種。通俗來說,前者稱為“靜態(tài)圖”,是指用戶需要事先把神經(jīng)網(wǎng)絡(luò)計(jì)算流程定義好,再通過執(zhí)行器執(zhí)行;而后者則稱為“動(dòng)態(tài)圖”,是指用戶可以在Python解釋器中逐行輸入計(jì)算指令,而框架在后臺(tái)同步完成運(yùn)算。兩種方式各有優(yōu)勢(shì),動(dòng)態(tài)圖“所見即所得”的特性可以快速實(shí)現(xiàn)最新的idea;而靜態(tài)化的運(yùn)算流程可以在脫離Python的生產(chǎn)環(huán)境中部署上線。
為了兼顧兩種優(yōu)勢(shì),ERNIE開源套件進(jìn)行了全新升級(jí),推出了動(dòng)靜合一的ERNIE語義理解開發(fā)套件。
動(dòng)靜合一的ERNIE開源套件
新版ERNIE開源套件突顯了模型易取易用性,簡(jiǎn)單幾行代碼就可以把ERNIE跑起來。整套核心代碼簡(jiǎn)單、清晰,使得開發(fā)者,尤其是剛?cè)腴TNLP的新手玩家,可以學(xué)習(xí)各類NLP任務(wù)的finetune,加載舊版本checkpoint、C++ inference API、ERNIE-server等每一個(gè)重要功能的細(xì)節(jié)。同時(shí),新版ERNIE開源套件還為廣大初學(xué)者提供了豐富的AI Studio教程,用戶無需自己提供GPU,即可運(yùn)行ERNIE來完成各類NLP任務(wù),做到了“人人有AI學(xué)”。 除此以外,新版ERNIE的環(huán)境配置也很簡(jiǎn)單,大部分的依賴都可以通過pip安裝。
1. pip install paddle-ernie
新版ERNIE套件最大程度地保證了邏輯的簡(jiǎn)潔,整體模型結(jié)構(gòu)核心代碼量較原來減少了41%,并采用了大家熟悉的面向?qū)ο笤O(shè)計(jì)。幾乎所有的網(wǎng)絡(luò)運(yùn)算邏輯集中在ernie/modeling_ernie.py文件中,在這里你可以看到ERNIE所支持的全部NLP任務(wù)的源代碼。各個(gè)對(duì)象及其對(duì)應(yīng)的NLP任務(wù)可見下表:
一行一行學(xué)NLP
對(duì)于初學(xué)NLP的玩家而言,最好的學(xué)習(xí)方式莫過于親自上手調(diào)試,把模型拆開后,一步一步調(diào)試檢查其中的結(jié)果以及神經(jīng)網(wǎng)絡(luò)流程的走向。為此,新ERNIE套件內(nèi)置了豐富的教程(https://github.com/PaddlePaddle/ERNIE#%E6%95%99%E7%A8%8B):你無需提供運(yùn)算資源,在網(wǎng)頁端即可運(yùn)行教程代碼。目前官方提供的示例教程包括:
從0開始學(xué)ERNIE
情感識(shí)別
完形填空
知識(shí)蒸餾
萬事不決問ERNIE
這些教程既含有ERNIE原理解釋,也涵蓋了ERNIE的訓(xùn)練和預(yù)測(cè)過程。例如在“萬事不決問ERNIE”中,通過一小段代碼,展示了ERNIE做閱讀理解任務(wù)的過程:
又例如,在“從0開始學(xué)ERNIE”中,整個(gè)訓(xùn)練循環(huán)被濃縮成下面幾行:
除此之外,新ERNIE套件動(dòng)態(tài)執(zhí)行的代碼可以很方便地配合Python的debuger或者第三方IDE的調(diào)試模式(如PyCharm),進(jìn)行逐行debug。例如,你可以在教程中任意地方插入ipdb的debug語句:
Python解釋器運(yùn)行到插入的語句時(shí)會(huì)自動(dòng)暫停,你可以在debugger的交互環(huán)境中輸入相應(yīng)的指令來觀察程序的狀態(tài),如:
1. p featuer.numpy()
則debugger 返回feature tensor中的所有內(nèi)容:
簡(jiǎn)單易用的分布式Finetune功能
為了提升ERNIE的Finetune速度,最新ERNIE套件全新支持了分布式Finetune功能。依托飛槳?jiǎng)討B(tài)分布式API優(yōu)勢(shì),開發(fā)者僅需一個(gè)封裝:model = FD.parallel.DataParallel(model, ctx) ,模型便具備了分布式訓(xùn)練的能力。當(dāng)你在Python程序中顯式調(diào)用apply_collective_grads 時(shí),系統(tǒng)會(huì)進(jìn)行一次全局通信來平均所有運(yùn)算進(jìn)程中產(chǎn)生的loss 梯度。你需要做的是,在運(yùn)行環(huán)境中使用啟動(dòng)器:paddle.distributed.launch 來在參與訓(xùn)練的每一張GPU卡上啟動(dòng)訓(xùn)練進(jìn)程。由啟動(dòng)器拉起來的進(jìn)程會(huì)自動(dòng)發(fā)現(xiàn)對(duì)方并開始多機(jī)通信。
動(dòng)態(tài)編程,靜態(tài)部署
為了保證動(dòng)態(tài)圖模型部署的性能,兼容針對(duì)靜態(tài)圖做的部署代碼性能優(yōu)化。開發(fā)者可選擇通過TracedLayer.trace API將動(dòng)態(tài)模型序列化成為靜態(tài)模型使用:
在調(diào)用TracedLayer.trace API時(shí),開發(fā)者可動(dòng)態(tài)傳入兩個(gè)虛擬構(gòu)造出來的tensor;分別代表即將輸入的 token id 和 sentence type id ,paddle后臺(tái)會(huì)自動(dòng)追蹤ERNIE的forward 過程并把中間運(yùn)行的op序列化下來,成為靜態(tài)圖模型。隨后便可調(diào)用靜態(tài)圖 save_inference_model API將模型保存下來。如此保存下來的模型與舊版本模型并無二致。
得益于本次動(dòng)靜合一的全新升級(jí),開發(fā)者可以更方便地獲取ERNIE強(qiáng)大的語義理解能力,賦能各行各業(yè)智能化轉(zhuǎn)型,助燃智能經(jīng)濟(jì)騰飛。
百度在自然語言處理領(lǐng)域已有二十年的積累與沉淀,具備最前沿、最全面、最領(lǐng)先的技術(shù)布局,不僅專注于前瞻技術(shù)探索,更致力通過技術(shù)應(yīng)用解決實(shí)際問題。飛槳是中國首個(gè)開源開放、功能完備的產(chǎn)業(yè)級(jí)深度學(xué)習(xí)平臺(tái),集深度學(xué)習(xí)核心框架、基礎(chǔ)模型庫、端到端開發(fā)套件、工具組件和服務(wù)平臺(tái)于一體。目前,飛槳累計(jì)開發(fā)者數(shù)量194萬,服務(wù)企業(yè)數(shù)量8.4萬家,基于飛槳平臺(tái)產(chǎn)生了23.3萬模型。飛槳助力開發(fā)者快速實(shí)現(xiàn)AI想法、快速上線AI業(yè)務(wù),幫助越來越多的行業(yè)完成AI 賦能,實(shí)現(xiàn)產(chǎn)業(yè)智能化升級(jí)。
鄭重聲明:中國IT研究中心網(wǎng)站刊登/轉(zhuǎn)載此文出于傳遞更多信息之目的 ,并不意味著贊同其觀點(diǎn)或論證其描述。中國IT研究中心不負(fù)責(zé)其真實(shí)性 。