温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么使用spaCy v3.0微调BERT变压器

发布时间:2022-02-28 16:31:16 来源:亿速云 阅读:173 作者:iii 栏目:开发技术

这篇文章主要介绍“怎么使用spaCy v3.0微调BERT变压器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用spaCy v3.0微调BERT变压器”文章能帮助大家解决问题。

BERT架构

微调变压器需要具有并行处理功能的强大 GPU。为此,我们使用 Google Colab,因为它提供免费可用的带有 GPU 的服务器

在本教程中,我们将使用新发布的spaCy v3.0 库来微调我们的转换器。以下是有关如何在 spaCy v3.0 上微调 BERT 模型的分步指南。Github repo中提供了代码和必要的文件。

要使用 spaCy v3.0 微调 BERT,我们需要以 spaCy v3.0 JSON 格式(请参阅此处)提供训练和开发数据,然后将其转换为.spacy二进制文件。我们将提供包含在 TSV 文件中的 IOB 格式的数据,然后将其转换为 spaCy JSON 格式。

我只标记了 120 个职位描述,其中包含培训数据集的技能、文凭、文凭专业和经验等实体,以及开发数据集的大约 70 个职位描述。

在本教程中,我使用了UBIAI注释工具,因为它具有广泛的功能,例如:

  • 机器学习自动注释

  • 字典、正则表达式和基于规则的自动注释

  • 团队协作共享注释任务

  • 直接注释导出为 IOB 格式

使用 UBIAI 中的正则表达式功能,我预先注释了所有遵循“\d.*\+.*”模式的经验提及,例如“5 + 年的 C++ 经验”。然后我上传了一个包含所有软件语言的 CSV 字典并分配了实体技能。预注释可以节省大量时间,并将帮助您最大限度地减少手动注释。

有关 UBIAI 注释工具的更多信息,请访问文档页面。

导出的注释将如下所示:

Python:

MS B-DIPLOMA
in O
electrical B-DIPLOMA_MAJOR
engineering I-DIPLOMA_MAJOR
or O
computer B-DIPLOMA_MAJOR
engineering I-DIPLOMA_MAJOR
. O
5+ B-EXPERIENCE
years I-EXPERIENCE
of I-EXPERIENCE
industry I-EXPERIENCE
experience I-EXPERIENCE
. I-EXPERIENCE
Familiar O
with O
storage B-SKILLS
server I-SKILLS
architectures I-SKILLS
with O
HDD B-SKILLS

为了从 IOB 转换为 JSON(请参阅此处的文档),我们使用 spaCy v3.0 命令:

Python:

!python -m spacy convert drive/MyDrive/train_set_bert.tsv ./ -t json -n 1 -c iob
!python -m spacy convert drive/MyDrive/dev_set_bert.tsv ./ -t json -n 1 -c iob

转换为 spaCy v3.0 JSON 后,我们需要.spacy使用此命令将训练和开发 JSON 文件都转换为二进制文件(使用您自己的更新文件路径):

Python:

!python -m spacy convert drive/MyDrive/train_set_bert.json ./ -t spacy!python -m spacy convert drive/MyDrive/dev_set_bert.json ./ -t spacy

模型训练

打开一个新的 Google Colab 项目,并确保在笔记本设置中选择 GPU 作为硬件加速器。

为了加速训练过程,我们需要在 GPU 上运行并行处理。为此,我们安装了 NVIDIA 9.2 CUDA 库:

Python:

!wget https://developer.nvidia.com/compute/cuda/9.2/Prod/local_installers/cuda-repo-ubuntu1604-9-2-local_9.2.88-1_amd64 -O cuda-repo-ubuntu1604–9–2-local_9.2.88–1_amd64.deb!dpkg -i cuda-repo-ubuntu1604–9–2-local_9.2.88–1_amd64.deb!apt-key add /var/cuda-repo-9–2-local/7fa2af80.pub!apt-get update!apt-get install cuda-9.2

要检查是否安装了正确的 CUDA 编译器,请运行: !nvcc --version

