Запуск сценария SQuAD с использованием ALBERT (huggingface-transformers) - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть вопрос, касающийся использования ALBERT со сценарием huqfaceface-transformers SQuAD 2.0.

На странице github нет конкретных c инструкций по запуску сценария с использованием ALBERT, поэтому Я использовал те же спецификации, что и для запуска скрипта с помощью BERT. Тем не менее, окончательные результаты достигаются (точное_матч = 30,632527583593028, f1 = 36,36948708435092), далеко от (f1 = 88,52, точный_матч = 81,22), которые достигаются BERT и сообщаются на странице GitHub. Поэтому я думаю, что я могу делать что-то не так.

Это код, который я запустил в командной строке:

python run_squad.py \
   --model_type albert \
   --model_name_or_path albert-base-v2 \
   --do_train   --do_eval \
   --train_file train-v2.0.json \
   --predict_file dev-v2.0.json \
   --per_gpu_train_batch_size 5 \
   --learning_rate 3e-5 \
   --num_train_epochs 2.0 \
   --max_seq_length 384 \
   --doc_stride 128 \
   --output_dir /aneves/teste2/output/

Единственное отличие между этим и трансформатором page - это имя модели, в котором они используют 'bert_base_uncased' и per_gpu_train_batch_size, который равен 12, но мне пришлось использовать 5 из-за ограничений памяти в моем GPU.

Я забыл какой-то вариант, когда я запускаю скрипт, или результаты достигаются из-за того, что per_gpu_train_batch_size имеет значение 5 вместо 12?

Спасибо!

1 Ответ

0 голосов
/ 20 апреля 2020

Вы можете использовать шаги накопления градиента, чтобы компенсировать небольшой размер партии. По сути, параметр шага накопления градиента таков:

Допустим, вы хотите, чтобы размер пакета составлял 64, но ваш графический процессор может подходить только для пакета размером 32.

Таким образом, вы делаете два прохода по 32 каждый пакет, накапливать ваши градиенты, а затем сделать обратный проход после 2 партий.

Во-вторых, гиперпараметры играют огромную роль в моделях глубокого обучения. Вам придется попробовать несколько наборов параметров, чтобы получить лучшую точность. Я думаю, что снижение скорости обучения до порядка е-6 может помочь здесь. Хотя это всего лишь предположение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...