Pular para o conteúdo
10/30Capítulo 10 de 30

Pré-treinando um LLM: dados, computação, leis de escala e custo

Vinte modelos treinados em uma GPU de laptop para medir uma lei de escala e validar a estimativa 6ND contra um contador real de FLOPs.

Nesta página

Capítulo 9 terminou com um bloco transformer que treina. Empilhe alguns deles, aponte a perda de próximo token do Capítulo 8 para a saída, e não resta nada a inventar. Tudo o que sobra é uma compra.

Essa mudança é maior do que parece. Até aqui, todo capítulo perguntava isso aprende? — uma pergunta de sim ou não que um laptop resolve em dez minutos. Este faz uma pergunta com dinheiro dentro: dada uma quantidade fixa de aritmética, qual é o melhor modelo que posso comprar? A resposta é uma fórmula, e ela não era óbvia para ninguém em 2018.

Aqui está essa pergunta respondida por medição, em uma única GPU de laptop. Vinte modelos, de 98.624 a 15 milhões de parâmetros, foram treinados do zero em 174 milhões de tokens da Wikipédia — um vocabulário BPE de 2.048 tokens treinado do jeito que o Capítulo 7 treina um, o transformer do Capítulo 9. Cada execução recebeu exatamente um de três orçamentos de computação e nem uma operação a mais, então um modelo maior necessariamente lê menos texto. A melhor perda em held-out alcançada em cada orçamento:

TEXT
budget C (FLOPs)   best loss   reached by a model of
       1.00e13       5.3531           98,624 params
       3.16e13       4.8638           98,624 params
       1.00e14       4.3383          295,808 params

fitted:  L = (Cc / C)^0.0913     over one decade of compute

Dez vezes mais aritmética tira 19% da perda, e os três pontos caem em uma linha reta em log-log. Nada nos nove primeiros capítulos prevê isso. Não há teorema por trás — é uma regularidade empírica, mantida com um expoente diferente ao longo das dez ordens de grandeza entre este laptop e um datacenter, e é a única observação que convenceu uma indústria a gastar o PIB de um país pequeno em GPUs.

O que é pré-treinamento, e o que há de novo nele

Link para a seção: O que é pré-treinamento, e o que há de novo nele

Nada no objetivo muda. O modelo ainda prevê o próximo token, a perda ainda é a entropia cruzada do Capítulo 4 aplicada à fatoração do Capítulo 8, o otimizador ainda é o AdamW do Capítulo 6. Pré-treinamento não é um novo algoritmo; é o mesmo algoritmo rodado em um corpus grande o suficiente para que a execução precise ter orçamento. Duas coisas tornam isso possível: os rótulos são gratuitos, já que o alvo para a posição tt é o token em t+1t+1 e já está no texto; e a última seção do Capítulo 6 removeu a objeção, porque um modelo com muito mais parâmetros do que as regras clássicas permitem não desmorona, ele melhora. O que sai é um modelo base — algo que continua texto, em vez de responder.

Contando a computação antes de gastá-la: 6ND

Link para a seção: Contando a computação antes de gastá-la: 6ND

Antes que qualquer coisa disso possa entrar no orçamento, ela precisa ser contada, e a área a conta com uma fórmula:

C6NDC \approx 6ND

em que NN é a contagem de parâmetros, DD são os tokens de treinamento e CC é o total de operações de ponto flutuante. Kaplan et al. a derivam em duas etapas.1 Forward: 2 FLOPs por parâmetro por token, já que cada parâmetro em uma multiplicação de matrizes é usado uma vez por token, em uma multiplicação e uma soma. Backward: duas vezes o forward, já que a passagem backward do Capítulo 5 calcula dois gradientes em cada camada — em relação às entradas da camada, para que o sinal continue viajando, e em relação aos seus pesos — cada um uma multiplicação de matrizes do tamanho da forward, então 4N4N.

Essa é a derivação inteira, e vale conferir em vez de acreditar. O PyTorch vem com um contador real de FLOPs, torch.utils.flop_counter.FlopCounterMode, que intercepta cada operação que um modelo despacha e soma o trabalho real. Rode-o ao longo de quatro ordens de grandeza, a maior no dispositivo meta, que aloca shapes e nenhuma memória:

flops.pyPYTHON
from torch.utils.flop_counter import FlopCounterMode

counter = FlopCounterMode(display=False)
with counter:                       
    loss = model(x, targets)[1]     
    loss.backward()                 
measured = counter.get_total_flops()
print(measured / (6 * n_params * n_tokens))
configuraçãoNN sem embeddingsNN totalmedido, fwd+bwd÷ 6ND6ND (NN total)÷ 6ND6ND (sem emb.)fwd+bwd ÷ fwd
dd 128, 4 camadas, TT 256788.7367.254.4004.60e101,0319,4853,000
dd 512, 8 camadas, TT 25625.183.23251.045.8883.26e111,0382,1043,000
dd 768, 12 camadas, TT 102484.973.056124.356.8641.75e121,1451,6763,000
dd 1600, 48 camadas, TT 10241.474.870.4001.556.920.0002.10e131,1001,1613,000
dd 4096, 32 camadas, TT 20486.442.983.4246.582.444.0328.74e131,0801,1043,000
dd 8192, 80 camadas, TT 819264.427.147.26465.544.929.2803.75e151,1631,1833,000

A razão forward+backward sobre forward é 3,000, exatamente, em todas as escalas: não uma aproximação que por acaso é boa, mas a identidade aritmética acima devolvida como número redondo por um contador que não sabe nada sobre a derivação.

O total medido então fica entre 3% e 17% acima de 6ND6ND, uma vez que NN conta as matrizes de embedding — e essa cláusula importa, porque os dois artigos fundadores contam NN de maneiras diferentes. Kaplan exclui “all vocabulary and positional embeddings” porque isso “produces significantly cleaner scaling laws” (§1.3); o Apêndice F de Chinchilla diz “we also count embeddings matrices in the total parameter count”.2 Para um vocabulário amplo e uma dimensão oculta estreita, os dois diferem por um fator de nove, como mostra a primeira linha.

