En nuestro documento , la capacitación en organización de modelos de lenguaje de transformadores , proponemos una configuración de entrenamiento en etapas que comienza con un modelo pequeño y aumenta incrementalmente la cantidad de cómputo utilizado para la capacitación mediante la aplicación de un "operador de crecimiento" para aumentar la profundidad y el ancho del modelo. Al inicializar cada etapa con la salida del anterior, el proceso de entrenamiento reutiliza efectivamente el cálculo de las etapas anteriores y se vuelve más eficiente.
Lanzamos el código reproducible para el operador de crecimiento y los scripts de evaluación aquí.
Los scripts en este repositorio requieren Python 3.7 o más nuevo. Una vez que tenga un entorno de Python adecuado, primero instale Pytorch V1.9.0 según las instrucciones oficiales. Luego corre
pip install -r requirements.txt
Nuestros operadores de crecimiento (ancho/profundidad) toman cada uno como entrada todo el estado de capacitación (incluidos los parámetros del modelo, el estado del optimizador, el horario de tarifas de aprendizaje, etc.) y emiten un nuevo estado de capacitación desde el cual continúa la capacitación.
Consulte los scripts/cheatsheet.txt para obtener más ejemplos sobre cómo usar los scripts correspondientes.
Por ejemplo, puede aplicar el operador de ancho con:
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
O el operador de profundidad con:
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
Use evaluation/eval_wikitext.py o evaluation/eval_lambada.py para evaluar GPT-2 en uno de los conjuntos de datos compatibles. Por ejemplo:
python evaluation/eval_wikitext.pyO usando Docker:
docker build -t evaluation:latest .
docker run --rm --gpus all evaluation:latest evaluation/eval_wikitext.pySi utiliza capacitación escenificada en su investigación o desea consultar los resultados de referencia publicados aquí, utilice la siguiente entrada de 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}
}