في تدريبنا على الورق على نماذج لغة المحولات ، نقترح إعداد تدريب مرحاة يبدأ بنموذج صغير ويزيد بشكل تدريجي من مقدار الحساب المستخدم للتدريب من خلال تطبيق "مشغل النمو" لزيادة عمق النموذج وعرضه. من خلال تهيئة كل مرحلة مع إخراج المرحلة السابقة ، تعيد عملية التدريب بشكل فعال استخدام الحساب من المراحل السابقة وتصبح أكثر كفاءة.
نقوم بإصدار الكود القابل للتكرار لمشغل النمو والبرامج النصية للتقييم هنا.
تتطلب البرامج النصية في هذا المستودع 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}
}