微軟開源專案 NeuronBlocks:像搭積木一樣構建 NLP 深度學習模型!
作者 | 微軟亞洲網際網路工程院 (STCA) NLP Group
責編 | 胡巍巍
在構建自然語言理解深度學習模型過程中,研究人員或者工程師們經常需要在程式設計細節和程式碼除錯上花費大量精力,而不是專注於模型架構設計與引數調整。
為了提升構建深度模型的效率,微軟亞洲網際網路工程院自然語言理解團隊 (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 Zoo和Model 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。
獲取原始碼:
git clone https://github.com/Microsoft/NeuronBlocks
安裝依賴包:
pip install -r requirements.txt
pip install torch==0.4.1
執行示例模型:
# 訓練
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開源專案,一起貢獻程式碼!
如有任何問題,請聯絡:[email protected]
作者簡介:微軟亞洲網際網路工程院 (STCA) NLP Group:團隊藉助微軟Bing,Cortana,和Office豐富應用場景、海量資料、超級計算平臺以及一流人才的長期積累,立足未來,開放合作!致力於NLP領域AI核心技術和產品的研發,強調產品應用與研究並重,覆蓋NLP全棧,包括基礎分詞,拼寫改錯,詞法分析,知識挖掘,知識圖譜,到智慧檢索、問答系統、機器閱讀、機器翻譯、智慧對話等。