Fine-Tune, Retrieve ou Prompt? A decisão é econômica
A mesma pergunta de suporte respondida de três formas e precificada de ponta a ponta. Fine-tuning só vence após remover 492 tokens.
Nesta página
Aqui está uma pergunta de suporte — qual é a versão mínima do Node que este projeto espera? — respondida de quatro formas com a mesma documentação, e precificada de ponta a ponta.
| rota | tokens enviados | custo de uma resposta |
|---|---|---|
| toda a documentação no prompt, sem cache | 43.311 | $0,066317 |
| toda a documentação no prompt, com cache | 43.311 | $0,007864 |
| os quatro melhores trechos, via retrieval | 1.037 | $0,002906 |
| um model com fine-tuning, sem documentação nenhuma | 28 | $0,002088 |
O fine-tune é o mais barato. Ele também é, para este problema, a resposta errada — e as duas coisas podem ser mostradas com a mesma aritmética, não com uma opinião.
Três números nessa tabela já contradizem o conselho que você vai ler em toda parte. Ativar o cache economizou 88% por pergunta e, com cem perguntas por mês, torna a mesma rota cinco vezes mais cara. Retrieval envia quarenta e duas vezes menos tokens do que a rota com prompt em cache e custa apenas 2,7 vezes menos. E o model com fine-tuning, reduzido a um prompt de vinte e oito tokens, economiza só 28% em relação ao retrieval — porque 97% do que ele paga é a resposta, e o treinamento não encurta respostas.
Capítulo 16 criou uma função de custo para ler uma fatura. Aqui a mesma função decide uma arquitetura.
Mostrar detalhes
O que este capítulo precisa dos anteriores.
- Capítulo 11 construiu LoRA e QLoRA como técnica: o que é um adaptador de baixa dimensão, por que ele treina ordens de magnitude menos parâmetros. Este capítulo nunca reexplica isso e apenas precifica.
- Capítulo 16 criou
computeCost, os cinco grupos faturáveis e a regra de prefixo para prompt caching. A planilha de custos abaixo é essa função com três rotas conectadas a ela. - Capítulo 19 criou o retriever: chunking com um cabeçalho contextual, busca híbrida, quatro slots de trechos, citações. Este capítulo o reutiliza e mede quanto custa executá-lo, não como ele funciona.
Tudo aqui é TypeScript, porque são tarifas, aritmética e contabilidade, sem nenhum tensor à vista — com uma exceção, declarada quando acontece: para descobrir o que o fine-tuning realmente ensina, este capítulo faz fine-tuning de um model, e essa parte é Python.
A pergunta é feita do jeito errado
Link para a seção: A pergunta é feita do jeito errado“Devemos fazer fine-tuning?” é perguntado como se fosse uma questão sobre um model. É uma questão sobre orçamento, com um formato que nenhum benchmark responde: o que é pago uma vez, o que é pago por pergunta e o que é pago de novo toda vez que o mundo muda.
As três rotas também não são três formas de fazer a mesma coisa, e os fornecedores dizem isso de modo mais claro do que a maioria dos posts de blog. A própria tabela da OpenAI sobre para que o fine-tuning supervisionado é melhor lista quatro usos: classificação, tradução com nuances, geração de conteúdo em um formato específico e correção de falhas ao seguir instruções.1 Nenhum deles é “ensinar ao model algo que ele não sabe”. O resumo do benefício diz que “você pode usar prompts mais curtos, com menos exemplos e dados de contexto, o que economiza custos de token em escala e pode ter menor latência” — um argumento sobre a fatura, feito pela empresa que vende o recurso.
Então:
- Fine-tuning ensina forma e comportamento. Tom, formato, a estrutura de uma resposta, um limite que você consegue demonstrar mas não descrever. A versão publicada mais forte é a Hipótese de Alinhamento Superficial do LIMA: conhecimento vem do pretraining, alinhamento ensina principalmente em qual subdistribuição de formatos falar — e é por isso que mil exemplos curados bastaram ali.2
- Retrieval fornece fatos que mudam. É a única das três em que uma edição na sua documentação chega à resposta sem tocar no model.
- Prompting cobre a maioria dos casos reais, e é a linha de base honesta. In-context learning é o padrão desde Language Models are Few-Shot Learners: a tarefa é demonstrada dentro do prompt e nenhum peso se move.3
Dois artigos medidos fecham a porta para o erro no meio. Ovadia e colegas compararam injetar conhecimento por fine-tuning não supervisionado com injetá-lo por retrieval, e retrieval venceu de forma consistente, inclusive em fatos que o model base já tinha visto no pretraining.4 Gekhman e colegas mediram o dano: exemplos que introduzem novo conhecimento são ajustados lentamente, e quando o model finalmente os ajusta sua taxa de alucinação em outras perguntas aumenta.5 Ensinar fatos por fine-tuning não apenas falha; degrada respostas nas quais você não estava treinando.
Essa metade está resolvida. A metade econômica, não, e ela é o restante do capítulo.
O caso, e a documentação que não fica parada
Link para a seção: O caso, e a documentação que não fica paradaUm caso, executado de três formas: suporte técnico sobre a sua própria documentação, que muda toda semana.
O corpus é real e está neste disco: os 23 documentos Markdown que um repositório de software em atividade mantém como documentação interna — o guia de build, as regras de marca, o brief de tradução, dez manuais de serviço, as notas de performance e segurança. Medido com o200k_base, a codificação do Capítulo 7:
documents 23
characters 159,223
words 22,194
tokens (o200k_base) 42,921
tokens with per-file headers 43,158Quarenta e três mil tokens é um tamanho confortável para esta decisão: cabe em qualquer context window moderna, então as três rotas estão genuinamente disponíveis. Com dez milhões, a decisão é tomada por você, e é retrieval.
Agora o trabalho que a palavra “semanalmente” faz. Rotatividade de documentação costuma ser afirmada; aqui ela é contada, a partir do histórico de versões daquele repositório:
| medido nas últimas 26 semanas | valor |
|---|---|
| commits que tocaram os 23 documentos | 40 |
| desses, edições em um documento que já existia | 21 |
| semanas distintas do calendário com pelo menos uma mudança | 11 |
| commits que tocaram o catálogo de texto voltado ao usuário do produto em suas 8 semanas de vida | 157 |
| semanas do calendário, entre essas 8, em que ele mudou | 8 |
Os documentos mudam mais ou menos a cada duas semanas. As strings visíveis ao usuário — que são aquilo sobre o que um suporte é realmente questionado — mudaram em todas as semanas em que existiram, a cerca de vinte commits por semana. Qualquer rota que escolhermos precisa sobreviver a isso, e “com que frequência aquilo em que você treinou muda?” acaba tendo um número no seu próprio repositório, não uma opinião.
Vinte perguntas realistas de suporte foram escritas contra esse corpus, uma por tópico, e todos os números abaixo são computados sobre essas vinte.
Rota um: envie tudo
Link para a seção: Rota um: envie tudoA coisa mais simples que funciona: colocar o corpus inteiro no system prompt, a pergunta no fim e deixar o model encontrá-la.
system instructions 140 tokens
the 23 documents 43,158 tokens
the question (median of 20 measured) 13 tokens
the answer (the one assumption) 150 tokensTodos os números ali foram contados, exceto o último: 150 output tokens é uma suposição, escolhida dentro do intervalo de turnos de assistant faturados no Capítulo 16. É o único número aqui que não foi executado, é aplicado de forma idêntica às três rotas, e a seção de break-even mostra exatamente quanto a conclusão se move quando você o muda.
Nas tarifas lidas na página do fornecedor em 7 de setembro de 2026 — $1,50 por milhão de input tokens, $9,00 por milhão de output6 — isso dá $0,066317 por pergunta. Você está pagando para reler quarenta e três mil tokens para responder treze.
A correção do Capítulo 16 se aplica diretamente: o corpus é estável e está na frente, então é um prefixo de cache perfeito, e relê-lo custa um décimo — $0,007864 por pergunta, um corte de 88%. O aviso do Capítulo 16 também se aplica, na forma que aquele capítulo sinalizou e não precificou. Este fornecedor não cobra prêmio de escrita; ele cobra aluguel. Um cache explícito custa $0,000001 por token armazenado por hora,6 então manter 43.298 tokens aquecidos custa
quer alguém pergunte alguma coisa ou não. Isso dá $189,78 em seis meses, por uma sala vazia. Divida o aluguel pela economia por pergunta e a condição sai em uma linha: fazer cache deste corpus se paga acima de 0,74 pergunta por hora — 546 por mês quando a reconstrução semanal do cache também é contada. Abaixo disso, o recurso que você ativou para economizar dinheiro perde dinheiro.
| seis meses, 100 perguntas por mês | total |
|---|---|
| corpus inteiro, sem cache | $39,79 |
| corpus inteiro, com cache | $196,18 |
Mesma rota, mesmo código, uma flag, cinco vezes a fatura. O Capítulo 16 encontrou uma versão disso causada por um timestamp no lugar errado; aqui nada está errado além do tráfego. Um cache é uma aposta em volume, e neste fornecedor você a faz por hora.
Rota dois: envie só o que importa
Link para a seção: Rota dois: envie só o que importaO retriever do Capítulo 19, sem mudanças: cortar em limites de seção com um cabeçalho contextual, indexar, colocar os quatro melhores trechos no prompt. Medido sobre as vinte perguntas:
chunks produced from the corpus 330
mean tokens of a chunk's own text 124.9
mean tokens of the four retrieved extracts 884
prompt per question (140 + 884 + 13) 1,037
one-off embedding of every chunk 46,823 tokensQuarenta e duas vezes menos prompt tokens do que na rota um, a $0,002906 por pergunta. O índice custa $0,0070 para construir a $0,15 por milhão de embedding tokens6 — menos do que três perguntas — e os mesmos $0,0070 para reconstruir do zero toda vez que a documentação muda. Reconstruir o índice inteiro toda semana por seis meses custa dezoito centavos.
Vale a pena parar em uma coisa. Retrieval destrói prompt caching. O prefixo estável agora é a instrução de sistema de 140 tokens; a partir do token 141, o prompt difere em toda chamada, porque os trechos são escolhidos por pergunta. E 140 tokens está abaixo de todos os mínimos de cache citados no Capítulo 16. Então a rota dois não pode ser cacheada de forma alguma, o que parece ruim e não é: não fazer cache de 1.037 tokens é mais barato do que fazer cache de 43.298.
Essa é uma regra geral que vale levar adiante: as duas grandes técnicas de economia de token são mutuamente exclusivas no mesmo conteúdo, e vence a que remove mais tokens. Retrieval remove 97,6% deles.
Rota três: pare de enviar a documentação
Link para a seção: Rota três: pare de enviar a documentaçãoTreine com duzentos exemplos no estilo da casa e depois faça perguntas sem nenhuma documentação anexada.
training examples 200
training tokens 24,389
epochs 3
prompt per question (15 + 13) 28O treinamento custa 24.389 × 3 × $10,00 por milhão = $0,7317. Esse é todo o custo de construção, menos do que uma xícara de café, exatamente por isso tantas equipes pagam antes de verificar se ajuda.
Agora a armadilha, e ela é a razão deste capítulo existir. Um model com fine-tuning não custa o mesmo que seu model base para executar. A página de preços diz isso em uma frase: “para inferência de model a partir do Gemini 3, o preço de predição do endpoint de model ajustado será 1,5 vez o do model base.”6 Não o treinamento. A inferência, em todo token, enquanto o model viver.
Então coloque isso em uma fórmula. Se e são os preços base de input e output, é o multiplicador do tuned model, é o tamanho do prompt da rota que você está substituindo, é o tamanho do prompt após o fine-tuning e é o tamanho da resposta. Fine-tuning só é mais barato por pergunta quando
O primeiro termo é óbvio: seu novo prompt curto, com acréscimo. O segundo não é, e é onde o dinheiro vai — o adicional sobre a resposta, que não tem nada a ver com o seu prompt e que o treinamento não consegue encurtar. Com os números medidos — , , , — o limite é
answer 50 tokens -> the prompt it replaces must exceed 192 tokens
answer 150 tokens -> the prompt it replaces must exceed 492 tokens
answer 400 tokens -> the prompt it replaces must exceed 1,242 tokens
answer 1000 tokens -> the prompt it replaces must exceed 3,042 tokensNo tamanho de resposta medido, 492 tokens — dos quais 450 são o adicional da resposta, não o prompt. Substituir um prompt mais curto do que isso é mais caro por pergunta, para sempre, em qualquer volume; e o limite cresce linearmente com o quanto seu assistant fala, então um que escreve respostas longas nunca consegue usar fine-tuning para chegar a um token mais barato, por mais prompt que remova.
O mesmo fato pelo outro lado é a frase para lembrar. Dos $0,002088 por pergunta da rota com fine-tuning, 97,0% é a resposta. Fine-tuning otimiza os três por cento restantes.
A planilha de custos
Link para a seção: A planilha de custosQuatro números descrevem qualquer uma dessas rotas: o que você paga uma vez, o que paga quando a documentação muda, o que paga por hora independentemente de uso e o que paga por pergunta. Isso estende o computeCost do Capítulo 16 sem modificá-lo.
import { computeCost, type Pricing, type Usage } from "./cost"; // Chapter 16
export interface Route {
name: string;
setupUSD: number; // paid once, before the first question
perRefreshUSD: number; // paid every time the documentation changes
standingUSDPerHour: number; // paid per hour whatever the traffic
pricing: Pricing;
usage: Usage; // one question and its answer
}
export const perQueryUSD = (r: Route) => computeCost(r.pricing, r.usage);
const HOURS_PER_MONTH = (24 * 365.25) / 12;
export function totalUSD(
r: Route, months: number, queriesPerMonth: number, refreshesPerMonth: number,
) {
return r.setupUSD
+ months * refreshesPerMonth * r.perRefreshUSD
+ months * HOURS_PER_MONTH * r.standingUSDPerHour
+ months * queriesPerMonth * perQueryUSD(r);
}
/** Monthly volume at which `b` overtakes `a`. null = it never does. */
export function crossover(
a: Route, b: Route, months: number, refreshesPerMonth: number,
): number | null {
const fixed = (r: Route) =>
r.setupUSD
+ months * refreshesPerMonth * r.perRefreshUSD
+ months * HOURS_PER_MONTH * r.standingUSDPerHour;
const dFixed = fixed(b) - fixed(a); // b's extra fixed cost
const dVar = perQueryUSD(a) - perQueryUSD(b); // b's per-question saving
if (dVar <= 0) return null; // b is never cheaper
return Math.max(0, dFixed / dVar / months);
}O tuned model não é uma lista de preços diferente, é a mesma multiplicada:
const TUNED_MULTIPLIER = 1.5; // read from the provider's pricing page, 2026-09-07
const scale = (p: Pricing, k: number): Pricing => ({
input: p.input.map(t => ({ ...t, price: t.price * k })),
cachedInput: p.cachedInput!.map(t => ({ ...t, price: t.price * k })),
output: p.output.map(t => ({ ...t, price: t.price * k })),
});Essa linha destacada é o argumento inteiro da seção anterior escrito como código: o multiplicador cai sobre output também.
Seis meses, com a documentação atualizada semanalmente:
| perguntas / mês | prompt, com cache | prompt, sem cache | retrieval | fine-tune |
|---|---|---|---|---|
| 100 | $196,18 | $39,79 | $1,93 | $21,01 |
| 1.000 | $238,65 | $397,90 | $17,62 | $32,28 |
| 10.000 | $663,32 | $3.978,99 | $174,52 | $145,04 |
| 100.000 | $4.909,98 | $39.789,90 | $1.743,49 | $1.272,56 |
E os crossovers, que são os quatro números de que um orçamento realmente precisa:
retrieval -> fine-tune, documentation never changes: 148 questions / month
retrieval -> fine-tune, documentation refreshed weekly: 3,989 questions / month
prompt (no cache) -> retrieval: 1 question / month
prompt (no cache) -> prompt (cached): 546 questions / monthLeia os dois primeiros juntos, porque eles são o ponto do capítulo. Um corpus estacionário faz o fine-tuning se pagar em cento e cinquenta perguntas; um corpus que muda toda semana desloca o mesmo crossover por um fator de vinte e sete, e nada no model mudou — só a frequência com que você paga por ele de novo. Custo de construção é nota de rodapé; custo de manutenção é a decisão.
Se agora você concluir que um suporte movimentado deveria fazer fine-tuning, a aritmética concorda com você. Ainda está errado, e a próxima seção explica por quê.
O que o fine-tune realmente aprendeu
Link para a seção: O que o fine-tune realmente aprendeuA planilha de custos tem uma coluna que não consegue computar, então esta seção executa o fine-tune: localmente, em um model aberto pequeno, com o adaptador escrito à mão em vez de puxado de uma biblioteca. O Capítulo 11 construiu LoRA; aqui está ele, no q_proj e v_proj de todas as 24 camadas de Qwen2.5-0.5B-Instruct em rank 8:
class LoRALinear(nn.Module):
def __init__(self, base: nn.Linear, r=8, alpha=16):
super().__init__(); self.base = base
for p in self.base.parameters():
p.requires_grad = False # the model is frozen
self.A = nn.Parameter(torch.zeros(r, base.in_features))
nn.init.normal_(self.A, std=1 / r)
self.B = nn.Parameter(torch.zeros(base.out_features, r))
self.s = alpha / r
self.on = True # so the same run can compare both
def forward(self, x):
y = self.base(x)
return y + (x @ self.A.T @ self.B.T) * self.s if self.on else yOs duzentos exemplos de treinamento vêm mecanicamente do corpus, então são reprodutíveis: a pergunta é um título de seção transformado em pergunta, a resposta é o próprio texto daquela seção em um estilo rígido da casa — uma linha começando com Short answer:, uma linha começando com Source: com o caminho do arquivo. O formato é a forma sendo ensinada; o caminho é o fato. Depois, dois números em vinte perguntas hold-out: a resposta sai no estilo da casa, e ela nomeia o arquivo que realmente responde à pergunta?
Duas linhas de base tornam a tabela legível, e ambas são uma insistência do Capítulo 4, não um adendo. Dez das vinte respostas certas são o mesmo arquivo, então um model que ignora a pergunta e sempre responde CLAUDE.md faz 10/20. E o retriever tem seu próprio teto: nessas vinte perguntas, seus quatro trechos contêm o arquivo certo 14 vezes e o ranqueiam em primeiro 7 vezes, então 14/20 é o máximo que qualquer leitor poderia pontuar usando-o.
LoRA modules 48 trainable parameters 540,672 (0.109 % of the model)
400 steps, 2 epochs, 0.76 s/step on 16 CPU threads, 304 s in total
mean loss over the first 50 steps 3.7363 -> over the last 50 steps 2.4197
house style correct source
always answer the most common file -- 10 / 20
the retriever's own ceiling -- 14 / 20
base model, closed book 0 / 20 0 / 20
fine-tuned, closed book 19 / 20 8 / 20
base model, four retrieved extracts 13 / 20 2 / 20
fine-tuned, four retrieved extracts 1 / 20 1 / 20A forma foi aprendida, completa e rapidamente. De zero a dezenove de vinte, com um adaptador de 540.672 parâmetros — 0,109% do model — em cinco minutos de treinamento em um processador sem nenhuma placa de vídeo à vista.
Os fatos, não. Oito de vinte não se distingue dos dez que você obtém ignorando a pergunta completamente, e o intervalo do Capítulo 4 em vinte amostras diz isso em voz alta. Esses caminhos de arquivo estavam nos dados de treinamento três vezes; o que saiu foi o hábito de terminar com uma linha Source: de aparência plausível. Ao receber a pergunta do topo deste capítulo, o model com fine-tuning respondeu Short answer: 10.x . . . e citou CLAUDE.md. A resposta certa, que está em CLAUDE.md, é 18.17.0.
E então a forma quebrou, que é a linha que justifica o experimento. Entregue ao model com fine-tuning mil tokens de trechos recuperados — um formato de prompt que ele nunca viu, já que todo prompt de treinamento tinha vinte e oito tokens — e o estilo da casa cai de 19/20 para 1/20. Na pergunta do topo deste capítulo, ele responde 18.17.0 — correto, e sem nada do formato para o qual foi treinado. Então o fine-tuning não ensinou um formato; ensinou um formato condicionado aos prompts do conjunto de treinamento, e o primeiro prompt que parecia diferente levou o formato junto. Tudo aquilo em que você faz fine-tuning se torna a única distribuição de input em que seu model é bom, e ninguém coloca isso na planilha.
Uma última nota sobre a métrica, apontando direto para o Capítulo 29: “fonte correta” pontua forma e fato juntos, e é por isso que as duas linhas de retrieval parecem terríveis, mesmo que os dois models tenham acertado o fato daquela pergunta. Um único número de ponta a ponta escondia três coisas — um retriever com 14/20 de recall, um leitor de 0,5B e um formato de citação — e escolher o que corrigir significa separá-las antes de medir, não depois.
O relógio que você não controla
Link para a seção: O relógio que você não controlaAgora a coluna que os fornecedores preenchem por você. Um model com fine-tuning não é um ativo que você possui; é um aluguel sobre o model base de outra pessoa, com uma data de fim impressa. Em 7 de setembro de 2026, a seção de fine-tuning da página de preços da OpenAI trazia este aviso completo:
A OpenAI está encerrando gradualmente a plataforma de fine-tuning. A plataforma não está mais acessível a novos usuários, mas usuários existentes da plataforma de fine-tuning poderão criar jobs de treinamento nos próximos meses. Todos os models com fine-tuning continuarão disponíveis para inferência até que seus models base sejam descontinuados.7
A linha do tempo tem data até o dia: 7 de maio de 2026, fechada para organizações que nunca tinham feito fine-tuning; 2 de julho de 2026, fechada para aquelas que não tinham executado inferência em um model com fine-tuning em sessenta dias; 6 de janeiro de 2027, sem novos jobs de qualquer tipo.8 A mesma página agenda o desligamento dos próprios models com fine-tuning — ft-gpt-3.5-turbo, ft-gpt-4, ft-gpt-4.1-nano, ft-babbage-002, ft-davinci-002 — para 23 de outubro de 2026, cada um com um model base substituto recomendado, que é uma forma educada de dizer: treine de novo.
O outro fornecedor de frontier model nunca vendeu o aluguel. O índice da documentação da Anthropic lista 699 páginas e nenhuma é sobre fine-tuning; as seções de customização de model da página de preços do Bedrock cobrem Amazon Nova, Amazon Titan, Cohere, Meta e models OpenAI de pesos abertos, e nenhum Claude.910 Se sua arquitetura depende de um fine-tune, uma das três famílias de frontier models simplesmente não está disponível para você a nenhum orçamento.
Self-hosting substitui o aluguel de um model pelo aluguel de uma máquina, e a AWS faz essa aritmética em sua própria página: uma unidade de model de throughput provisionado para um model customizado, compromisso de um mês, é “1 unidade de model × $21,18 × 24 horas × 31 dias = $15.757,92” por mês.10 Alugar o metal diretamente é mais barato e não é grátis — $3,99 por GPU-hora sob demanda para uma H100, $1,99 preemptible11 — cerca de $2.900 por mês por uma placa que precisa ficar ligada quer alguém pergunte alguma coisa ou não. A rota inteira de retrieval com dez mil perguntas por mês custa $174,52 por seis meses.
É aqui que LoRA ganha seu lugar, como argumento de orçamento, não técnico. Medido no mesmo model, um adaptador rank-16 sobre attention e as camadas feed-forward tem 8.798.208 parâmetros — 1,781% do model, 17,6 MB em bfloat16 — contra 0,988 GB de pesos base, e seu estado de otimizador e gradient é 140,77 MB, enquanto full fine-tuning precisa de 7,90 GB, um fator de 56. A consequência não é treinamento mais barato, mas o fato de que um model base carregado pode servir muitos adaptadores, que é a única forma de o custo fixo de uma GPU ser dividido por alguma coisa. Treinamento gerenciado reflete isso: $0,48 por milhão de tokens low-rank até 16B contra $0,54 full, com mínimo de $4,00 por job.11 Esse piso é o detalhe. Com 24.389 tokens por três epochs, todo retreinamento neste corpus fatura $4,00 em vez dos $0,04 que a conta daria — $104 de mínimos ao longo de vinte e seis execuções semanais, para noventa e um centavos de aritmética.
O que a privacidade custa, e por que distillation não é uma quarta opção
Link para a seção: O que a privacidade custa, e por que distillation não é uma quarta opçãoMais duas colunas que só aparecem na fatura.
Residência de dados custa cerca de dez por cento, e dois fornecedores concordam no número. A OpenAI cobra “um acréscimo de 10%” em endpoints de residência de dados para models lançados em ou depois de 5 de março de 2026;7 a Vertex precifica seus endpoints não globais a $1,65 contra $1,50, os mesmos dez por cento.6 Compare isso com os cinquenta por cento que um endpoint ajustado custa e o folclore se inverte: residência é barata e fine-tuning não é — e fine-tuning também não é a opção privada, já que o corpus chega ao fornecedor de qualquer forma, uma vez no treinamento em vez de uma vez por chamada.
O preço mais explícito já colocado nos seus dados está na mesma página, que lista um model com fine-tuning duas vezes: com compartilhamento de dados habilitado, a inferência custa exatamente metade — $2,00 contra $4,00 de input, $8,00 contra $16,00 de output.7 Deixar o fornecedor ficar com o que você enviou vale um desconto de 50%, o que diz quanto isso vale para ele.
Distillation — treinar um model pequeno seu nas respostas de um grande — costuma ser oferecida como saída para ambos. Precifique e ela não é, porque o teacher é o sistema que você estava tentando substituir: produzir duzentos exemplos de treinamento perguntando duzentas vezes à rota de retrieval custa 200 × $0,002906 = $0,58, além dos $0,73 para treinar neles. Distillation é algo que você faz depois que o pipeline de retrieval funciona, para torná-lo mais barato, e herda todo fato que o retriever errou.
O que você paga em latência
Link para a seção: O que você paga em latênciaDinheiro é a metade visível. A outra chega como espera, com a mesma causa da fatura: o model lê o prompt inteiro antes de dizer uma palavra. O Capítulo 13 mediu prefill contra decode em um model que você podia tocar; aqui está a mesma medição, uma execução, uma máquina, contra o tamanho do prompt:
| prompt tokens | tempo até o primeiro token | por token |
|---|---|---|
| 28 | 312 ms | 11,14 ms |
| 1.037 | 4.971 ms | 4,79 ms |
| 4.096 | 22.272 ms | 5,44 ms |
| 8.192 | 49.443 ms | 6,04 ms |
Os números absolutos pertencem a um model de 0,5B em dezesseis threads de CPU e não dizem nada sobre um frontier model hospedado. O formato se transfere exatamente: prefill cresce com o tamanho do prompt, e o custo por token aumenta aos poucos quando o termo quadrático do Capítulo 9 começa a aparecer — 4,79 ms a mil tokens contra 6,04 ms a oito mil, uma penalidade de 26% por apenas ser mais longo.
A consequência para as três rotas é direta. A rota um faz prefill de quarenta e três mil tokens por pergunta, e um cache hit é o que torna isso suportável — o Capítulo 16 explicou por quê: uma leitura de cache substitui trabalho de prefill, então compra latência e dinheiro em uma só transação. A rota dois faz prefill de mil e adiciona antes uma ida e volta ao índice. A rota três faz prefill de vinte e oito e não adiciona nada, o que a torna mensuravelmente a mais rápida das três para responder. Ela só está respondendo a coisa errada.
Quando nenhuma das três é a resposta
Link para a seção: Quando nenhuma das três é a respostaTrês falhas que parecem problemas de model e não são — dez minutos aqui economizam um mês depois:
A documentação não contém a resposta
Link para a seção: A documentação não contém a respostaRetrieval não consegue recuperar o que ninguém escreveu, e fine-tuning sobre isso só ensina o model a soar confiante. Se sua principal pergunta de suporte não é respondida em lugar nenhum do corpus, a correção é um redator técnico.
A resposta precisa de uma ação, não de um texto
Link para a seção: A resposta precisa de uma ação, não de um texto“Onde está meu pedido?” é uma consulta ao banco de dados, não uma pergunta de conhecimento. Isso é um tool call — Capítulo 18 — e nem treinamento nem retrieval substituem isso.
A pergunta é ambígua e a interface esconde isso
Link para a seção: A pergunta é ambígua e a interface esconde issoQuando dois produtos compartilham um nome, a melhor resposta possível é pedir esclarecimento. Essa é uma decisão de produto sobre o input, não uma decisão de modelagem sobre o output.
E a exigência acima de tudo isso: esta decisão não pode ser tomada sem um conjunto de avaliação, e o fornecedor que vende o fine-tune diz isso. O guia da OpenAI abre com “Só invista em fine-tuning depois de configurar evals. Você precisa de uma forma confiável de determinar se seu model com fine-tuning está performando melhor do que um model base”, e acrescenta que, se cinquenta bons exemplos não mudam nada, o problema é a tarefa ou o prompt, não o volume de dados.1 Vinte perguntas, que é o que este capítulo usou, mostram um mecanismo e não conseguem escolher um fornecedor — o Capítulo 4 mediu por quê, e o que fazer quando vinte casos são tudo que você tem — repeti-los, pareá-los e medir a dispersão entre execuções — é o Capítulo 29.
A tabela
Link para a seção: A tabelaQuatro colunas, e só a última decide:
| prompt | retrieval | fine-tune | |
|---|---|---|---|
| o que ensina | qualquer coisa que você consiga escrever | fatos que mudam | forma e comportamento |
| custo de construção | zero | $0,0070 mais uma tarde | $0,7317 mais um conjunto de eval |
| custo por pergunta | $0,0079 com cache, $0,0663 sem | $0,0029 | $0,0021, acima de 492 prompt tokens |
| custo de manutenção | zero, ou $0,043 por hora de aluguel | $0,0070 por rebuild | um retreinamento por mudança, mais um por model base aposentado |
A regra que sai disso, curta o suficiente para guardar: comece com o prompt; adicione retrieval quando os fatos se movem; faça fine-tuning só quando você mediu que o que ainda falta é uma forma, não um fato — e precifique a resposta, não o prompt, antes de fazer isso.
A versão desconfortável, para quem chegou já decidido: no caso medido neste capítulo, fine-tuning é a rota mais barata acima de quatro mil perguntas por mês, e nos fatos ainda não consegue vencer responder CLAUDE.md para tudo.
Para onde isso vai agora
Link para a seção: Para onde isso vai agoraTodo preço aqui foi por token, e toda rota uma forma diferente de organizar tokens. Isso está prestes a deixar de ser verdade.
O Capítulo 21 sai do texto. Uma imagem entrando em um model não é uma string, mas uma grade de patches com uma contagem de token que você não escolheu; um minuto falado é faturado por segundo em um fornecedor e por audio token em outro; fala sintética é vendida por caractere, transcrição por minuto, computação bruta por GPU-segundo. A pergunta que este capítulo respondeu com uma função de custo — qual é mais barato? — nem sequer pode ser feita até que as unidades coincidam, e nenhuma calculadora na internet as normaliza.
É também onde o treinamento volta a aparecer: um adaptador de imagem com uma trigger word, e uma voz clonada a partir de uma amostra. O que levanta a pergunta com que o próximo capítulo abre, e ela não é retórica: se fazer fine-tuning de um language model quase sempre é a compra errada, por que fazer fine-tuning de um image model quase sempre é a certa?
Fontes e método
Link para a seção: Fontes e métodoTodo preço, limite e multiplicador neste capítulo foi lido na página do próprio fornecedor em 7 de setembro de 2026 e é citado com essa data, porque todos vão mudar. Os números medidos — contagens de token, tamanhos de chunk, tamanhos de retrieval, training loss, pontuações, latências e contagens de histórico de versão — foram produzidos em uma máquina no mesmo dia e são reprodutíveis a partir do corpus descrito acima.
Os experimentos locais usaram Qwen/Qwen2.5-0.5B-Instruct com greedy decoding, então se reproduzem exatamente; o adaptador é a classe de doze linhas impressa acima, em rank 8 sobre q_proj e v_proj. O corpus é a documentação Markdown rastreada de um repositório de software em atividade, excluindo dois logs append-only, e sua taxa de mudança foi contada a partir do histórico de versões desse repositório.
Referências
Link para a seção: Referências-
OpenAI, Supervised fine-tuning,
developers.openai.com/api/docs/guides/supervised-fine-tuning, e Model optimization,.../guides/model-optimization, ambos acessados em 2026-09-07. Fonte de: a tabela do que o fine-tuning supervisionado é melhor para fazer (classificação, tradução com nuances, geração de conteúdo em um formato específico, correção de falhas ao seguir instruções); os quatro benefícios alegados, incluindo prompts mais curtos e menor latência; o mínimo de 10 exemplos de treinamento e a recomendação de começar com 50; e “Only invest in fine-tuning after setting up evals.” ↩ ↩2 -
Zhou, C. et al. LIMA: Less Is More for Alignment. arXiv:2305.11206 (2023). A Hipótese de Alinhamento Superficial — conhecimento vem do pretraining, alinhamento ensina em qual formato falar — e a razão pela qual mil exemplos curados bastaram. ↩
-
Brown, T. et al. Language Models are Few-Shot Learners. arXiv:2005.14165 (2020). A fonte do in-context learning como linha de base honesta: a tarefa é demonstrada dentro do prompt e nenhum peso é atualizado. ↩
-
Ovadia, O., Brief, M., Mishaeli, M. and Elisha, O. Fine-Tuning or Retrieval? Comparing Knowledge Injection in LLMs. arXiv:2312.05934 (2023). Retrieval superou fine-tuning não supervisionado para injetar conhecimento, inclusive em fatos já vistos no pretraining. ↩
-
Gekhman, Z. et al. Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations? arXiv:2405.05904 (2024). Exemplos que introduzem novo conhecimento são ajustados lentamente, e ajustá-los aumenta alucinação em perguntas não relacionadas. ↩
-
Google, Vertex AI generative AI pricing,
cloud.google.com/vertex-ai/generative-ai/pricing, acessado em 2026-09-07. Todos os números na planilha de custos deste capítulo: Gemini 3.5 Flash no endpoint global a $1,50 por milhão de input tokens, $0,15 de input em cache e $9,00 de text output, com endpoints não globais 10% mais caros; fine-tuning supervisionado do mesmo model a $0,01 por 1.000 training tokens, em que “training tokens are calculated by the total number of tokens in your training dataset, multiplied by your number of epochs”; armazenamento explícito de context cache a $0,000001 por token por hora; input do Gemini Embedding a $0,00015 por 1.000 tokens online; e a nota de que “for model inference starting from Gemini 3, tuned model endpoint prediction price will be 1.5 times of the base model.” ↩ ↩2 ↩3 ↩4 ↩5 -
OpenAI, Pricing,
developers.openai.com/api/docs/pricing, acessado em 2026-09-07. Fonte do aviso de encerramento gradual citado na íntegra, e das tarifas atuais de texto usadas para a checagem cruzada:gpt-5.6-terrastandard short context a $2,00 de input, $0,20 de input em cache, $2,50 de escrita de cache e $12,00 de output por milhão de tokens, com a camada batch pela metade de cada valor. A página traz dez linhas de fine-tuning em sete models base, e exatamente uma delas é faturada por tempo, não por tokens: reinforcement fine-tuning deo4-mini-2025-04-16a $100,00 por hora de treinamento. A mesma página observa um acréscimo de 10% em endpoints de residência de dados para models lançados em ou depois de 5 de março de 2026. ↩ ↩2 ↩3 -
OpenAI, Deprecations,
developers.openai.com/api/docs/deprecations, acessado em 2026-09-07. Fonte da linha do tempo de fine-tuning self-service (7 de maio de 2026, 2 de julho de 2026, 6 de janeiro de 2027) e do desligamento em 23 de outubro de 2026 deft-gpt-3.5-turbo,ft-gpt-4,ft-gpt-4.1-nano-2025-04-14,ft-babbage-002eft-davinci-002, cada um listado com um model base substituto recomendado. ↩ -
Anthropic, índice da documentação para desenvolvedores,
platform.claude.com/llms.txt, acessado em 2026-09-07. 699 páginas listadas, nenhuma delas sobre fine-tuning;platform.claude.com/docs/en/build-with-claude/fine-tuningretorna 404. ↩ -
Amazon Web Services, Amazon Bedrock pricing,
aws.amazon.com/bedrock/pricing/, acessado em 2026-09-07. Fonte das seções de customização de model (Amazon Nova, Amazon Titan, Cohere, Meta, Qwen e models OpenAI de pesos abertos — nenhum Claude), da cobrança mensal de $1,95 para armazenar cada custom model, e do exemplo calculado citado: “1 model unit × $21.18 × 24 hours × 31 days = $15,757.92”. ↩ ↩2 -
Together AI, Pricing,
together.ai/pricing, acessado em 2026-09-07. Fine-tuning por milhão de tokens para models até 16B: $0,48 low-rank e $0,54 full para fine-tuning supervisionado, $1,20 e $1,35 para direct preference optimisation, com o preço computado como “training dataset size × number of epochs” mais evaluation tokens e “a minimum charge of $4.00” por job. Capacidade de GPU: $3,99 por GPU-hora sob demanda para HGX H100, $1,99 preemptible, $5,99 para H200. ↩ ↩2