# neuronblocks
**Repository Path**: mirrors/neuronblocks
## Basic Information
- **Project Name**: neuronblocks
- **Description**: NeuronBlocks:像搭积木一样构建自然语言理解深度学习模型 中文教程 概览 NeuronBlocks 是一个模块化 NLP 深度学习建模工具包,可以帮助工程师/研究者们快速
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2019-06-19
- **Last Updated**: 2026-01-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 像搭积木一样构建自然语言理解深度学习模型
[](#language-supported)
[](https://www.python.org)
[](https://pytorch.org)
[](https://opensource.org/licenses/MIT)
[English version](README.md)
[中文教程](Tutorial_zh_CN.md) [Tutorial](Tutorial.md) [Demo Video](https://youtu.be/x6cOpVSZcdo)
# 目录
* [概览](#概览)
* [快速入门](#快速入门)
* [适用人群](#适用人群)
* [参与贡献](#参与贡献)
* [参考文献](#参考文献)
* [相关项目](#相关项目)
* [开源许可](#开源许可)
* [联系我们](#联系我们)
# 概览
NeuronBlocks是一个模块化NLP深度学习建模工具包,可以帮助工程师/研究者们快速构建NLP任务的神经网络模型。
该工具包的主要目标是将NLP中深度神经网络模型构建的开发成本降到最低,包括训练阶段和推断阶段。
NeuronBlocks包括 ***Block Zoo*** 和 ***Model Zoo*** 两个重要组件,其整体框架如下图所示。
- 在 ***Block Zoo*** 中, 我们提供了常用的神经网络组件作为模型架构设计的构建模块。
- 在 ***Model Zoo*** 中, 我们提供了 **JSON配置文件** 形式的一系列经典NLP深度学习模型。
### 支持的语言
- English
- 中文
### 支持的NLP任务
- 句子分类
- 情感分析
- 问答匹配
- 文本蕴含
- 序列标注
- 阅读理解
- 基于知识蒸馏的模型压缩
- 更多……
### 使用方法
用户可以选择 *Model Zoo* 中的示例模型(JSON配置文件)开启模型训练,或者利用 *Block Zoo* 中的神经网络模块构建新的模型,就像玩乐高积木一样。
# 快速入门
## 安装
*注: NeuronBlocks支持 **Python 3.6**及以上*
1. Clone本项目:
```bash
git clone https://github.com/Microsoft/NeuronBlocks
```
2. 安装Python依赖包:
```bash
pip install -r requirements.txt
```
3. 安装PyTorch ( *NeuronBlocks支持 **PyTorch 0.4.1** 及以上*):
对于 **Linux** ,运行以下命令:
```bash
pip install "torch>=0.4.1"
```
对于 **Windows** ,建议按照[PyTorch官方安装教程](https://pytorch.org/get-started/locally/)通过Conda安装PyTorch。
## 快速开始
通过以下示例快速入门NeuronBlocks。对于Windows,建议使用PowerShell工具运行命令。
*提示: 在下文中, PROJECTROOT表示本项目的根目录。*
```bash
# 训练
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 提供了两种预测的形式: **交互式**和**批量式**。
- *交互式:* 交互式模式预测提供了交互界面,用户可以根据输入提示信息每次输入一个样本并实时得到模型前向计算出的结果,输入 "exit" 时退出交互预测模式。
```bash
# use the above example
# interactive prediction
python predict.py --conf_path=model_zoo/demo/conf.json --predict_mode='interactive'
```
- *批量式:* 对于批量样本预测的需求,NeuronBlocks 提供批量预测模式,其接受一个包含批量样本的文件作为输入,并且将模型前向计算的结果写回这个文件。
```bash
# use the above example
# batch prediction
python predict.py --conf_path=model_zoo/demo/conf.json --predict_mode='batch' --predict_data_path=dataset/demo/predict.tsv
```
更多细节, 请查看[Tutorial_zh_CN.md](Tutorial_zh_CN.md) 和 [Code documentation](https://microsoft.github.io/NeuronBlocks/)。
# 适用人群
使用用神经网络模型解决NLP任务时面临以下挑战的工程师和研究者们:
+ 很多框架可以选择,且框架学习成本高;
+ 繁重的编程工作,大量细节使其难以调试;
+ 快速迭代的模型架构,使工程师们很难完全理解其背后的数学原理;
+ 模型代码优化需要深厚的专业知识;
+ 平台兼容性要求,需要额外的编程工作才能使模型运行在不同的平台上,如Linux/Windows, GPU/CPU。
利用NeuronBlocks进行NLP神经网络模型训练的优势包括:
- ***模型构建***:用户只需要配置简单的JSON文件,就能够构建模型和调整参数,大大减少了模型实现的工作量;
- ***模型分享***:可以通过分享JSON配置文件来分享模型,使模型共享变得非常容易。对于不同的任务或模型,用户只需维护一个通用的源码库;
- ***代码重用***:可以在各任务与模型间共享神经网络模块,减少重复的编程工作;
- ***平台灵活性***:NeuronBlocks可以在Linux和Windows机器上运行,支持CPU和GPU,也支持像Philly和PAI这样的GPU管理平台;
| CPU 预测 | Single-GPU 预测 | Multi-GPU 预测 | |
| CPU 训练 | ✓ | ✓ | ✓ |
| Single-GPU 训练 | ✓ | ✓ | ✓ |
| Multi-GPU 训练 | ✓ | ✓ | ✓ |
