歡迎光臨
每天分享高質量文章

微軟開源專案NeuronBlocks – 像搭積木一樣構建NLP深度學習模型

在構建自然語言理解深度學習模型過程中,研究人員或者工程師們經常需要在程式設計細節和程式碼除錯上花費大量精力,而不是專註於模型架構設計與引數調整。為了提升構建深度模型的效率,微軟亞洲網際網路工程院自然語言理解團隊 (STCA NLP Group, Microsoft) 推出了開源專案 NeuronBlocks – 自然語言處理任務的模組化深度學習建模工具包。

NeuronBlocks 將常用的神經網路層封裝為標準模組,透過配置簡單的配置檔案,就可以輕鬆構建複雜的深度神經網路模型。與此同時,工具包還提供了一系列針對常見 NLP 任務的經典模型。

 

NeuronBlocks 能使工程師們在幾秒鐘內快速構建和訓練各種自然語言處理模型。工具包的可擴充套件性很強,支援快速加入新的神經元模組用於新的網路模型的構建,最大程度地避免重覆的程式碼工作。

 

目前工具包支援的任務包括:句子分類(二/多分類),文字匹配,序列標註,閱讀理解,基於知識蒸餾的模型壓縮,等等。歡迎來自學術界和工業界的朋友加入 NeuronBlocks 開源專案:

 

專案地址:https://github.com/Microsoft/NeuronBlocks

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

NeuronBlocks設計

NeuronBlocks 是基於 PyTorch 的 NLP 深度學習建模工具包,可以幫助研究員或者工程師們快速構建自然語言理解任務的深度神經網路模型。該工具包的主要標的是將 NLP 深度神經網路模型構建的開發成本降到最低,包括模型訓練階段和推斷階段。

 

NeuronBlocks 整體框架如下圖所示,包括 Block ZooModel Zoo 兩個重要元件。

 

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 中的標準神經網路模組自由構建新的模型架構,就像玩樂高積木一樣。

 

 

模型視覺化工具

 

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

 

 

NeuronBlocks優勢

• 模型構建:使用者只需要配置簡單的 JSON 檔案,就能夠構建模型和調整引數,大大減少了模型實現的工作量; 

 

• 模型分享:可以透過分享 JSON 配置檔案來分享模型,使模型共享變得非常容易。對於不同的任務或模型,使用者只需維護一個通用的原始碼庫; 

 

• 程式碼重用:可以在各任務與模型間共享神經網路模組,減少重覆的程式設計工作; 

 

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

 

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

 

• 可擴充套件性:支援使用者貢獻新的神經網路模組或者新的模型。

 

聯絡我們

歡迎來自學術界和工業界的朋友加入 NeuronBlocks 開源專案,一起貢獻程式碼!

 

如有任何問題,請聯絡:

NeuronBlocks@microsoft.com

已同步到看一看
贊(0)

分享創造快樂