A lacuna residual é o que 6ND6ND omite deliberadamente: os scores de attention. A Eq. (2.2) de Kaplan escreve o custo forward como 2N+2nlayernctxdmodel2N + 2\,n_{\text{layer}} n_{\text{ctx}} d_{\text{model}} e descarta o segundo termo porque dmodelnctx/12d_{\text{model}} \gg n_{\text{ctx}}/12 — seguro em 2020, menos seguro agora, e o motivo pelo qual a razão deriva para cima conforme T/dT/d cresce — é por isso que duas linhas aqui compartilham um TT de 1.024 e a razão cai, de 1,145 para 1,100, quando dd vai de 768 para 1.600. É o custo O(T2)O(T^2) que o Capítulo 9 introduziu e que o Capítulo 16 transforma em preço.

A computação decide quanto tempo uma execução leva; a memória decide se ela pode começar. Treine com AdamW fp32 puro e cada parâmetro carrega quatro números: o peso, seu gradiente, e a média móvel mm e a variância vv do Adam — as duas médias construídas à mão no Capítulo 6. Quatro números a quatro bytes cada são 16 bytes por parâmetro, antes de uma única ativação. Medido em uma GPU de laptop de 8 GB, tomando a alocação residente no ponto da etapa em que nenhum grafo está vivo:

modelovocabuláriobatchNN16N16N previstoresidente medidopico em uma etapaa diferença
dd 512, 8 camadas50.257851.045.888779 MB801 MB2.500 MB1.699 MB
dd 512, 8 camadas4.096827.411.456418 MB426 MB1.043 MB617 MB
dd 256, 6 camadas4.09685.839.36089 MB89 MB382 MB293 MB
dd 256, 6 camadas4.096325.839.36089 MB89 MB1.259 MB1.170 MB
dd 256, 6 camadas4.0961285.839.36089 MB89 MB4.771 MB4.681 MB

Previsão e medição concordam dentro de 3%. A surpresa está na última coluna: as ativações superam o modelo por muito. O mesmo modelo de 5,8 milhões de parâmetros que precisa de 89 MB de estado persistente precisa de 4.681 MB de ativações com batch de 128 — cinquenta e duas vezes o modelo — e boa parte disso nem é o transformer. São os logits, um vetor do tamanho do vocabulário por token, a quatro bytes por entrada: 512 MB na última linha, 393 MB na primeira. O tamanho do vocabulário foi escolhido no Capítulo 7, e ele ainda decide o que cabe na placa.

Qual termo domina depende do formato da execução, por isso Micikevicius et al. dizem que a memória “is dominated by activations”3 enquanto o ZeRO diz que um modelo de 1,5 bilhão de parâmetros precisa de “at least 24 GB” apenas de estados do modelo.4 O ZeRO chega aos mesmos 16 bytes por outro caminho — 2Ψ2\Psi para pesos fp16, 2Ψ2\Psi para gradientes fp16, 4Ψ4\Psi cada para os pesos master fp32 e os dois momentos do Adam — o que, para 70 bilhões de parâmetros, dá 1,12 terabytes, o equivalente a quatorze GPUs de 80 GB antes de uma única ativação.

Paralelismo, em um parágrafo e uma delegação

Link para a seção: Paralelismo, em um parágrafo e uma delegação

Nada disso cabe em um único dispositivo na escala de fronteira, então a execução é dividida de quatro maneiras ao mesmo tempo. Paralelismo de dados coloca uma cópia do modelo em cada GPU e tira a média dos gradientes — o padrão, e aquele que o ZeRO melhora ao se recusar a manter cópias redundantes do estado do otimizador. Paralelismo de tensores divide matrizes individuais entre dispositivos. Paralelismo de pipeline dá a cada dispositivo um grupo contíguo de camadas. Paralelismo de contexto divide a própria sequência, necessário apenas quando TT é longo o bastante para o termo de attention dominar. A Tabela 4 do Llama 3 lista todos os quatro de uma vez: tensor 8, contexto até 16, pipeline 16, dados até 128, em 16.384 GPUs H100.5 Isso é tudo que este curso dirá sobre o assunto; engenharia de treinamento distribuído é um semestre próprio, e o CS336 de Stanford é esse semestre, aulas 5 a 8, com código.6 O que sobrevive à delegação é um único número, utilização de FLOPs do modelo — a fração do pico aritmético de uma GPU que uma execução real alcança — que é o que transforma o organizado 6ND6ND em tempo de relógio e, portanto, em dinheiro.

Em janeiro de 2020, Kaplan et al. treinaram uma grade de transformers e descobriram que a perda de teste segue uma lei de potência em cada um dos três recursos ao longo de mais de seis ordens de grandeza.1 A §1.2 deles dá três leis ajustadas:

L(N)=(NcN)αN,αN0.076,Nc8.8×1013L(N) = \left(\frac{N_c}{N}\right)^{\alpha_N}, \qquad \alpha_N \approx 0.076, \qquad N_c \approx 8.8 \times 10^{13}

com companheiras αD0.095\alpha_D \approx 0.095 para dados e αCmin0.050\alpha_C^{\min} \approx 0.050 para computação alocada de forma ótima. As constantes não são universais, e o artigo diz isso: “the precise numerical values of NcN_c, CcminC_c^{\min} and DcD_c depend on the vocabulary size and tokenization and hence do not have a fundamental meaning.”

Os expoentes são minúsculos: dez vezes os parâmetros compra um fator 100.0761.1910^{0.076} \approx 1.19 a menos na perda restante. Isso parece nada, e é o fato mais importante aqui — os retornos são terríveis e nunca param. Uma lei de potência com expoente pequeno promete que a próxima ordem de grandeza vai ajudar, menos do que a anterior ajudou, para sempre. Comprar computação deixa de ser aposta e vira uma compra com taxa de câmbio publicada, que é exatamente o argumento que destravou o capital.

