Wrapper fácil de usar para modelos de transformador GPT-2 124m, 345m, 774m e 1.5b
O que é • Instalação • Introdução
Feito por Rishabh Anand • https://rish-16.github.io
O GPT-2 é um modelo de processamento de linguagem natural desenvolvido pelo OpenAI para geração de texto. É o sucessor do modelo GPT (transformador pré-treinado generativo) treinado em 40 GB de texto da Internet. Possui um modelo de transformador que foi trazido à luz pela atenção é tudo o que você precisa de papel em 2017. O modelo possui 4 versões - 124M
, 345M
, 774M
e 1558M
- que diferem nos termos da quantidade de dados de treinamento alimentados a ele e o número de parâmetros que eles contêm.
O modelo 1.5B é atualmente o maior modelo disponível lançado pelo OpenAI.
Finalmente, gpt2-client
é um invólucro em torno do repositório gpt-2
original que apresenta a mesma funcionalidade, mas com mais acesso, compreensibilidade e utilização. Você pode brincar com todos os quatro modelos GPT-2 em menos de cinco linhas de código.
*Nota : este invólucro do cliente não é de forma alguma responsável por qualquer dano causado direta ou indiretamente. Quaisquer nomes, lugares e objetos mencionados pelo modelo são fictícios e não procuram semelhança com as entidades ou organizações da vida real. As amostras não são filtradas e podem conter conteúdo ofensivo. Discrição do usuário aconselhada.*
Instale o cliente via pip
. Idealmente, gpt2-client
é bem suportado para python> = 3.5 e tensorflow> = 1.x. Algumas bibliotecas podem precisar ser reinstaladas ou atualizadas usando o sinalizador --upgrade
via pip
se Python 2.x for usado.
pip install gpt2-client
NOTA:
gpt2-client
não é compatível com o TensorFlow 2.0, tente o TensorFlow 1.14.0
1. Faça o download dos pesos e pontos de verificação do modelo
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`. Rename `save_dir` to anything.
gpt2 . load_model ( force_download = False ) # Use cached versions if available.
Isso cria um diretório chamado models
no diretório de trabalho atual e baixa os pesos, pontos de verificação, modelo JSON e hiper-parâmetros exigidos pelo modelo. Depois de chamar a função load_model()
, você não precisa chamá -la novamente, assumindo que os arquivos terminam de baixar no diretório models
.
Nota: set
force_download=True
para substituir os pesos e pontos de verificação do modelo em cache existentes
2. Comece a gerar texto!
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`
gpt2 . load_model ()
gpt2 . generate ( interactive = True ) # Asks user for prompt
gpt2 . generate ( n_samples = 4 ) # Generates 4 pieces of text
text = gpt2 . generate ( return_text = True ) # Generates text and returns it in an array
gpt2 . generate ( interactive = True , n_samples = 3 ) # A different prompt each time
Você pode ver na amostra mencionada acima que as opções de geração são altamente flexíveis. Você pode misturar e combinar com base em que tipo de texto você precisa gerar, seja vários pedaços ou um de cada vez com avisos.
3. Gerando texto do lote de avisos
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`
gpt2 . load_model ()
prompts = [
"This is a prompt 1" ,
"This is a prompt 2" ,
"This is a prompt 3" ,
"This is a prompt 4"
]
text = gpt2 . generate_batch_from_prompts ( prompts ) # returns an array of generated text
4. GPT-2 de ajuste fino para conjuntos de dados personalizados
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`
gpt2 . load_model ()
my_corpus = './data/shakespeare.txt' # path to corpus
custom_text = gpt2 . finetune ( my_corpus , return_text = True ) # Load your custom dataset
Para ajustar o GPT-2 ao seu corpus ou conjunto de dados personalizado, é ideal ter uma GPU ou TPU em mãos. O Google Colab é uma dessas ferramentas que você pode usar para re-treinar/ajustar seu modelo personalizado.
5. Sequências de texto de codificação e decodificação
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`
gpt2 . load_model ()
# encoding a sentence
encs = gpt2 . encode_seq ( "Hello world, this is a sentence" )
# [15496, 995, 11, 428, 318, 257, 6827]
# decoding an encoded sequence
decs = gpt2 . decode_seq ( encs )
# Hello world, this is a sentence
Sugestões, melhorias e aprimoramentos são sempre bem -vindos! Se você tiver algum problema, crie um na seção de problemas. Se você tiver uma melhoria, faça um problema para discutir a sugestão antes de criar um PR.
Todas as idéias - não importa o quão ultrajante - seja bem -vindo!
A fonte aberta é muito divertida. Suas doações me motivam a dar vida a novas idéias. Se estiver interessado em apoiar meus empreendimentos de código aberto, faça o doação-isso significa muito para mim!
Mit