Как обучить проект Spacy3 со смешанной точностью FP16

Цель состоит в том, чтобы работать со смешанной точностью FP16, чтобы можно было использовать большие трансформаторы ( roberta-large, albert-largeи т. д.) в ограниченной VRAM (RTX 2080ti 11 ГБ).

Новый подход Spacy3 project.yml к обучению напрямую использует модели Huggingface-transformers, загруженные через Spacy-transformers v1.0. Модели Huggingface можно запускать со смешанной точностью, просто добавив флаг ( как описано здесь ).

Просторная конфигурация была создана с использованием 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-config в project.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"

Что было проверено

  • Добавлено в python -m spacy project run
  • Добавлен --fp16 к python -m spacy train
  • Добавлен fp16 = true к default.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

0 ответов

Другие вопросы по тегам