查看原文
其他

微软开源项目NeuronBlocks - 像搭积木一样构建NLP深度学习模型

STCA NLP Group PaperWeekly 2019-12-18


在构建自然语言理解深度学习模型过程中,研究人员或者工程师们经常需要在编程细节和代码调试上花费大量精力,而不是专注于模型架构设计与参数调整。为了提升构建深度模型的效率,微软亚洲互联网工程院自然语言理解团队 (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




点击以下标题查看更多往期内容: 




#投 稿 通 道#

 让你的论文被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。


📝 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志


📬 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site 

• 所有文章配图,请单独在附件中发送 

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通




🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧



关于PaperWeekly


PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。


▽ 点击 | 阅读原文 | 获取最新论文推荐

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存