Dans notre formation mise en scène en document pour les modèles de langue des transformateurs , nous proposons une configuration de formation mise en scène qui commence par un petit modèle et augmente progressivement la quantité de calcul utilisé pour la formation en appliquant un "opérateur de croissance" pour augmenter la profondeur et la largeur du modèle. En initialisant chaque étape avec la sortie de la précédente, le processus de formation réutilise efficacement le calcul à partir des étapes antérieures et devient plus efficace.
Nous libérons le code reproductible pour l'opérateur de croissance et les scripts d'évaluation ici.
Les scripts de ce référentiel nécessitent Python 3.7 ou plus récent. Une fois que vous avez un environnement Python approprié, installez d'abord Pytorch v1.9.0 selon les instructions officielles. Puis courez
pip install -r requirements.txt
Nos opérateurs de croissance (largeur / profondeur) prennent chacun en entrée dans l'ensemble de l'état de formation (y compris les paramètres du modèle, l'état d'optimiseur, le calendrier des taux d'apprentissage, etc.) et produisent un nouvel état de formation à partir duquel la formation se poursuit.
Veuillez consulter les scripts/cheatsheet.txt pour plus d'exemples sur la façon d'utiliser les scripts correspondants.
Par exemple, vous pouvez appliquer l'opérateur de largeur avec:
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
Ou l'opérateur de profondeur avec:
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
Utilisez evaluation/eval_wikitext.py ou evaluation/eval_lambada.py pour évaluer GPT-2 sur l'un des ensembles de données pris en charge. Par exemple:
python evaluation/eval_wikitext.pyOu en utilisant Docker:
docker build -t evaluation:latest .
docker run --rm --gpus all evaluation:latest evaluation/eval_wikitext.pySi vous utilisez une formation mise en scène dans vos recherches ou si vous souhaitez vous référer aux résultats de référence publiés ici, veuillez utiliser l'entrée Bibtex suivante.
@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}
}