Em nosso treinamento , treinamento encenado para modelos de linguagem de transformadores , propomos uma configuração de treinamento encenada que começa com um modelo pequeno e aumenta incrementalmente a quantidade de computação usada para o treinamento aplicando um "operador de crescimento" para aumentar a profundidade e a largura do modelo. Ao inicializar cada estágio com a saída do anterior, o processo de treinamento reutiliza efetivamente a computação de estágios anteriores e se torna mais eficiente.
Lançamos o código reproduzível para o operador de crescimento e os scripts de avaliação aqui.
Os scripts neste repositório requerem o Python 3.7 ou mais recente. Depois de ter um ambiente Python adequado, primeiro instale o Pytorch v1.9.0 de acordo com as instruções oficiais. Em seguida, corra
pip install -r requirements.txt
Nossos operadores de crescimento (largura/profundidade) tomam como entrada todo o estado de treinamento (incluindo parâmetros do modelo, estado de otimizador, cronograma da taxa de aprendizado etc.) e a produção de um novo estado de treinamento do qual o treinamento continua.
Consulte o scripts/cheatsheet.txt para obter mais exemplos sobre como usar os scripts correspondentes.
Por exemplo, você pode aplicar o operador de largura com:
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 o operador de profundidade com:
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 ou evaluation/eval_lambada.py para avaliar o GPT-2 em um dos conjuntos de dados suportados. Por exemplo:
python evaluation/eval_wikitext.pyOu usando o Docker:
docker build -t evaluation:latest .
docker run --rm --gpus all evaluation:latest evaluation/eval_wikitext.pySe você usa treinamento em fase em sua pesquisa ou deseja consultar os resultados da linha de base publicados aqui, use a seguinte entrada do 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}
}