Treinando o modelo de idioma do transformador GPT-2 em sua própria corpora com tokenização de peças de sentença.
Este repositório contém uma implementação Pytorch do GPT-2, que suporta treinamento multi-GPU. Ele também contém uma implementação do TensorFlow em lm/gpt_2_tf , mas não é mais desenvolvido. Eles compartilham os mesmos scripts de preparação de dados. O comando TF Training é gpt-2-tf-train e precisa de Tensorflow 1.13. A documentação abaixo é para a versão pytorch.
Conteúdo
O Python 3.6+ é necessário com a tocha noturna ou 1.6.0+. Trabalhar em um virtualENV é assumido abaixo. Instale a versão apropriada do Pytorch primeiro e depois:
pip install -r requisitos.txt python setup.py desenvolver
As instruções estão abaixo. Consulte também test/test_shakespeare.sh para uma demonstração completa do pipeline em um pequeno corpus (leva um minuto em uma CPU).
Formato corpus: um diretório com train de nível superior, pastas valid e test . Cada pasta de nível superior pode conter sub-dobras. Dentro deles, deve haver arquivos de texto codificados UTF-8 com extensão .txt .
Os comandos para treinar o modelo de peça de sentença e codificar o corpus suportam vários corpora, em exemplos abaixo, assumimos que eles podem ser listados como data/corpora-* .
O modelo de peça de frase de trem ( sp-text.txt pode ser removido após a execução). Isso pode consumir uma grande quantidade de memória, ajustar os argumentos da peça de sentença conforme recomendado, se necessário (isso não é suportado diretamente no comando sp-train ):
Dados SP-Train/Corpora-* SP-Text.txt SP-Model
Encode corpora, produzindo arquivos Numpy:
Dados de codificação SP/corpora-* sp-model.model dados/codificados
Exemplo de comando:
GPT-2 RON-ROOT DATA/SP-MODEL.MODEL codificado
run-root conteria pontos de verificação do modelo e logs JSON-Lines, que podem ser plotados em um notebook Jupyter com json_log_plots.plot("run-root") , com o número de tokens vistos no eixo X.
Os hiperparâmetros padrão correspondem ao modelo GPT-2 "pequeno" liberado.
Quando várias GPUs estiverem disponíveis, elas seriam usadas para treinamento com a ajuda da torch.distributed .
Se o caminho existir e --clean -Chave não for aprovada, o treinamento será retomado. Observe que todos os parâmetros ainda precisam ser especificados e os parâmetros do modelo precisam corresponder.
Notas sobre parâmetros de treinamento:
--batch-size é por GPU, para que você não precise recuperá-lo novamente ao alterar o número de GPUs, basta usar o Max que se encaixa na memória.--g-accum-gradients é o número global de acumulações de gradiente, ele deve ser divisível pelo número de GPUs. O tamanho eficaz do lote global é sempre batch_size * g_accum_gradients .--lr não precisa ser alterado ao alterar --batch-size ou --g-accum-gradients ou número de GPUs ou --n-ctx : A perda já está escalada adequadamente.Exemplo de comando:
ROOT GPT-2-GEN RUN-ROOT "Inteligência Artificial"
run-root conteria pontos de verificação do modelo "Artificial intelligence" é o prefixo de texto usado como ponto de partida para gerar tokens
Notas sobre parâmetros de inferência:
--tokens-to-generate : Número de tokens para gerar, o padrão é 42--top-k : número de candidatos a token a gerar para cada posição (largura do feixe), o padrão é 8. A licença é MIT.
O modelo TensorFlow GPT-2 é retirado de https://github.com/openai/gpt-2/blob/master/src/model.py e código de treinamento Tensorflow GPT-2 é baseado em https://github.com/nshepperd/gpt-2/blob/finetuNing/trainpy.com/nshepperd/gpt-2/blob/finetuNing/trainpy.com/nshepperd/gpt-2/blob/finetuNing/trainpy.com
A porta Pytorch é baseada no código do OpenAI original.
Teste Shakespeare Corpus sob tests/shakespeare é de http://shakespeare.mit.edu em domínio público.
Veja também OpenAI GPT-2 Papel e blog.