NeuronBlocks模塊化 NLP 深度學(xué)習(xí)建模工具包
NeuronBlocks:像搭積木一樣構(gòu)建自然語(yǔ)言理解深度學(xué)習(xí)模型
概覽
NeuronBlocks 是一個(gè)模塊化 NLP 深度學(xué)習(xí)建模工具包,可以幫助工程師/研究者們快速構(gòu)建 NLP 任務(wù)的神經(jīng)網(wǎng)絡(luò)模型。 該工具包的主要目標(biāo)是將 NLP 中深度神經(jīng)網(wǎng)絡(luò)模型構(gòu)建的開發(fā)成本降到最低,包括訓(xùn)練階段和推斷階段。
NeuronBlocks 包括 Block Zoo 和 Model Zoo 兩個(gè)重要組件,其整體框架如下圖所示。
- 在 Block Zoo 中, 我們提供了常用的神經(jīng)網(wǎng)絡(luò)組件作為模型架構(gòu)設(shè)計(jì)的構(gòu)建模塊。
- 在 Model Zoo 中, 我們提供了 JSON配置文件 形式的一系列經(jīng)典 NLP 深度學(xué)習(xí)模型。
支持的語(yǔ)言
- English
- 中文
支持的 NLP 任務(wù)
- 句子分類
- 情感分析
- 問(wèn)答匹配
- 文本蘊(yùn)含
- 序列標(biāo)注
- 閱讀理解
- 基于知識(shí)蒸餾的模型壓縮
- 更多……
使用方法
用戶可以選擇 Model Zoo 中的示例模型(JSON 配置文件)開啟模型訓(xùn)練,或者利用 Block Zoo 中的神經(jīng)網(wǎng)絡(luò)模塊構(gòu)建新的模型,就像玩樂(lè)高積木一樣。
快速入門
安裝
注: NeuronBlocks支持 Python 3.6及以上
-
Clone本項(xiàng)目:
git clone https://github.com/Microsoft/NeuronBlocks
-
安裝Python依賴包:
pip install -r requirements.txt
-
安裝PyTorch ( NeuronBlocks支持 PyTorch 0.4.1 及以上):
對(duì)于 Linux ,運(yùn)行以下命令:
pip install "torch>=0.4.1"
對(duì)于 Windows ,建議按照PyTorch官方安裝教程通過(guò)Conda安裝PyTorch。
快速開始
通過(guò)以下示例快速入門NeuronBlocks。對(duì)于Windows,建議使用PowerShell工具運(yùn)行命令。
提示: 在下文中, PROJECTROOT表示本項(xiàng)目的根目錄。
# 訓(xùn)練 cd PROJECT_ROOT python train.py --conf_path=model_zoo/demo/conf.json # 測(cè)試 python test.py --conf_path=model_zoo/demo/conf.json # 預(yù)測(cè) python predict.py --conf_path=model_zoo/demo/conf.json
更多細(xì)節(jié), 請(qǐng)查看Tutorial_zh_CN.md 和 Code documentation。
適用人群
使用用神經(jīng)網(wǎng)絡(luò)模型解決NLP任務(wù)時(shí)面臨以下挑戰(zhàn)的工程師和研究者們:
- 很多框架可以選擇,且框架學(xué)習(xí)成本高;
- 繁重的編程工作,大量細(xì)節(jié)使其難以調(diào)試;
- 快速迭代的模型架構(gòu),使工程師們很難完全理解其背后的數(shù)學(xué)原理;
- 模型代碼優(yōu)化需要深厚的專業(yè)知識(shí);
- 平臺(tái)兼容性要求,需要額外的編程工作才能使模型運(yùn)行在不同的平臺(tái)上,如Linux/Windows, GPU/CPU。
利用 NeuronBlocks 進(jìn)行 NLP 神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練的優(yōu)勢(shì)包括:
- 模型構(gòu)建:用戶只需要配置簡(jiǎn)單的 JSON 文件,就能夠構(gòu)建模型和調(diào)整參數(shù),大大減少了模型實(shí)現(xiàn)的工作量;
- 模型分享:可以通過(guò)分享 JSON 配置文件來(lái)分享模型,使模型共享變得非常容易。對(duì)于不同的任務(wù)或模型,用戶只需維護(hù)一個(gè)通用的源碼庫(kù);
- 代碼重用:可以在各任務(wù)與模型間共享神經(jīng)網(wǎng)絡(luò)模塊,減少重復(fù)的編程工作;
- 平臺(tái)靈活性:NeuronBlocks 可以在 Linux 和 Windows 機(jī)器上運(yùn)行,支持 CPU 和 GPU,也支持像 Philly 和 PAI 這樣的 GPU 管理平臺(tái);
CPU 預(yù)測(cè) Single-GPU 預(yù)測(cè) Multi-GPU 預(yù)測(cè) CPU 訓(xùn)練 ? ? ? Single-GPU 訓(xùn)練 ? ? ? Multi-GPU 訓(xùn)練 ? ? ? - 模型可視化:NeuronBlocks 提供了一個(gè)模型可視化工具,用于觀察模型結(jié)構(gòu)及檢查 JSON 配置的正確性
- 可擴(kuò)展性:NeuronBlocks 鼓勵(lì)用戶貢獻(xiàn)新的神經(jīng)網(wǎng)絡(luò)模塊或者新的模型。
