5

目标是以python -m spacy trainFP16 混合精度运行,以便在有限的 VRAM (RTX 2080ti 11 GB) 中使用大型变压器(roberta-large、、albert-large等)。

新的 Spacy3 project.yml训练方法直接使用通过Spacy-transformers v1.0加载的Huggingface-transformers 模型。只需添加标志(如此处所述) ,Huggingface 模型就可以混合精度运行。--fp16

spacy 配置是使用 生成的python -m spacy init config --lang en --pipeline ner --optimize efficiency --gpu -F default.cfg,并由python -m spacy init fill-config default.cfg config.cfg --diff. 但是找不到 FP16 / 混合精度。

重现

使用spaCy 项目:命名实体识别 (WikiNER)并更改init-configproject.yml使用 GPU 和转换器(roberta-base默认情况下):

commands:
  -
    name: init-config
    help: "Generate a transformer English NER config"
    script:
      - "python -m spacy init config --lang en --pipeline ner --gpu -F --optimize efficiency -C configs/${vars.config}.cfg"

测试了什么

  • 添加--fp16python -m spacy project run
  • 添加--fp16python -m spacy train
  • 添加fp16 = truedefault.cfg各个部分 ( [components.transformer], [components.transformer.model], [training], [initialize])

逻辑transformers在 FP16 中运行,如下所示:

from transformers import TrainingArguments
TrainingArguments(..., fp16=True, ...)

软件堆栈细节

 - spacy              3.0.3
 - spacy-transformers 1.0.1
 - transformers       4.2.2
 - torch              1.6.0+cu101
4

0 回答 0