概览
NeuronBlocks是一个NLP深度学习建模工具包,可帮助工程师构建用于NLP任务的神经网络模型训练的端到端管道。该工具包的主要目标是将NLP深度神经网络模型构建的开发成本降到最低,包括训练阶段和推理阶段。有关详细信息,请查看我们的论文:NeuronBlocks -- Building Your NLP DNN Models Like Playing Lego
Github项目地址:
https://github.com/Microsoft/NeuronBlock
NeuronBlocks由两个主要组件组成:Block Zoo和Model Zoo。
在Block Zoo中,我们提供常用的神经网络组件作为模型架构设计的构建块。
在Model Zoo中,我们以JSON配置文件的形式为常见的NLP任务提供了一套NLP模型。
工具包用法
用户可以选择Model Zoo中的现有模型(配置文件)来开始模型训练,或者通过利用Block Zoo中的神经网络块创建新模型,就像玩乐高积木一样。
支持NLP任务
- 句子分类
- 问答匹配
- 文本含义
- 插槽标记
- 机器阅读理解
- 更多任务正在开发中
NeuronBlocks的推荐使用人群
使用神经网络模型解决NLP问题时面临以下挑战的工程师或研究人员:
- 框架选择多,研究成本高。
- 编码成本高。大量的细节使得调试非常困难。
- 快速模型架构演变。工程师很难理解他们背后的数学原理。
- 模型代码优化需要深厚的专业知识。
- 模型平台兼容性要求。它需要额外的编码工作才能使模型在不同的平台上运行,例如Linux / Windows,GPU / CPU。
利用NeuronBlocks进行NLP神经网络模型训练的优势包括:
- 模型构建:对于模型构建和参数调整,用户只需编写简单的JSON配置文件,这大大减少了实现新思想的工作量。
- 模型共享:通过JSON文件可以非常容易地进行模型共享模型,而非讨厌的代码。对于不同的模型或任务,我们的用户只需要维护一个集中的源代码库。
- 代码可重用性:可以在各种模型或任务之间轻松共享公共代码块,从而减少重复编码工作。
- 平台灵活性:NeuronBlocks可以在Linux和Windows机器上运行,同时使用CPU和GPU。它还支持像Philly和PAI这样的GPU平台上的培训。
- 模型可视化:提供了一个模型可视化器,用于可视化和配置正确性检查,帮助用户在调试过程中轻松地查看可视化模型架构。
- 可扩展性:NeuronBlocks是可扩展的,允许用户贡献新块或贡献新模型(JSON文件)。
NeuronBlocks入门
请查看 Tutorial.md 和 代码文档 。
贡献
NeuronBlocks在开放模型中运行。它由微软的STCA NLP Group设计和开发。我们亦欢迎学术界及业界人士作出贡献。有关更多的详细信息,请查看Contributing.md 。
正在进行的工作
- 模型压缩的知识提炼。重型模型的知识提炼,如BERT,OpenAI Transformer。基于师生的知识提炼是模型压缩的常用方法。
- 多语言支持
- NER模型支持
- 多任务培训支持
参考文献
论文:NeuronBlocks -- Building Your NLP DNN Models Like Playing Lego
https://arxiv.org/abs/1904.09535.
相关项目
OpenPAI是一个开源平台,可提供完整的AI模型培训和资源管理功能,可以轻松扩展和支持各种规模的内部部署、云和混合环境。
AI样本:深度学习样本和项目集合。它包含了许多经典的深度学习算法和具有不同框架的应用程序,这对于开始深度学习的初学者来说是一个很好的入门工具。