В нашей статье в статье для моделей языка трансформатора мы предлагаем поэтапную обучающую установку, которая начинается с небольшой модели и постепенно увеличивает объем вычислительных средств, используемых для обучения, применяя «оператора роста» для увеличения глубины и ширины модели. Инициализируя каждый этап с выводом предыдущего, учебный процесс эффективно повторно использует вычисление с предыдущих этапов и становится более эффективным.
Мы выпускаем воспроизводимый код для оператора роста и сценариев оценки здесь.
Сценарии в этом репозитории требуют Python 3.7 или новее. Как только у вас есть подходящая среда Python, сначала установите Pytorch v1.9.0 в соответствии с официальными инструкциями. Затем беги
pip install -r requirements.txt
Наши операторы роста (ширина/глубина) каждый вводит в качестве ввода всего состояния обучения (включая параметры модели, состояние оптимизатора, график скорости обучения и т. Д.) И выводят новое состояние обучения, из которого продолжается обучение.
Пожалуйста, смотрите scripts/cheatsheet.txt для получения дополнительных примеров, как использовать соответствующие сценарии.
Например, вы можете применить оператор ширины с помощью:
CUDA_VISIBLE_DEVICES=0,1,2,3 python scripts/gpt_pretrain.py
--save_prefix final_gpt2_large_div2_width_check_bs512_lr0.0020_warmup3k_seqlen1024_debug
--gpu_count -1
--model gpt2
--tokenizer gpt2
--batch_size 4
--grad_accum 32
--lr 0.002006911598778545
--warmup_steps 3000
--train_steps 250000
--val_every 50
--val_batches 50
--fp16
--seqlen 1024
--log_rate 10
--num_workers 4
--size GPT2_large_div2_width
--random
--resume final_runs/final_gpt2_large_div2_width_check_bs512_lr0.0021_warmup3k_seqlen1024_debug/checkpoint-xxx.ckpt
--doubling weights
Или оператор глубины с:
CUDA_VISIBLE_DEVICES=0,1,2,3 python scripts/gpt_pretrain.py
--save_prefix final_gpt2_large_div2_depthx2_check_bs512_lr0.0020_warmup3k_seqlen1024_debug
--gpu_count -1
--model gpt2
--tokenizer gpt2
--batch_size 4
--grad_accum 32
--lr 0.002006911598778545
--warmup_steps 3000
--train_steps 250000
--val_every 50
--val_batches 50
--fp16
--seqlen 1024
--log_rate 10
--num_workers 4
--size GPT2_large_div2_depth
--random
--resume final_runs/final_gpt2_large_div2_depth_check_bs512_lr0.0020_warmup3k_seqlen1024_debug/checkpoint-epoch=0-step=6499.ckpt
--doubling layers
Используйте evaluation/eval_wikitext.py или evaluation/eval_lambada.py чтобы оценить GPT-2 на одном из поддерживаемых наборов данных. Например:
python evaluation/eval_wikitext.pyИли с помощью Docker:
docker build -t evaluation:latest .
docker run --rm --gpus all evaluation:latest evaluation/eval_wikitext.pyЕсли вы используете поэтапное обучение в своем исследовании или хотите ссылаться на базовые результаты, опубликованные здесь, используйте следующую запись Bibtex.
@misc{shen2022staged,
title={Staged Training for Transformer Language Models},
author={Sheng Shen and Pete Walsh and Kurt Keutzer and Jesse Dodge and Matthew Peters and Iz Beltagy},
year={2022},
eprint={2203.06211},
archivePrefix={arXiv},
primaryClass={cs.CL}
}