Então veio a prescrição, e é aqui que o artigo estava errado de um jeito que custou muito dinheiro à indústria. A Tabela 6 de Kaplan dá NoptC0.73N_{\text{opt}} \propto C^{0.73} e DoptC0.27D_{\text{opt}} \propto C^{0.27}: dez vezes a computação significa um modelo 5,4 vezes maior alimentado com apenas 1,9 vez mais texto. O resumo é explícito — “optimally compute-efficient training involves training very large models on a relatively modest amount of data and stopping significantly before convergence.” A área fez exatamente isso: GPT-3 tem 175 bilhões de parâmetros em 300 bilhões de tokens,7 Gopher 280 bilhões em 300 bilhões, Megatron-Turing NLG 530 bilhões em 270 bilhões.2 Meio token a dois tokens por parâmetro, em todos os casos.

Chinchilla, e o que a varredura acima estava medindo

Link para a seção: Chinchilla, e o que a varredura acima estava medindo

Em março de 2022, Hoffmann et al. treinaram mais de 400 modelos, de 70 milhões a 16 bilhões de parâmetros, e chegaram à conclusão oposta por três rotas independentes.2 A Tabela 2 deles relata o expoente aa em NoptCaN_{\text{opt}} \propto C^{a} como 0,50, 0,49 e 0,46, contra 0,73 de Kaplan. Em termos simples: tamanho do modelo e dados de treinamento devem crescer na mesma proporção.

A segunda abordagem deles é a reproduzida pela varredura no topo deste capítulo, em um milionésimo da escala: fixe um orçamento, treine muitos tamanhos exatamente nesse orçamento, trace a perda final contra o tamanho do modelo.

parâmetrosC=1013C = 10^{13}C=3.16×1013C = 3.16 \times 10^{13}C=1014C = 10^{14}
98.6245,3531 (171)4,8638 (542)
150.3205,4636 (74)
194.2085,5041 (44)4,8730 (140)4,4040 (442)
295.8085,5550 (19)4,9029 (60)4,3383 (190)
665.2805,7849 (3,8)5,1254 (12)4,4192 (38)
1.280.7685,8174 (1,0)5,1751 (3,2)4,5003 (10)
3.101.5685,4686 (0,5)4,7768 (1,7)
5.315.0725,5894 (0,2)4,8514 (0,6)
15.053.5685,3534 (0,1)

Perda held-out em nats por token, tokens por parâmetro entre parênteses, negrito para o melhor modelo em cada orçamento; um travessão é um ponto não executado, porque o orçamento exigia mais texto do que o corpus contém ou o tamanho ficou fora dos varridos ali.

Leia uma coluna de cima para baixo: a perda cai, chega ao fundo e volta a subir. Um modelo pode ser grande demais para seu orçamento com a mesma facilidade com que pode ser pequeno demais — em 101410^{14}, a penalidade por escolher 665.280 parâmetros em vez de 295.808 é 0,08 nats, o que no envelope ajustado acima é a perda que um modelo corretamente dimensionado alcança com 18% menos computação. Escolher o formato errado joga fora um quinto do orçamento. Essa é a Figura 3 de Chinchilla em uma tarde em uma GPU, em vez de com quatrocentos modelos.

Agora leia na horizontal. Em 101310^{13}, o melhor modelo é o menor da varredura; em 101410^{14}, é o de 295.808 parâmetros, cercado dos dois lados. O ótimo se move para a direita conforme o orçamento cresce, que é todo o conteúdo da correção. Ajuste a terceira abordagem do artigo — a superfície L(N,D)=E+A/Nα+B/DβL(N,D) = E + A/N^{\alpha} + B/D^{\beta} sobre todas as execuções — e minimize sujeita a C=6NDC = 6ND:

TEXT
L(N, D) = 24.7 / N^0.195 + 46.8 / D^0.169       (E fits to ~0; see below)
implied   N_opt ∝ C^0.464
  compare   Chinchilla 0.46-0.50 · Besiroglu 0.513 · Kaplan 0.73

0,46, vindo de um laptop, contra 0,73 de Kaplan. Concordância em três dígitos a partir de um ajuste com três orçamentos é sorte; concordância no primeiro não é. O expoente viaja — a constante não, já que a razão token-parâmetro nesses ótimos é de 170 a 540, não 20. Três motivos, todos instrutivos. EE ajusta para zero porque, em uma perda acima de 4 nats, a execução não está nem perto do piso de entropia que domina o ajuste de Chinchilla. Batch size e learning rate foram fixos em vez de ajustados por ponto, o que prejudica as execuções que recebem menos etapas — e essas são os modelos grandes: em 101310^{13} FLOPs, um modelo de 1,28 milhão de parâmetros recebe 159 etapas de otimizador no total, muito abaixo dos poucos milhares que o termo SminS_{\min} de Kaplan diz que qualquer modelo precisa. Uma lei de escala é ajustada dentro de um regime, e esta está seis ordens de grandeza abaixo da de Chinchilla.

Daí o resumo do artigo: “current large language models are significantly undertrained”. Chinchilla é a demonstração — 70 bilhões de parâmetros em 1,4 trilhão de tokens, a mesma computação total que o Gopher de 280 bilhões em 300 bilhões, vencendo-o em 51 de 57 tarefas MMLU, 67,5% contra 60%.2 Quatro vezes menor, quatro vezes e meia mais texto, mesmo dinheiro, modelo melhor.

Duas ressalvas sobre essa razão famosa. “Vinte tokens por parâmetro” não é uma frase no artigo, que diz apenas que “for every doubling of model size the number of training tokens should also be doubled”; o 20 é uma inferência da Tabela 3 e dos próprios 70 B em 1,4 T de Chinchilla. E sua precisão é pior do que a publicada: Besiroglu et al. reajustaram a partir de uma digitalização da Figura 4, descobriram que os parâmetros originais “fit the reconstructed data poorly”, com intervalos “implausibly tight given the number of data points”, e colocaram a faixa honesta em “between 4 and 40” tokens por parâmetro.8

Um detalhe do método de Chinchilla cumpre uma promessa que o Capítulo 1 fez sobre schedules de learning rate. O cosine schedule precisa ser combinado ao orçamento de tokens. Um modelo que verá 10 milhões de tokens deve decair seu learning rate para zero em 10 milhões de tokens; dê a ele um schedule dimensionado para 100 milhões, pare cedo, e você está lendo uma perda no meio da descida a uma taxa alta demais. Chinchilla treina cada modelo em quatro comprimentos de ciclo para controlar exatamente isso; a varredura acima define seu schedule a partir do orçamento pelo mesmo motivo.

