In unserem in Papier inszenierten Training für Transformatorsprachmodelle schlagen wir ein inszeniertes Trainingsaufbau vor, das mit einem kleinen Modell beginnt und die für das Training verwendete Berechnung durch Anwendung eines "Wachstumsbetreibers", um die Modelltiefe und -breite anzuwenden, schrittweise erhöht. Durch die Initialisierung jeder Stufe mit der Ausgabe des vorherigen wird der Trainingsprozess den Berechnung aus früheren Stadien effektiv wiederverwendet und effizienter.
Wir geben den reproduzierbaren Code für den Wachstumsoperator und die Bewertungsskripte hier frei.
Die Skripte in diesem Repository erfordern Python 3.7 oder neuer. Sobald Sie eine geeignete Python -Umgebung haben, installieren Sie zuerst Pytorch v1.9.0 gemäß den offiziellen Anweisungen. Dann rennen
pip install -r requirements.txt
Unsere Wachstumsbetreiber (Breite/Tiefe) geben jeweils den gesamten Trainingszustand (einschließlich Modellparameter, Optimiererzustand, Lernrateplan usw.) und geben einen neuen Trainingszustand aus, aus dem die Schulung fortgesetzt wird.
Weitere Beispiele zur Verwendung der entsprechenden Skripte finden Sie in den scripts/cheatsheet.txt .
Beispielsweise können Sie den Breitenoperator mit:
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
Oder der Tiefenbetreiber mit:
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
Verwenden Sie evaluation/eval_wikitext.py oder evaluation/eval_lambada.py um GPT-2 auf einem der unterstützten Datensätze zu bewerten. Zum Beispiel:
python evaluation/eval_wikitext.pyOder mit Docker:
docker build -t evaluation:latest .
docker run --rm --gpus all evaluation:latest evaluation/eval_wikitext.pyWenn Sie ein inszeniertes Training in Ihrer Forschung verwenden oder sich auf die hier veröffentlichten Basisergebnisse beziehen möchten, verwenden Sie bitte den folgenden Bibtex -Eintrag.
@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}
}