Lendo o código original do GPT-2: 174 linhas contra tudo o que você aprendeu
A fonte primária, o bloco inteiro no original, e o que o repositório gpt-3 realmente contém.
Caiu aqui pelo LinkedIn? Este é o capítulo 13 do curso GPT-1 e GPT-2, desmontados. Dá para ler solto; se quiser o começo, é o capítulo 00.
O GPT-2 inteiro cabe em 174 linhas de TensorFlow. E você consegue ler cada uma. As fontes primárias estão públicas. Elas não são para rodar: usam um módulo removido do TensorFlow em 2019 e não suportam Python acima do 3.7. São para ler. Depois de doze capítulos, você tem o vocabulário para entender cada linha, e ler o original tem um valor que nenhuma explicação de segunda mão substitui. Tem três achados lá que só aparecem para quem lê a fonte. Um deles é sobre a máscara causal, e não é como os tutoriais ensinam.
Os três pontos
- O bloco Transformer no original, ao lado da versão do curso. As mesmas peças, com os nomes que a OpenAI deu.
- A máscara causal no original é construída de um jeito que os tutoriais não mostram.
- O repositório gpt-3 não tem código nem pesos. Tem amostras de texto e estatísticas. Não existe 'baixar o GPT-3'.
Da apostila, o começo
O GPT-2 inteiro cabe em 174 linhas de TensorFlow. Lendo a fonte primária, linha por linha, contra tudo o que você aprendeu.
Ele usa tensorflow.contrib, um módulo removido no TensorFlow 2.0 (2019). E o TF 1.15, última versão que o tem, não suporta Python acima do 3.7 — estamos no 3.14. Fazer rodar exigiria um ambiente Python 3.7 separado e uma versão de TF de 2019.
Não vale a pena, e o motivo é bom: os pesos são os mesmos. O gpt2 que você carrega com transformers é exatamente o modelo deste repositório, convertido de checkpoint TensorFlow para safetensors. Você já está rodando o GPT-2 original — só que numa implementação que funciona no seu Python.
O que a apostila cobre · 7 seções · 6 min
- O que está em repos/
- O bloco inteiro, no original
- A máscara causal, no original
- Três achados de quem lê o original
- O tokenizador: GPT-3-Encoder
- O repositório gpt-3: dados, não código
- No laboratório
Todos os capítulos do curso · GPT-1 e GPT-2, desmontados
- 00 · Os sete fósseis: por que GPT-1, GPT-2 e RoBERTa são um corte histórico, não uma lista
- Glossário · Glossário do curso: o que token, camada e modelo querem dizer em IA, e no resto da TI
- 01 · Por que o GPT-2 não enxerga letras nem palavras, e o que isso custa em português
- 02 · Embeddings: de um inteiro sem sentido a um vetor que sabe que rei e rainha são parentes
- 03 · Atenção: a única operação que substituiu vinte anos de redes recorrentes
- 04 · Doze cabeças em vez de uma, e a única linha de código que separa o GPT do RoBERTa
- 05 · Por que o GPT-2 precisa de 48 andares para responder, e o que acontece dentro de cada um
- 06 · O que a escala realmente compra: de 124 milhões a 1,5 bilhão, medido
- 07 · Temperature, top-k e top-p: a decisão que muda mais o texto do que trocar de modelo
- 08 · Perplexidade: o único número que diz o que o modelo aprendeu, sem anedotas
- 09 · GPT-1 para GPT-2: mesmo tamanho, metade da perplexidade. Quatro decisões explicam
- 10 · RoBERTa: quando o avanço é treinar melhor o que já existia
- 11 · Encoder vs decoder: uma linha de código e todas as consequências que descem dela
- 12 · O detector: como um modelo de linguagem vira classificador, e por que esse não deve decidir nada
- 13 · Lendo o código original do GPT-2: 174 linhas contra tudo o que você aprendeu
- 14 · Servindo modelos: da chamada de função ao servidor HTTP, e o que a produção faz a mais
- 15 · O guia do laboratório: cada comando, cada script, e tudo o que foi medido
- 16 · O teto deste caminho: o argumento de LeCun, lido de dentro do GPT-2

Escreve o curso do GPT-2 e conduz o experimento Antevisão, medindo cada rodada antes de publicar o número. Os posts no LinkedIn começam aqui e terminam nas apostilas.
Seguir no LinkedIn →