安装 spacy 库和 spacy 转换器管道:

Python:

pip install -U spacy
!python -m spacy download en_core_web_trf

接下来,我们安装为 CUDA 9.2 配置的 PyTorch 机器学习库:

Python:

pip install torch==1.7.1+cu92 torchvision==0.8.2+cu92 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

安装 PyTorch 后,我们需要安装针对 CUDA 9.2 调整的 spaCy 转换器并更改CUDA_PATH和LD_LIBRARY_PATH如下。最后,安装 CuPy 库,它相当于 NumPy 库,但适用于 GPU:

Python:

!pip install -U spacy[cuda92,transformers]
!export CUDA_PATH=”/usr/local/cuda-9.2"
!export LD_LIBRARY_PATH=$CUDA_PATH/lib64:$LD_LIBRARY_PATH
!pip install cupy

SpaCy v3.0 使用config.cfg包含所有模型训练组件的配置文件来训练模型。在spaCy 训练页面,您可以选择模型语言(本教程中为英文)、组件(NER)和硬件(GPU)使用并下载配置文件模板。

我们唯一需要做的就是填写 train 和 dev.spacy文件的路径。完成后,我们将文件上传到 Google Colab。

现在我们需要使用 BERT 模型所需的其余参数自动填充配置文件;你所要做的就是运行这个命令:

Python:

!python -m spacy init fill-config drive/MyDrive/config.cfg drive/MyDrive/config_spacy.cfg

如果出现错误,我建议调试您的配置文件:

Python:

!python -m spacy debug data drive/MyDrive/config.cfg

我们终于准备好训练 BERT 模型了!只需运行此命令即可开始训练:

Python:

!python -m spacy train -g 0 drive/MyDrive/config.cfg — output ./

注意:如果出现错误,cupy_backends.cuda.api.driver.CUDADriverError: CUDA_ERROR_INVALID_PTX:则表示 PTX JIT 编译失败。只需卸载cupy并重新安装它,它应该可以解决问题。

如果一切顺利,您应该开始看到模型得分和损失正在更新。

在训练结束时,模型将保存在文件夹下model-best。模型分数位于meta.json文件model-best夹内的文件中:

Python:

“performance”:{“ents_per_type”:{“DIPLOMA”:{“p”:0.5584415584,“r”:0.6417910448,“f”:0.5972222222},“SKILLS”:{“p”:0.6796805679,“r”:0.6742957746,“f”:0.6769774635},“DIPLOMA_MAJOR”:{“p”:0.8666666667,“r”:0.7844827586,“f”:0.8235294118},“EXPERIENCE”:{“p”:0.4831460674,“r”:0.3233082707,“f”:0.3873873874}},“ents_f”:0.661754386,“ents_p”:0.6745350501,“ents_r”:0.6494490358,“transformer_loss”:1408.9692438675,“ner_loss”:1269.1254348834}

由于训练数据集有限,这些分数肯定远低于生产模型水平,但值得在示例工作描述中检查其性能。

使用 Transformer 提取实体

要在示例文本上测试模型,我们需要加载模型并在我们的文本上运行它:

Python:

nlp = spacy.load(“./model-best”)
text = ['''Qualifications- A thorough understanding of C# and .NET Core- Knowledge of good database design and usage- An understanding of NoSQL principles- Excellent problem solving and critical thinking skills- Curious about new technologies- Experience building cloud hosted, scalable web services- Azure experience is a plusRequirements- Bachelor's degree in Computer Science or related field(Equivalent experience can substitute for earned educational qualifications)- Minimum 4 years experience with C# and .NET- Minimum 4 years overall experience in developing commercial software''']for doc in nlp.pipe(text, disable=["tagger", "parser"]):    print([(ent.text, ent.label_) for ent in doc.ents])

仅使用 120 个培训文档就令人印象深刻!我们能够正确提取大部分技能、文凭、文凭专业和经验。

随着更多的训练数据,模型肯定会进一步改进并产生更高的分数。

关于“怎么使用spaCy v3.0微调BERT变压器”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI