antonio leandro

ia generativa

Textbooks Are All You Need

paper · Gunasekar, Suriya, Zhang, Yi, Aneja, Jyoti, Mendes, Caio César Teodoro, Del Giorno, Allie, Gopi, Sivakanth, Javaheripi, Mojan, Kauffmann, Piero · · ~36 min de leitura do original

a tese

a qualidade do dado é um eixo de escala: 1,3 bilhão de parâmetros treinados em 7 bilhões de tokens curados como livro-texto chegam a 50,6% no humaneval e batem modelos dez vezes maiores em python

o que fica

  1. Filtrar o corpus por "valor educacional" rendeu mais que treinar dez vezes mais tempo: um modelo de 350M saturou em 12,19% no HumanEval depois de cerca de 200B tokens do Stack cru, e chegou a 17,68% com 36.000 passos sobre o subconjunto filtrado.
  2. O maior salto veio do finetuning em 180M tokens de exercícios sintéticos, que levou o HumanEval de 29% para 50,6% — menos de 3% do orçamento total de tokens.
  3. Finetunar em exercícios que só usam bibliotecas básicas melhorou o uso de Pygame e Tkinter, ausentes do conjunto de finetuning: o ajuste parece reorganizar conhecimento já adquirido no pré-treino, não acrescentar conhecimento novo.
  4. Diversidade em dado sintético não sai de graça: pedir "gere um livro-texto de Python" produz um corpus homogêneo, e os autores tiveram que injetar aleatoriedade no prompt restringindo tópico, público-alvo e nome da função.
  5. Overlap de n-gram não prova ausência de contaminação: os autores podaram até 354.000 dos 879.500 exercícios por distância de embedding e de AST, retreinaram, e o modelo continuou acima do StarCoder-Prompted mesmo perdendo alguns pontos.
  6. O modelo aprendeu a escrever código correto a partir de dados que os próprios autores classificam como de alta taxa de erro, gerados pelo GPT-3.5.

o problema

Desde 2020 a receita para melhorar um modelo de linguagem era conhecida e monótona: mais parâmetros, mais tokens, mais compute. As leis de escala descreviam a curva com precisão suficiente para virar planejamento orçamentário. O efeito colateral é que quase toda a engenharia foi para o lado do sistema — paralelismo, kernels, infra — e quase nenhuma para o lado do que exatamente estava dentro do corpus.

No caso de código, o corpus padrão é o The Stack mais StackOverflow: mais de 35 milhões de arquivos, mais de 35 bilhões de tokens. Inspecionando amostras à mão, os autores listam o que há ali: trechos que não são autocontidos e dependem de módulos que o modelo nunca vê; código que não computa nada, só define constante e configura GUI; lógica algorítmica enterrada dentro de funções longas e mal documentadas; e uma distribuição de assuntos torta. Um humano aprendendo a programar por esse material teria dificuldade. A hipótese do paper é que o modelo tem a mesma dificuldade, e que o problema não é volume, é razão sinal-ruído.

a ideia

Treinar com material que se pareça com um bom livro-texto: claro, autocontido, instrutivo e balanceado. A analogia é literal e funciona porque o objeto é o mesmo — explicação em linguagem natural intercalada com código que ilustra o ponto, seguida de exercícios. Onde a analogia para: nenhum livro-texto real foi usado. O material foi filtrado da web por um classificador e gerado por outro modelo.

como funciona

Três conjuntos, somando menos de 7 bilhões de tokens. O primeiro é o Stack e o StackOverflow filtrados: o GPT-4 anota cerca de 100 mil amostras respondendo se o trecho tem valor educacional para quem quer aprender os fundamentos, e essa anotação treina um random forest sobre embeddings de um codegen pré-treinado. O GPT-4 aparece só aqui, para evitar anotação humana. Restam uns 6 bilhões de tokens. O segundo é menos de 1 bilhão de tokens de livros-texto de Python sintéticos, gerados com GPT-3.5, com diversidade forçada por restrições de tópico e de público-alvo no prompt. Os dois juntos formam o CodeTextbook e produzem o phi-1-base.

O terceiro é o CodeExercises: cerca de 180 milhões de tokens, aproximadamente 880 mil exercícios no formato docstring mais função a completar, com diversidade induzida pela restrição do nome da função.

A arquitetura é convencional e o paper não esconde isso: decoder-only, MHA com FlashAttention, MHA e MLP em paralelo, 24 camadas, dimensão oculta 2048, MLP interna 8192, 32 attention heads de dimensão 64, rotary position embedding com dimensão rotativa 32, tokenizer do codegen-350M-mono, sequência de 2048. Pré-treino em 8 A100s, fp16, AdamW, batch efetivo 1024, learning rate máximo 1e-3, checkpoint aos 24.000 passos — pouco mais de 50 bilhões de tokens vistos, em menos de 4 dias. O finetuning custou 7 horas e levou o HumanEval de 29% para 50,6%.

o que isso custou

O modelo é de Python e só. Não conhece APIs específicas nem pacotes menos comuns. E é frágil de um jeito que interessa a quem for usar: a performance cai quando o prompt fica longo, e cai de novo quando o prompt tem erro gramatical — os exercícios de treino eram todos curtos e bem escritos, então o modelo não viu variação de estilo.

A contaminação é a objeção óbvia, e o paper a leva a sério. O overlap de n-gram encontra 4 questões do HumanEval com sobreposição de 13-gram, todas falsos positivos. O teste mais duro é a poda: remover do CodeExercises tudo que se parece com HumanEval por distância de embedding e por distância de edição entre ASTs, retreinar e reavaliar. Podando de 42.500 a 354.000 dos 879.500 exercícios, o modelo continua à frente do StarCoder-Prompted, mas o número total escorrega de 50,6% para algo entre 45% e 46% nos limiares mais agressivos. Todos os modelos acertam menos no subconjunto não-similar.

Há um custo de método também. O detalhe da geração de dados sintéticos foi omitido por razões proprietárias, então o resultado não é reproduzível de fora. E a receita inteira depende de um modelo mais forte já existir: sem GPT-3.5 e GPT-4 não há livro-texto nem anotação. Os autores admitem que o dado do GPT-3.5 tem alta taxa de erro, e que a tarefa é estreita — bater o professor num domínio específico é plausível, generalizar isso não está demonstrado.

onde isso aparece hoje

O paper abre um terceiro eixo ao lado dos dois que as leis de escala e o Chinchilla já tinham mapeado: parâmetros, tokens e agora curadoria. Modelo pequeno treinado com dado sintético curado virou linha de produto, e a família phi continuou depois deste primeiro modelo. É também um dos trabalhos que consolidam o uso de LLM para fabricar o corpus de treino do próximo LLM, na mesma direção do Self-Instruct. A régua usada aqui, o HumanEval, vem do Codex — e o desconforto com ela, visível na criação dos 50 problemas fora da distribuição corrigidos pelo GPT-4, antecipa a migração para benchmarks de tarefa real como o SWE-bench.

lido na íntegra por pipeline de llm, revisado por antonio leandro antes de publicar ·