该仓库包含使用Azure机器学习服务的BERT(来自Transformers的双向编码器)语言表示模型的端到端配方。
更新于2020年7月7日:?在https://github.com/microsoft/onnxruntime-training-examples/tree/master/master/master/master/nvidia-bert上,可用于BERT预审计的最新实施速度要快于本仓库中的实现。该实现使用ONNX运行时来加速培训,并且可以在包括Azure机器学习服务在内的GPU环境中使用。有关使用ONNX运行时进行培训和加速培训诸如BERT和GPT-2之类的培训的详细信息,请访问ONNX运行时培训技术深水潜水。
伯特(Bert)是一种语言表示模型,其具有有效捕获语料库中深层和微妙的文本关系的能力而具有特色。在原始论文中,作者证明了BERT模型可以很容易地适应用于为许多NLP任务(包括文本分类,命名实体识别和问题答案)构建最新模型。在此存储库中,我们提供笔记本电脑,使开发人员可以从scratch上的BERT模型在语料库中预算模型,并可以微调现有的BERT模型以解决专业任务。在此存储库中提供了BERT的简要介绍,以便快速启动Bert。
将BERT语言表示模型预处理到所需的准确性水平非常具有挑战性。结果,大多数开发人员始于在标准语料库(例如Wikipedia)中预先训练的BERT模型,而不是从头开始训练它。如果对最终模型进行了类似于培训步骤中使用的语料库的语料库的培训,则此策略效果很好;但是,如果问题涉及与标准语料库完全不同的专业语料库,则结果将不会是最佳的。此外,要超越伯特的准确性,用户将需要更改模型架构,培训数据,成本功能,任务和优化程序。所有这些更改都需要以大参数和培训数据大小进行探索。就Bert-large而言,这可能是相当大的,因为它具有3.4亿个参数,并在非常大的文档语料库中进行了培训。为了通过GPU进行支持,机器学习工程师将需要分布式培训支持来培训这些大型模型。但是,由于配置这些分布式环境的复杂性和脆弱性,即使是专家的调整也可能以受过训练的模型的劣势结果。
为了解决这些问题,此仓库正在发布用于预处理伯特大型模型的工作流程。现在,开发人员可以使用自己的硬件或使用Azure Machine Learning Service在GPU上使用特定于GPU的域数据来构建自己的语言表示模型。此存储库中的预处理配方包括数据集和预处理脚本,因此任何人都可以尝试建立自己的通用语言表示模型以外。总体而言,这是一个稳定的可预测的食谱,可以使研究人员自行尝试探索的良好最佳选择。
此存储库中的预处理食谱是基于pytorch预处理的bert v0.6.2包装的包装,这些包裹来自拥抱的脸。此预处理配方中的实现包括优化技术,例如gradient accumulation (在更新模型权重之前,累积了较小的迷你批次)和mixed precision training 。预处理的笔记本和Python模块可在Pretrain Directory上找到。
数据准备是任何机器学习项目的重要步骤之一。对于BERT进行预训练,需要文档级语料库。用于预处理的数据质量直接影响训练有素的模型的质量。为了使数据预处理更加容易,为结果重复性,存储库中包含数据预处理代码。它可用于预处理程序或其他数据集预处理。有关此详细信息的详细信息,请参阅数据准备中的其他信息。
此存储库中的Finetuning食谱显示了如何使用Azure机器学习服务对BERT语言表示模型进行修订。 Finetune目录可在Finetune目录中获得用于固定的笔记本电脑和Python模块。我们对以下内容进行了挑剔和评估我们的验证检查点:
一般语言理解评估(GLUE)基准是九个句子或句子的语言理解任务,用于评估和分析自然语言理解系统。 bert_eval_glue.ipynb jupyter笔记本允许用户在Azure ML上针对这些任务运行一个验证的检查点。
Azure机器学习服务提供了一个基于云的环境,以准备数据,训练,测试,部署,管理和跟踪机器学习模型。该服务完全支持开源技术,例如Pytorch,Tensorflow和Scikit-Learn,可用于从经典ML到深度学习,监督和无监督的学习。
Jupyter笔记本可以用于使用Azureml Python SDK并提交前进和Finetune Jobs。此存储库包含以下不同活动的笔记本。
| 活动 | 笔记本 |
|---|---|
| 预认证 | bert_pretrain.ipynb |
| 胶合芬/评估 | bert_eval_glue.ipynb |
| 活动 | 笔记本 |
|---|---|
| 胶合芬/评估 | tensorflow-bert-azureml.ipynb |
该项目采用了Microsoft开源的行为代码。有关更多信息,请参见《行为守则常见问题守则》或与其他问题或评论联系[email protected]。