Elas são o resultado empírico mais útil da área e são rotineiramente vendidas além do que dizem. Quatro limites.

Elas preveem perda, não capacidade. O lado esquerdo é entropia cruzada em texto held-out. Nada nesses artigos autoriza uma afirmação sobre se um modelo escreverá SQL correto, recusará uma solicitação prejudicial ou usará uma ferramenta. Esta é a lição do Capítulo 5 de novo: uma previsão da perda não é uma previsão do comportamento pelo qual você está pagando.

Elas são ajustadas, não derivadas. Nenhuma teoria produz αN=0.076\alpha_N = 0.076. As constantes se movem com o tokenizer — por isso uma comparação de perplexidade entre dois tokenizers não tem sentido, como o Capítulo 8 explicou — e com a mistura de dados, arquitetura e otimizador. Toda lei publicada é uma lei do setup que a produziu, e é por isso que a Meta reajustou a sua antes do Llama 3.5

Elas assumem um token novo a cada etapa, o que silenciosamente assume um corpus infinito. Muennighoff et al. mediram o que acontece quando ele acaba: até quatro épocas de dados repetidos custam quase nada — um modelo de 8,7 bilhões de parâmetros em 44 bilhões de tokens únicos vistos quatro vezes terminou com “only 0.5 % higher validation loss” do que o mesmo modelo em 178 bilhões de tokens únicos — enquanto, depois de cerca de dezesseis épocas, computação adicional não compra nada.9

E ninguém treina mais de forma compute-optimal. Chinchilla minimiza o custo de treinamento; um modelo implantado então paga aproximadamente 2N2N FLOPs por token gerado, para sempre. LLaMA 1 disse isso claramente: “given a target level of performance, the preferred model is not the fastest to train but the fastest at inference”.10 Sardana et al. formalizaram isso minimizando 6NDtrain+2NDinference6ND_{\text{train}} + 2ND_{\text{inference}} em vez disso, e descobriram que qualquer um esperando um bilhão de solicitações deve treinar “smaller and longer than Chinchilla-optimal”.11 A §9.1 do Llama 3 concorda: seus modelos pequenos treinam “far beyond the point of compute optimal training, effectively trading training compute for inference efficiency”.5 A razão não está obsoleta; ela responde a uma pergunta que já não é a que está sendo feita.

Habilidades emergentes, e o debate sobre se elas são reais

Link para a seção: Habilidades emergentes, e o debate sobre se elas são reais

A perda cai suavemente. Scores de benchmark às vezes não. Wei et al. reuniram casos em que uma tarefa fica no acaso ao longo de ordens de grandeza de computação de treinamento e então salta — aritmética de três dígitos aparecendo no GPT-3 por volta de 2×10222 \times 10^{22} FLOPs, MMLU subindo acima de chute entre 33 e 5×10235 \times 10^{23} — e deram nome ao padrão: “an ability is emergent if it is not present in smaller models but is present in larger models”.12 Se isso é uma propriedade real, extrapolar a partir de experimentos baratos é inseguro, porque a capacidade que você está comprando pode não existir em nenhuma escala que você possa se dar ao luxo de testar.

Schaeffer, Miranda e Koyejo argumentaram que a maior parte disso é um artefato de medição, e o mecanismo é aritmético.13 A perda por token cai suavemente, então a probabilidade de um token estar certo, exp(L)\exp(-\mathcal{L}), melhora gradualmente. Avalie o modelo com correspondência exata de string em uma resposta de LL tokens e você eleva essa probabilidade à potência LL — uma curva suave elevada a uma potência grande parece um precipício. Troque por uma métrica que conta tokens em vez de exigir todos eles, nas mesmas saídas, e “the family's performance smoothly, continuously and predictably improves with increasing scale”.

A auditoria deles é o número a lembrar — “of the 39 preferred metrics in BIG-Bench, at most 5 display emergence”, com duas métricas descontínuas respondendo por mais de 92% dos casos alegados — e a cautela deles também: “nothing in this paper should be interpreted as claiming that large language models cannot display emergent abilities”. Um salto em um gráfico é evidência sobre a métrica até prova em contrário. O Capítulo 29 é onde isso vira seu problema, porque escolher uma métrica com corte rígido é uma decisão que você tomará sem perceber.

O corpus é a parte de uma execução de pré-treinamento que não tem equação associada, e onde vivem a maioria das decisões consequenciais. A matéria-prima é um rastreamento da web: o arquivo de agosto de 2026 do Common Crawl contém “2.14 billion web pages or 360 TiB of uncompressed content”, um mês dele, gratuito para baixar.14 Quase nada é utilizável como está. O artigo do T5 diz que o crawl “largely comprises gibberish or boiler-plate text like menus, error messages, or duplicate text”, e o pipeline C4 que ele introduziu é uma lista de heurísticas grosseiras — manter apenas linhas que terminam com pontuação final, descartar páginas com menos de três frases, descartar qualquer página que contenha uma chave ou uma palavra de uma lista pública de obscenidades — transformando vinte terabytes de texto mensal em cerca de 750 GB.15

Grosseiras é a palavra. Dodge et al. auditaram o que esses filtros removem e descobriram que a blocklist de obscenidades apaga 42% dos documentos em inglês afro-americano e 32% em inglês alinhado a hispânicos, contra 6,2% do inglês alinhado a brancos, deixando um corpus 97,8% da última categoria.16 Uma regra sem opinião sobre dialeto tinha uma.

Depois vem deduplicação, que não é arrumação: Lee et al. encontraram uma frase de 61 palavras repetida 61.036 vezes no C4, e mostraram que deduplicar reduz em dez vezes a taxa com que modelos “emit memorized text”, de 1,9% dos tokens gerados para 0,19%.17 Mais não é melhor, porém — a equipe do FineWeb deduplicou globalmente ao longo de 96 crawls, obteve 4 trilhões de tokens e nenhum ganho mensurável, depois deduplicou cada crawl separadamente, obteve 20 trilhões, e igualou o melhor corpus existente.18

