Rafhael Oliveira · IA

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.

1 min de leitura· apostila: 6 min

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

  1. O bloco Transformer no original, ao lado da versão do curso. As mesmas peças, com os nomes que a OpenAI deu.
  2. A máscara causal no original é construída de um jeito que os tutoriais não mostram.
  3. 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.

Continuar lendo a apostila 13 →Read in EnglishOs PDFs por e-mail →
O que a apostila cobre · 7 seções · 6 min
  1. O que está em repos/
  2. O bloco inteiro, no original
  3. A máscara causal, no original
  4. Três achados de quem lê o original
  5. O tokenizador: GPT-3-Encoder
  6. O repositório gpt-3: dados, não código
  7. No laboratório
Todos os capítulos do curso · GPT-1 e GPT-2, desmontados
  1. 00 · Os sete fósseis: por que GPT-1, GPT-2 e RoBERTa são um corte histórico, não uma lista
  2. Glossário · Glossário do curso: o que token, camada e modelo querem dizer em IA, e no resto da TI
  3. 01 · Por que o GPT-2 não enxerga letras nem palavras, e o que isso custa em português
  4. 02 · Embeddings: de um inteiro sem sentido a um vetor que sabe que rei e rainha são parentes
  5. 03 · Atenção: a única operação que substituiu vinte anos de redes recorrentes
  6. 04 · Doze cabeças em vez de uma, e a única linha de código que separa o GPT do RoBERTa
  7. 05 · Por que o GPT-2 precisa de 48 andares para responder, e o que acontece dentro de cada um
  8. 06 · O que a escala realmente compra: de 124 milhões a 1,5 bilhão, medido
  9. 07 · Temperature, top-k e top-p: a decisão que muda mais o texto do que trocar de modelo
  10. 08 · Perplexidade: o único número que diz o que o modelo aprendeu, sem anedotas
  11. 09 · GPT-1 para GPT-2: mesmo tamanho, metade da perplexidade. Quatro decisões explicam
  12. 10 · RoBERTa: quando o avanço é treinar melhor o que já existia
  13. 11 · Encoder vs decoder: uma linha de código e todas as consequências que descem dela
  14. 12 · O detector: como um modelo de linguagem vira classificador, e por que esse não deve decidir nada
  15. 13 · Lendo o código original do GPT-2: 174 linhas contra tudo o que você aprendeu
  16. 14 · Servindo modelos: da chamada de função ao servidor HTTP, e o que a produção faz a mais
  17. 15 · O guia do laboratório: cada comando, cada script, e tudo o que foi medido
  18. 16 · O teto deste caminho: o argumento de LeCun, lido de dentro do GPT-2

Depois disto: o experimento Antevisão

Rafhael Oliveira
Rafhael Oliveira

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 →