構建NLP深度學習模型其實就是搭積木

7594 人參與      分類 : 科技  

構建NLP深度學習模型其實就是搭積木

新智元推薦

來源:PaperWeekly(ID:paperweekly)

整理編輯:三石

【新智元導讀】近日,為了提高NLP深度學習模型過程中的效率,微軟亞洲互聯網工程院NLP團隊重磅推出開源項目NeuronBlocks,使得上述複雜的任務像搭積木一樣簡單!

其實,構建NLP深度學習模型就是搭積木。

在構建自然語言理解深度學習模型過程中,研究人員或者工程師們經常需要在編程細節和代碼調試上花費大量精力,而不是專註於模型架構設計與參數調整。

為了提升構建深度模型的效率,微軟亞洲互聯網工程院自然語言理解團隊 (STCA NLP Group, Microsoft) 推出了開源項目NeuronBlocks——自然語言處理任務的模塊化深度學習建模工具包

構建NLP深度學習模型其實就是搭積木

論文地址:https://arxiv.org/abs/1904.09535

項目地址:https://github.com/Microsoft/NeuronBlocks

NeuronBlocks將常用的神經網路層封裝為標準模塊,通過配置簡單的配置文件,就可以輕鬆構建複雜的深度神經網路模型。與此同時,工具包還提供了一系列針對常見NLP 任務的經典模型。NeuronBlocks能使工程師們在幾秒鐘內快速構建和訓練各種自然語言處理模型。工具包的可擴展性很強,支持快速加入新的神經元模塊用於新的網路模型的構建,最大程度地避免重複的代碼工作。

目前工具包支持的任務包括:句子分類(二/多分類)文本匹配序列標註閱讀理解基於知識蒸餾的模型壓縮,等等。

NeuronBlocks設計

NeuronBlocks是基於PyTorch的NLP深度學習建模工具包,可以幫助研究員或者工程師們快速構建自然語言理解任務的深度神經網路模型。該工具包的主要目標是將NLP深度神經網路模型構建的開發成本降到最低,包括模型訓練階段和推斷階段。NeuronBlocks整體框架如下圖所示,包括Block ZooModel Zoo兩個重要組件。

構建NLP深度學習模型其實就是搭積木

Block Zoo將常用的神經網路層抽象並封裝為可重用的標準模塊。這些模塊將被用於構建各種針對不同自然語言理解任務的深度學習模型。工具包目前支持的標準神經網路模塊包括:詞嵌入、CNN、LSTM/GPU、Transformer和各種Attention等。

Model Zoo提供大量預構建好的深度神經網路模型,涵蓋了常見的NLP任務。這些模型以JSON配置文件的形式呈現,用戶可以通過簡單修改Model Zoo中的示例模型配置,即可將其應用於自己的任務中。此外,工具包支持Linux和Windows操作系統、CPU與GPU處理器、以及PAI等GPU調度平台。

快速開始

NeuronBlocks目前支持:Python 3.6, PyTorch 0.4.1,Linux/Windows,GPU/CPU。

1、獲取源碼:

git clone https://github.com/Microsoft/NeuronBlocks

2、安裝依賴包:

pip install -r requirements.txt

pip install torch==0.4.1

3、運行示例模型:

# 訓練

cd PROJECT_ROOT

python train.py --conf_path=model_zoo/demo/conf.json

# 測試

python test.py --conf_path=model_zoo/demo/conf.json

# 預測

python predict.py --conf_path=model_zoo/demo/conf.json

NeuronBlocks工作流程

用戶可以選擇Model Zoo中的示例模型(JSON配置文件)開啟模型訓練,或者利用Block Zoo中的標準神經網路模塊自由構建新的模型架構,就像玩樂高積木一樣。

構建NLP深度學習模型其實就是搭積木

模型可視化工具

NeuronBlocks提供了一個模型可視化工具,可以快速繪製模型架構圖,如下圖所示。

構建NLP深度學習模型其實就是搭積木

NeuronBlocks優勢

模型構建:用戶只需要配置簡單的JSON文件,就能夠構建模型和調整參數,大大減少了模型實現的工作量;

模型分享:可以通過分享JSON配置文件來分享模型,使模型共享變得非常容易。對於不同的任務或模型,用戶只需維護一個通用的源碼庫;

代碼重用:可以在各任務與模型間共享神經網路模塊,減少重複的編程工作;

平台靈活性:可以在Linux和Windows機器上運行,支持CPU和GPU,也支持像Open PAI這樣的GPU管理平台;

模型可視化:提供了一個模型可視化工具,用於觀察模型結構及檢查JSON配置的正確性;

可擴展性:支持用戶貢獻新的神經網路模塊或者新的模型。

當然,有興趣的讀者可以加入NeuronBlocks開源項目,一起貢獻代碼!

參考鏈接:

https://arxiv.org/pdf/1904.09535.pdf

https://github.com/Microsoft/NeuronBlocks

構建NLP深度學習模型其實就是搭積木