Depois, contaminação. O Llama 3 mediu a sua e publicou: 98% do AGIEval, 95% do BIG-Bench Hard e 85% do HellaSwag sobrepostos ao conjunto de treinamento por 8-grams, e para o MMLU uma sobreposição tão alta que “it is impossible to get a good performance gain estimate”.5 A §4 do GPT-3 relata um bug de filtragem que deixou benchmarks nos dados sem volta: “because of cost considerations it was infeasible to retrain the model”.7

Proveniência é a parte não resolvida. The Pile trouxe um componente de 100,96 GiB chamado Books3 — 12% do corpus e, pela própria tabela de consentimento do artigo, livros de um tracker privado de torrent;19 ele foi tirado do ar em agosto de 2023 após uma reclamação de copyright. A posição jurídica em setembro de 2026 é incerta, e as três decisões dos EUA citadas como tendência discordam entre si. Alsup considerou treinamento em livros adquiridos legalmente “exceedingly transformative” enquanto decidiu que uma biblioteca construída a partir de cópias pirateadas não era, e a Anthropic fez acordo nessa metade por $1,5 bilhão cobrindo 482.460 obras, cerca de $3.000 cada, aprovado em 20 de julho de 2026.20 Chhabria concedeu julgamento sumário à Meta escrevendo que sua decisão “does not stand for the proposition that Meta's use of copyrighted materials to train its language models is lawful”, apenas que “these plaintiffs made the wrong arguments”.21 Bibas, decidindo contra a Ross Intelligence, observou que “only non-generative AI is before me today”.22 Nenhum tribunal recursal dos EUA decidiu a questão.

Pessoas fazem as partes que a perda não consegue. A TIME noticiou em janeiro de 2023 que trabalhadores rotulando texto tóxico para a OpenAI por meio da empresa Sama levavam para casa “between around $1.32 and $2 per hour” lendo trechos que descreviam abuso sexual infantil, tortura e automutilação, enquanto a OpenAI pagava à Sama $12,50 por hora pelo trabalho; a Sama contesta tanto a faixa de pagamento quanto a cota.23 Isso é a filtragem ao redor do pré-treinamento, não o pré-treinamento em si — mas está na mesma fatura, e é onde uma pessoa se senta.

A eletricidade é real e geralmente citada de forma errada. O número publicado mais cuidadoso é o do BLOOM: 1.082.990 horas de GPU, 433 MWh e 24,7 toneladas de CO₂ equivalente para a execução, 50,5 contando fabricação e nós ociosos;24 Patterson et al. colocam o GPT-3 em 1.287 MWh e 552 toneladas.25 Duas cautelas. A vantagem do BLOOM é a matriz nuclear francesa a 57 g CO₂ por kWh, não eficiência — ele usou mais energia do que o OPT-175B. E o número de emissões mais citado da área, as 626.155 lb de Strubell et al. para uma busca de arquitetura neural, depois se mostrou 88 vezes alto demais, por ter assumido que a busca rodou no tamanho completo do modelo quando ela rodou em um proxy.26 O enquadramento do LBNL é o defensável: data centers dos EUA usaram 192 TWh em 2024, 4,7% da eletricidade nacional — um número ligado a uma indústria, não a uma execução específica.27

A linha que atravessa tudo isso é o que Bender et al. chamaram de dívida de documentação: “putting ourselves in a situation where the datasets are both undocumented and too large to document post hoc”.28 Cada fato acima existe porque alguém olhou. Para os corpora por trás dos modelos que a maioria das pessoas usa, ninguém consegue.

Agora a aritmética que todo mundo quer, a partir de quatro entradas citadas, para que, quando envelhecerem, fique óbvio qual substituir.

A página da H100 da NVIDIA lista 1.979 teraFLOPS de throughput de tensor-core BF16 sob uma nota de rodapé que diz “with sparsity”.29 Nenhuma execução de pré-treinamento usa esparsidade estruturada, então o número denso é metade disso: 989,5 TFLOP/s.

A Tabela 4 do Llama 3 relata 38–43% de utilização de FLOPs do modelo em BF16. Use 40%: 395,8 TFLOP/s de aritmética útil por GPU.5

Preço sob demanda da Lambda para um nó 8×H100 SXM, acessado em 2026-09-06: $3,99 por GPU-hora, portanto $31,92 por hora para o nó.30

A razão de Chinchilla, D=20ND = 20N, dá C=6ND=120N2C = 6ND = 120N^2 e portanto N=C/120N = \sqrt{C/120}.

orçamentohoras de H100FLOPsparams compute-optimaltokensem um nó 8×H100GPUs para terminar em 90 dias
$100253.6e19546 M10,9 B3,1 h1
$1.0002513.6e201,73 B34,5 B31,3 h1
$10.0002.5063.6e215,46 B109 B13 dias2
$100.00025.0633.6e2217,3 B345 B131 dias12
$1.000.000250.6273.6e2354,6 B1,09 T4 anos116
$10.000.0002.506.2663.6e24173 B3,45 T36 anos1.160
$100.000.00025.062.6573.6e25546 B10,9 T358 anos11.603

Leia as duas últimas colunas juntas. Com $10.000 você obtém um modelo de 5 bilhões de parâmetros em um nó alugado em quinze dias. Com $100.000.000, a aritmética diz 546 bilhões de parâmetros — e doze mil H100s conectadas por três meses, o que não é algo que você aluga com cartão de crédito. Depois de cerca de $100.000, a restrição vinculante deixa de ser dinheiro e passa a ser o cluster.

Antes de confiar em uma tabela assim, teste-a contra execuções cujo custo real foi publicado — llm.c reproduz o GPT-2 124M em “~90 minutes” em um nó 8×A100 “for about $20”, e o GPT-2 1.6B em 24 horas em um nó 8×H100 por $672.31

TEXT
$672, against what $672 actually bought (llm.c GPT-2 1.6B, one 8xH100 node, 24 h)
  this table predicts:      168 H100-hours   N = 1.41 B params   D = 28.3 B tokens
  what was actually run:    192 H100-hours   N = 1.558 B params  D = 33.6 B tokens

Llama 3 405B, against Meta's own published GPU-hours
  from the paper's 3.8e25 FLOPs at 40 % MFU:   26.67 M H100-hours
  published in Meta's Llama 3.1 model card:    30.84 M H100-hours    ratio 0.86

