微軟開源專案NeuronBlocks - 像搭積木一樣構建NLP深度學習模型
在構建自然語言理解深度學習模型過程中,研究人員或者工程師們經常需要在程式設計細節和程式碼除錯上花費大量精力,而不是專注於模型架構設計與引數調整。為了提升構建深度模型的效率, 微軟亞洲網際網路工程院自然語言理解團隊 (STCA NLP Group, Microsoft) 推出了開源專案 NeuronBlocks - 自然語言處理任務的模組化深度學習建模工具包。
NeuronBlocks 將常用的神經網路層封裝為標準模組,通過配置簡單的配置檔案,就可以輕鬆構建複雜的深度神經網路模型。與此同時,工具包還提供了一系列針對常見 NLP 任務的經典模型。
NeuronBlocks 能使工程師們在幾秒鐘內快速構建和訓練各種自然語言處理模型。 工具包的可擴充套件性很強,支援快速加入新的神經元模組用於新的網路模型的構建,最大程度地避免重複的程式碼工作。
目前工具包支援的任務包括: 句子分類(二/多分類),文字匹配,序列標註,閱讀理解,基於知識蒸餾的模型壓縮 ,等等。歡迎來自學術界和工業界的朋友加入 NeuronBlocks 開源專案:

專案地址: https:// github.com/Microsoft/Ne uronBlocks
論文地址: https:// arxiv.org/abs/1904.0953 5
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。
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 開源專案,一起貢獻程式碼!
如有任何問題,請聯絡: [email protected]
#投 稿 通 道#
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢? 答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋樑,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是 最新論文解讀 ,也可以是 學習心得 或 技術乾貨 。我們的目的只有一個,讓知識真正流動起來。
:memo: 來稿標準:
• 稿件確係個人 原創作品 ,來稿需註明作者個人資訊(姓名+學校/工作單位+學歷/職位+研究方向)
• 如果文章並非首發,請在投稿時提醒並附上所有已釋出連結
• PaperWeekly 預設每篇文章都是首發,均會新增“原創”標誌
:mailbox_with_mail: 投稿方式:
• 方法一:在PaperWeekly知乎專欄頁面點選“投稿”,即可遞交文章
• 方法二:傳送郵件至: [email protected] ,所有文章配圖,請單獨在附件中傳送
• 請留下即時聯絡方式(微信或手機),以便我們在編輯釋出時和作者溝通
關於PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智慧前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號後臺點選 「交流群」 ,小助手將把你帶入 PaperWeekly 的交流群裡。
加入社群: http://paperweek.ly
微信公眾號:PaperWeekly
新浪微博:@PaperWeekly