Ambos dentro de cerca de 15%, que é aproximadamente a precisão que esse tipo de estimativa merece e consideravelmente melhor do que a precisão com que ela costuma ser citada.

A comparação de manchete, com as duas definições na mesa

Link para a seção: A comparação de manchete, com as duas definições na mesa

O número mais repetido neste assunto é que um modelo da classe GPT-2 que custava cerca de $43.000 em 2019 pode ser reproduzido hoje por algumas dezenas de dólares. A metade moderna é bem documentada; a metade histórica, não.

Hoje. README do nanochat de Karpathy: “you can train your own GPT-2 capability LLM ... for only $48 (~2 hours of 8XH100 GPU node) ... On a spot instance, the total cost can be closer to ~$15.”32 “GPT-2 capability” aqui é preciso e publicado — superar o score CORE do GPT-2 de 0,256525 — em um leaderboard cuja melhor entrada em 14 de março de 2026 é 1,65 hora. Os $48 assumem $3 por GPU-hora, abaixo do preço de tabela de $3,99 da Lambda; no preço de tabela, fica mais perto de $64.

Em 2019. Não há fonte primária: a OpenAI nunca publicou duração ou custo. A cadeia passa por The Register, fevereiro de 2019, relatando “256 Google TPU3 cores” sem preço e sem duração; depois Synced, junho de 2019, observando que o hardware custava $256 por hora no Google Cloud e afirmando explicitamente que “OpenAI didn't specify the training duration”. $43.008 são $256 por hora vezes 168 horas presumidas que ninguém jamais referenciou.

Então a manchete honesta é: um modelo que iguala o score de benchmark publicado do GPT-2 pode ser treinado hoje por bem menos de $100 em hardware alugado, contra um custo de 2019 que nunca foi publicado e cuja estimativa famosa repousa em um palpite sem fonte sobre a duração. O colapso é real e a metade moderna é reproduzível por qualquer pessoa com cartão de crédito; a razão é aritmética sobre um número que não existe. Esse é o estado dos custos de treinamento publicados em geral. O artigo do GPT-3 não contém nenhum valor em dólares, apenas 3.14×10233.14 \times 10^{23} FLOPs na Tabela D.1;7 o artigo do Llama 3 também não contém.5 Todo custo de treinamento que você leu é uma estimativa a partir de uma contagem de FLOPs, uma suposição de hardware e uma suposição de preço — sempre vale perguntar de quem.

O que um modelo base sabe, e quando parou de saber

Link para a seção: O que um modelo base sabe, e quando parou de saber

O que sai viu um corpus fixo montado em um momento fixo, e duas propriedades decorrem disso.

A primeira é o knowledge cutoff. Depois da data de coleta, o modelo não sabe nada — não “está incerto”, nada — e vai confabular fluentemente em vez de dizer isso, porque dizer isso nunca foi um comportamento em que ele foi treinado. O model card do Llama 3.1 dá dezembro de 2023;33 todo modelo tem um, e ele é uma propriedade dos dados de treinamento, não do deployment. Contornar isso é um problema de recuperação, que é o Capítulo 19.

A segunda é que um modelo base completa em vez de responder. Dê a ele “Qual é a capital da França?” e uma continuação plausível é outra pergunta, porque no corpus essa string aparece com mais frequência em uma lista de exercícios.

Um completador de texto não é um assistente. Ele não segue instruções, porque nada no corpus lhe disse que um pedido deve ser obedecido em vez de continuado. Ele não tem noção de uma conversa com dois participantes. Ele produzirá tranquilamente a continuação mais provável de um prompt prejudicial, porque provável é a única coisa para a qual ele foi otimizado.

Transformá-lo em algo que responde exige uma segunda etapa que custa uma fração de um por cento da primeira, e consiste quase inteiramente em mostrar exemplos do comportamento que você quer e então comparar pares das próprias saídas dele. Essa etapa é de onde vêm seguimento de instruções, templates de chat, recusas e — isso surpreende as pessoas — a capacidade de chamar uma ferramenta. O Capítulo 11 é essa etapa: supervised fine-tuning, RLHF, DPO e GRPO, e a pergunta sobre o que “alinhado” significa e quem decide.


Também vale ler junto com este capítulo: o build-nanogpt de Karpathy e seu vídeo acompanhante, que percorrem uma reprodução completa do GPT-2 de ponta a ponta em um ritmo que este capítulo não consegue; e Stanford CS324, Large Language Models, cujas aulas sobre dados e impacto ambiental aprofundam mais do que a seção acima em material que este curso trata uma vez e delega.

  1. Kaplan, J., McCandlish, S., Henighan, T., Brown, T. B., Chess, B., Child, R., Gray, S., Radford, A., Wu, J. and Amodei, D. Scaling Laws for Neural Language Models. arXiv:2001.08361 (2020). As três leis de potência são as Eqs. (1.1)–(1.3) na §1.2 e as constantes completas estão no Apêndice A, Tabela 5; a derivação de 6N6N é a §2.1; os expoentes de alocação de computação estão na Tabela 6. Observe que há duas leis de computação, αC=0.057\alpha_C = 0.057 em batch size fixo e αCmin=0.050\alpha_C^{\min} = 0.050 em batch size ótimo; o artigo diz que a última “should be used to make predictions”. 2

  2. Hoffmann, J., Borgeaud, S., Mensch, A., Buchatskaya, E., Cai, T., Rutherford, E. et al. Training Compute-Optimal Large Language Models. arXiv:2203.15556 (2022). Expoentes na Tabela 2, orçamentos projetados na Tabela 3, a comparação com Gopher na §4, a convenção de contagem de parâmetros no Apêndice F. A prosa abaixo da Tabela 3 discorda da própria Tabela 3 para as linhas 175 B e 280 B; a tabela é a versão a citar. 2 3 4

  3. Micikevicius, P., Narang, S., Alben, J., Diamos, G., Elsen, E., Garcia, D. et al. Mixed Precision Training. arXiv:1710.03740 (2017), ICLR 2018. Pesos master FP32 na §3.1, loss scaling na §3.2. 2

  4. Rajbhandari, S., Rajbhandari, S., Ruwase, O. and He, Y. ZeRO: Memory Optimizations Toward Training Trillion Parameter Models. arXiv:1910.02054 (2019), SC20. A contabilidade 16Ψ16\Psi está na §3.1; os valores de estado residual para ativações estão na §3.2.

  5. Grattafiori, A. et al. (Llama Team, AI @ Meta). The Llama 3 Herd of Models. arXiv:2407.21783 (2024). Orçamento de computação e contagem de tokens na §1, a lei de escala reajustada na §3.2.1, a configuração de paralelismo e MFU na Tabela 4, a análise de contaminação na §5.1.4, a afirmação de over-training na §9.1. O artigo não contém valores em dólares nem tabela de emissões. 2 3 4 5 6

  6. Stanford CS336, Language Modeling from Scratch. A Aula 2 cobre contabilidade de recursos, as aulas 5–8 GPUs, kernels e paralelismo, as aulas 9 e 11 escala, as aulas 13–14 dados. É o curso ao qual este capítulo delega sua engenharia, e é público.

  7. Brown, T. B. et al. Language Models are Few-Shot Learners. arXiv:2005.14165 (2020). Computação no Apêndice D, Tabela D.1 — que tem uma coluna literalmente intitulada “flops per param per token”, cujo valor para cada linha do GPT-3 é 6. Análise de contaminação na §4. 2 3

  8. Besiroglu, T., Erdil, E., Barnett, M. and You, J. Chinchilla Scaling: A replication attempt. arXiv:2404.10102 (2024). Reconstrói os dados de Chinchilla digitalizando sua Figura 4, reajusta, e relata os expoentes corrigidos e intervalos muito mais amplos.

  9. Muennighoff, N., Rush, A. M., Barak, B., Le Scao, T., Piktus, A., Tazi, N., Pyysalo, S., Wolf, T. and Raffel, C. Scaling Data-Constrained Language Models. arXiv:2305.16264 (2023), NeurIPS 2023. O resultado de quatro épocas está na §6; a meia-vida de dezesseis épocas é o RD15R_D^* \approx 15 ajustado.

  10. Touvron, H., Lavril, T., Izacard, G., Martinet, X., Lachaux, M.-A., Lacroix, T. et al. LLaMA: Open and Efficient Foundation Language Models. arXiv:2302.13971 (2023). A §1 declara o argumento de custo de inference contra treinamento Chinchilla-ótimo.

  11. Sardana, N., Portes, J., Doubov, S. and Frankle, J. Beyond Chinchilla-Optimal: Accounting for Inference in Language Model Scaling Laws. arXiv:2401.00448 (2023), ICML 2024. A §5 deles também contém o contrapeso: modelos treinados em razões extremas de tokens continuam melhorando, mas “more slowly than scaling laws predict”.

  12. Wei, J., Tay, Y., Bommasani, R., Raffel, C., Zoph, B., Borgeaud, S. et al. Emergent Abilities of Large Language Models. arXiv:2206.07682 (2022), TMLR. Definição na §2, exemplos e limiares de computação nas §3–4 e Tabela 1.

  13. Schaeffer, R., Miranda, B. and Koyejo, S. Are Emergent Abilities of Large Language Models a Mirage? arXiv:2304.15004 (2023), artigo outstanding da NeurIPS 2023. O argumento da métrica está na §2, a meta-análise do BIG-Bench na §4, o exemplo visual construído na §5.

  14. Common Crawl, August 2026 Crawl Archive Now Available (CC-MAIN-2026-34), publicado em 24 de agosto de 2026, acessado em 2026-09-06. Sua própria página inicial afirma “over 300 billion pages spanning 15 years”, “totalling more than 10 petabytes” — um número para o arquivo inteiro, não para o crawl mensal precificado aqui.

  15. Raffel, C., Shazeer, N., Roberts, A., Lee, K., Narang, S., Matena, M., Zhou, Y., Li, W. and Liu, P. J. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683 (2019), JMLR 21(140). Os filtros do C4 estão na §2.2. O artigo dá tamanhos em bytes, não tokens; o número de 156 bilhões de tokens amplamente atribuído a ele vem de Dodge et al. abaixo.

  16. Dodge, J., Sap, M., Marasović, A., Agnew, W., Ilharco, G., Groeneveld, D., Mitchell, M. and Gardner, M. Documenting Large Webtext Corpora: A Case Study on the Colossal Clean Crawled Corpus. arXiv:2104.08758 (2021), EMNLP 2021. As taxas de remoção por dialeto estão na §5.3; contaminação de benchmarks no C4 está na §4.2.

  17. Lee, K., Ippolito, D., Nystrom, A., Zhang, C., Eck, D., Callison-Burch, C. and Carlini, N. Deduplicating Training Data Makes Language Models Better. arXiv:2107.06499 (2021), ACL 2022. As 61.036 repetições estão na nota de rodapé 1; os números de memorização estão na §6.2, Tabela 4, e são porcentagens de tokens gerados sob um critério de correspondência exata de 50 tokens.

  18. Penedo, G., Kydlíček, H., Ben Allal, L., Lozhkov, A., Mitchell, M., Raffel, C., Von Werra, L. and Wolf, T. The FineWeb Datasets: Decanting the Web for the Finest Text Data at Scale. arXiv:2406.17557 (2024), NeurIPS 2024 Datasets and Benchmarks. O resultado de deduplicação está na §3.4. O dataset lançado desde então cresceu além dos 15 trilhões de tokens do artigo.

  19. Gao, L., Biderman, S., Black, S. et al. The Pile: An 800GB Dataset of Diverse Text for Language Modeling. arXiv:2101.00027 (2020). Books3 está na §2.3 e na Tabela 1; a tabela de consentimento é a Tabela 5. O corpus tem 825,18 GiB, então até o título arredonda para baixo.

  20. Bartz v. Anthropic, No. 4:24-cv-05417 (N.D. Cal.). Ordem de fair use de 23 de junho de 2025 (Dkt. 231); certificação de classe em 17 de julho de 2025; aprovação final e julgamento em 20 de julho de 2026 (Dkt. 680). O acordo libera apenas inputs passados, não outputs e não conduta futura.

  21. Kadrey v. Meta, No. 3:23-cv-03417-VC (N.D. Cal.), julgamento sumário em 25 de junho de 2025 (Dkt. 598). Observe que a alegação de distribuição por torrenting não foi decidida e permanece ativa.

  22. Thomson Reuters v. ROSS Intelligence, No. 1:20-cv-00613-SB (D. Del.), opinião revisada em 11 de fevereiro de 2025 (Dkt. 770), Bibas J. Em recurso interlocutório ao Third Circuit (No. 25-2153), sustentado em 11 de junho de 2026, ainda sem decisão no momento da escrita.

  23. Perrigo, B. Exclusive: OpenAI Used Kenyan Workers on Less Than $2 Per Hour to Make ChatGPT Less Toxic. TIME, 18 de janeiro de 2023. Os $2 são um teto para revisores seniores que cumpriam todas as metas; rotuladores juniores, a maioria, levavam para casa $1,32. A contestação da Sama, citada no mesmo artigo, dá $1,46–$3,74 e uma cota menor.

  24. Luccioni, A. S., Viguier, S. and Ligozat, A.-L. Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model. arXiv:2211.02001 (2022), JMLR 24(253). Tabelas 1 e 3.

  25. Patterson, D., Gonzalez, J., Le, Q., Liang, C., Munguia, L.-M., Rothchild, D., So, D., Texier, M. and Dean, J. Carbon Emissions and Large Neural Network Training. arXiv:2104.10350 (2021). Os números do GPT-3 estão na Tabela 4; a correção da estimativa de NAS está na §4.1.

  26. Strubell, E., Ganesh, A. and McCallum, A. Energy and Policy Considerations for Deep Learning in NLP. arXiv:1906.02243 (2019), ACL 2019. Vale ler precisamente por causa do que aconteceu com seu número mais citado: o artigo é cuidadoso, declara sua extrapolação, e ainda assim errou por duas ordens de grandeza na única linha que todo mundo repetiu.

  27. Smith, S. J., Hubbard, A., Newkirk, A., Ganeshalingam, M., Holecek, B., Sartor, D., Mills, M. and Shehabi, A. United States Data Center Energy Usage Report: 2025 Update. LBNL-2001758 (18 de junho de 2026). Isso revisa para baixo o relatório de 2024 amplamente citado para a série histórica; se você está citando o número de 176 TWh para 2023, está citando a edição superada.

  28. Bender, E. M., Gebru, T., McMillan-Major, A. and Shmitchell, S. On the Dangers of Stochastic Parrots: Can Language Models Be Too Big? FAccT '21, pp. 610–623. DOI 10.1145/3442188.3445922. “Documentation debt” está na §4.4. Observe que os próprios números de carbono do artigo são citados de Strubell et al. e herdam a correção acima — o que é uma ilustração do argumento dele, não uma refutação.

  29. NVIDIA. Página de produto NVIDIA H100 Tensor Core GPU, nvidia.com/en-us/data-center/h100/ (acessado em 2026-09-06). Toda linha de tensor-core nessa página, exceto FP64, traz a nota “with sparsity”; o número BF16 denso usado aqui é metade dos 1.979 TFLOPS publicados.

  30. Lambda. GPU Cloud pricing, lambda.ai/pricing (acessado em 2026-09-06). Sob demanda, por GPU por hora, antes de impostos. Os preços nesta seção ficarão desatualizados mais rápido do que qualquer outra coisa neste curso; a aritmética ao redor deles não.

  31. Karpathy, A. karpathy/llm.c, discussão #481, Reproducing GPT-2 (124M) in llm.c in 90 minutes for $20 (28 de maio de 2024), e discussão #677, Let's reproduce GPT-2 (1.6B): one 8XH100 node, 24 hours, $672, in llm.c (11 de julho de 2024).

  32. Karpathy, A. karpathy/nanochat, README e leaderboard “time to GPT-2” (acessado em 2026-09-06). O valor de $48 e a definição por score CORE de “GPT-2 capability” estão ambos no README; o próprio speedrun.sh do repositório diz “approximately 1.5 hours”, então trate a cifra de duas horas como arredondada.

  33. Meta. Llama 3.1 model card, models/llama3_1/MODEL_CARD.md em meta-llama/llama-models (acessado em 2026-09-06). Fonte das 30,84 M horas de H100 para o modelo 405 B, do total de 39,3 M, do valor location-based de 11.390 tCO2eq, e do cutoff de dados de dezembro de 2023.


Criado por

David Vicente Campos

Fundador da NeuraLIA Labs e cofundador da MyRealFood

Sou engenheiro de computação pela Universidade de León. Cofundei a MyRealFood, onde, como CTO, desenvolvi o aplicativo que milhões de pessoas usaram para comer melhor, e fundei a NeuraLIA Labs, onde crio produtos de IA. Aqui escrevo sobre o que precisei entender pelo caminho, do jeito que eu gostaria que alguém tivesse me explicado.

Mais sobre o autor

Publicado pela NeuraLIA Labs.

Receba novos posts na sua caixa de entrada

Notícias de IA, guias e atualizações do produto — um e-mail curto quando publicarmos algo que vale seu tempo.

Índice do curso

Abstract software decision engine with branching paths, probability nodes, and glowing gates.
jev13 min de leitura

O modelo de IA Jev foi criado para decisões, não para prosa

O Jev, da TypeSafe AI, está chamando atenção porque trata a inteligência de software como um problema de probabilidade: escolher o ramo certo, associar confiança e evitar pagar um LLM para escrever texto quando o código precisa de uma decisão.

Abstract agent runtime sorting documents, memory blocks and pointer nodes inside a bounded context frame.
context-engineering13 min de leitura

Engenharia de contexto para agentes de IA de longo horizonte

Agentes de longa duração não falham apenas porque a janela é pequena. Eles falham quando arquivos, saídas de ferramentas e histórico obsoleto ocupam o espaço da tarefa que o agente deveria concluir.

Pronto para deixar a LIA escolher por você?

Crie com todos os modelos de IA em um só lugar — comece grátis hoje.