Hoppa till innehÄllet
20/30Kapitel 20 av 30

Fine-tuning, retrieval eller prompt? Beslutet Àr ekonomiskt

Samma supportfrÄga besvarad pÄ tre sÀtt och prissatt frÄn början till slut. Fine-tuning vinner först nÀr prompt den tar bort passerar 492 tokens.

PÄ den hÀr sidan

HĂ€r Ă€r en supportfrĂ„ga — vilken lĂ€gsta Node-version förvĂ€ntar sig det hĂ€r projektet? — besvarad pĂ„ fyra sĂ€tt mot samma dokumentation, och prissatt frĂ„n början till slut.

vÀgskickade tokenskostnad för ett svar
hela dokumentationen i prompt, ingen cache43,311$0.066317
hela dokumentationen i prompt, cached43,311$0.007864
de fyra bÀsta utdragen, hÀmtade1,037$0.002906
en fine-tuned model, ingen dokumentation alls28$0.002088

Fine-tune Ă€r billigast. Den Ă€r ocksĂ„, för det hĂ€r problemet, fel svar — och bĂ„da sakerna kan visas med samma aritmetik i stĂ€llet för med en Ă„sikt.

Tre siffror i den tabellen motsĂ€ger redan de rĂ„d du kommer att lĂ€sa överallt. Att slĂ„ pĂ„ cache sparade 88 % per frĂ„ga och gör, vid hundra frĂ„gor i mĂ„naden, samma vĂ€g fem gĂ„nger dyrare. Retrieval skickar fyrtiotvĂ„ gĂ„nger fĂ€rre tokens Ă€n vĂ€gen med cached prompt och kostar bara 2,7 gĂ„nger mindre. Och den fine-tuned model, nere pĂ„ en prompt med tjugoĂ„tta tokens, sparar bara 28 % jĂ€mfört med retrieval — eftersom 97 % av det den betalar för Ă€r svaret, och trĂ€ning gör inte svar kortare.

Kapitel 16 byggde en kostnadsfunktion för att lÀsa en faktura. HÀr avgör samma funktion en arkitektur.

Visa detaljer

Vad det hÀr kapitlet behöver frÄn de tidigare.

  • Kapitel 11 byggde LoRA och QLoRA som teknik: vad en low-rank adapter Ă€r, varför den trĂ€nar storleksordningar fĂ€rre parametrar. Det hĂ€r kapitlet förklarar det aldrig igen och prissĂ€tter det bara.
  • Kapitel 16 byggde computeCost, de fem fakturerbara hinkarna och prefixregeln för prompt caching. Kostnadsbladet nedan Ă€r den funktionen med tre vĂ€gar inkopplade.
  • Kapitel 19 byggde retrievern: chunking med en kontextuell header, hybrid search, fyra utdragsplatser, kĂ€llhĂ€nvisningar. Det hĂ€r kapitlet Ă„teranvĂ€nder den och mĂ€ter vad den kostar att köra snarare Ă€n hur den fungerar.

Allt hĂ€r Ă€r TypeScript, eftersom det handlar om taxor, aritmetik och redovisning, utan en tensor i sikte — med ett undantag, deklarerat dĂ€r det sker: för att ta reda pĂ„ vad fine-tuning faktiskt lĂ€r ut fine-tunar det hĂ€r kapitlet en model, och den delen Ă€r Python.

”Bör vi fine-tune?” stĂ€lls som om det vore en frĂ„ga om en model. Det Ă€r en frĂ„ga om en budget, med en form som inget benchmark besvarar: vad betalas en gĂ„ng, vad betalas per frĂ„ga, och vad betalas igen varje gĂ„ng vĂ€rlden rör sig.

De tre vĂ€garna Ă€r inte heller tre sĂ€tt att göra en sak, och leverantörerna sĂ€ger det tydligare Ă€n de flesta blogginlĂ€gg. OpenAI:s egen tabell över vad supervised fine-tuning Ă€r bĂ€st för listar fyra anvĂ€ndningar: klassificering, nyanserad översĂ€ttning, att generera innehĂ„ll i ett specifikt format och att korrigera misslyckanden i instruktionsefterlevnad.1 Ingen av dem Ă€r ”att lĂ€ra modellen nĂ„got den inte kan”. Dess sammanfattning av nyttan Ă€r att ”du kan anvĂ€nda kortare prompts med fĂ€rre exempel och context data, vilket sparar token-kostnader i skala och kan ge lĂ€gre latency” — ett argument om fakturan, frĂ„n företaget som sĂ€ljer funktionen.

AlltsÄ:

  • Fine-tuning lĂ€r ut form och beteende. Ton, format, ett svars form, en grĂ€ns du kan demonstrera men inte beskriva. Den starkaste publicerade versionen Ă€r LIMA:s Superficial Alignment Hypothesis: kunskap kommer frĂ„n pretraining, alignment lĂ€r mest vilken sub-distribution av format modellen ska tala i — vilket Ă€r varför tusen kurerade exempel rĂ€ckte dĂ€r.2
  • Retrieval tillför fakta som förĂ€ndras. Det Ă€r den enda av de tre dĂ€r en Ă€ndring i din dokumentation nĂ„r svaret utan att röra modellen.
  • Prompting tĂ€cker de flesta verkliga fall, och Ă€r den Ă€rliga baslinjen. In-context learning har varit standard sedan Language Models are Few-Shot Learners: uppgiften demonstreras inne i prompt och ingen vikt rör sig.3

TvÄ uppmÀtta artiklar stÀnger dörren för misstaget i mitten. Ovadia och kollegor jÀmförde att injicera kunskap genom unsupervised fine-tuning med att injicera den genom retrieval, och retrieval vann konsekvent, Àven pÄ fakta som basmodellen redan hade sett i pretraining.4 Gekhman och kollegor mÀtte skadan: exempel som introducerar ny kunskap anpassas lÄngsamt, och nÀr modellen till slut anpassar sig till dem stiger dess hallucinationsgrad pÄ andra frÄgor.5 Att lÀra ut fakta med fine-tuning misslyckas inte bara; det försÀmrar svar du inte trÀnade pÄ.

Den halvan Àr avgjord. Den ekonomiska halvan Àr det inte, och den Àr resten av kapitlet.

Ett fall, kört pÄ tre sÀtt: teknisk support över din egen dokumentation, som Àndras varje vecka.

Korpusen Ă€r verklig och finns pĂ„ den hĂ€r disken: de 23 Markdown-dokument som ett fungerande mjukvaru-repository hĂ„ller som intern dokumentation — byggguiden, varumĂ€rkesreglerna, översĂ€ttningsbriefen, tio servicemanualer, prestanda- och sĂ€kerhetsnoteringarna. MĂ€tt med o200k_base, encoding frĂ„n Kapitel 7:

the corpus, measuredTEXT
documents                              23
characters                        159,223
words                              22,194
tokens (o200k_base)                42,921
tokens with per-file headers       43,158

Fyrtiotretusen tokens Àr en bekvÀm storlek för det hÀr beslutet: den ryms i vilket modernt window som helst, sÄ alla tre vÀgar Àr faktiskt tillgÀngliga. Vid tio miljoner Àr beslutet fattat Ät dig, och det Àr retrieval.

Nu arbetet som ordet ”weekly” gör. DokumentationsförĂ€ndring brukar pĂ„stĂ„s; hĂ€r rĂ€knas den, frĂ„n det repositorys versionshistorik:

mÀtt över de senaste 26 veckornavÀrde
commits som rör de 23 dokumenten40
av dessa, Àndringar i ett dokument som redan fanns21
distinkta kalenderveckor med minst en Àndring11
commits som rör produktens anvÀndarvÀnda textkatalog under dess 8 veckors liv157
kalenderveckor av dessa 8 dÀr den Àndrades8

Dokumenten rör sig ungefĂ€r varannan vecka. De anvĂ€ndarsynliga strĂ€ngarna — vilket Ă€r vad en supportdesk faktiskt fĂ„r frĂ„gor om — rörde sig varje vecka de har funnits, med ungefĂ€r tjugo commits i veckan. Vilken vĂ€g vi Ă€n vĂ€ljer mĂ„ste överleva det, och ”hur ofta Ă€ndras det du trĂ€nade pĂ„?” visar sig ha en siffra i ditt eget repository snarare Ă€n en Ă„sikt.

Tjugo realistiska supportfrÄgor skrevs mot denna corpus, en per Àmne, och varje siffra nedan berÀknas över dessa tjugo.

Det enklaste som fungerar: lÀgg hela korpusen i system prompt, frÄgan pÄ slutet, och lÄt modellen hitta den.

one call, route oneTEXT
system instructions                       140 tokens
the 23 documents                       43,158 tokens
the question (median of 20 measured)       13 tokens
the answer (the one assumption)           150 tokens

Varje siffra dÀr rÀknades utom den sista: 150 output tokens Àr ett antagande, valt inom spannet av assistant-turer som Kapitel 16 fakturerade. Det Àr den enda siffran hÀr som inte kördes, den tillÀmpas identiskt pÄ alla tre vÀgar, och break-even-avsnittet visar exakt hur mycket slutsatsen rör sig nÀr du Àndrar den.

Med de priser som lĂ€stes frĂ„n leverantörens sida den 7 september 2026 — $1.50 per miljon input tokens, $9.00 per miljon output6 — blir det $0.066317 per frĂ„ga. Du betalar för att lĂ€sa om fyrtiotretusen tokens för att svara pĂ„ tretton.

Kapitel 16:s lösning gĂ€ller direkt: korpusen Ă€r stabil och den ligger lĂ€ngst fram, sĂ„ den Ă€r ett perfekt cache-prefix, och att lĂ€sa tillbaka den kostar en tiondel — $0.007864 per frĂ„ga, en sĂ€nkning pĂ„ 88 %. Kapitel 16:s varning gĂ€ller ocksĂ„, i den form som kapitlet flaggade och inte prissatte. Den hĂ€r leverantören tar ingen write-premie; den tar hyra. En explicit cache kostar $0.000001 per lagrad token per timme,6 sĂ„ att hĂ„lla 43,298 tokens varma kostar

43,298×$0.000001=$0.043298 per hour43{,}298 \times \$0.000001 = \$0.043298 \ \text{per hour}

oavsett om nĂ„gon frĂ„gar nĂ„got. Det Ă€r $189.78 över sex mĂ„nader, för ett tomt rum. Dela hyran med besparingen per frĂ„ga sĂ„ kommer villkoret ut pĂ„ en rad: caching av den hĂ€r korpusen betalar sig över 0.74 frĂ„gor i timmen — 546 i mĂ„naden nĂ€r den veckovisa cache-ombyggnaden ocksĂ„ rĂ€knas. Under det förlorar funktionen du slog pĂ„ för att spara pengar dem.

sex mÄnader, 100 frÄgor i mÄnadentotalt
hela korpusen, ingen cache$39.79
hela korpusen, cached$196.18

Samma vÀg, samma kod, en flagga, fem gÄnger fakturan. Kapitel 16 hittade en version av detta orsakad av en timestamp pÄ fel plats; hÀr Àr inget fel utom trafiken. En cache Àr ett vad pÄ volym, och hos den hÀr leverantören lÀgger du det per timme.

Kapitel 19:s retriever, oförÀndrad: klipp pÄ sektionsgrÀnser med en kontextuell header, indexera, lÀgg de fyra bÀsta utdragen i prompt. MÀtt över de tjugo frÄgorna:

the retrieval route, measuredTEXT
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 tokens

FyrtiotvĂ„ gĂ„nger fĂ€rre prompt tokens Ă€n vĂ€g ett, till $0.002906 per frĂ„ga. Indexet kostar $0.0070 att bygga vid $0.15 per miljon embedding tokens6 — mindre Ă€n tre frĂ„gors vĂ€rde — och samma $0.0070 att bygga om frĂ„n noll varje gĂ„ng dokumentationen Ă€ndras. Att bygga om hela indexet varje vecka i sex mĂ„nader kostar arton cent.

En sak Àr vÀrd att stanna vid. Retrieval förstör prompt caching. Det stabila prefixet Àr nu systeminstruktionen pÄ 140 tokens; frÄn token 141 skiljer sig prompt vid varje anrop, eftersom utdragen vÀljs per frÄga. Och 140 tokens ligger under varje cache-minimum Kapitel 16 citerade. SÄ vÀg tvÄ kan inte cached alls, vilket lÄter dÄligt och inte Àr det: att inte cached 1,037 tokens Àr billigare Àn att cached 43,298.

Det Àr en generell regel att bÀra med sig: de tvÄ stora teknikerna för token-besparing Àr ömsesidigt uteslutande pÄ samma innehÄll, och den som vinner Àr den som tar bort flest tokens. Retrieval tar bort 97,6 % av dem.

TrÀna pÄ tvÄhundra exempel i den egna stilen, och stÀll sedan frÄgor utan nÄgon dokumentation bifogad alls.

the fine-tuned route, measuredTEXT
training examples                            200
training tokens                           24,389
epochs                                         3
prompt per question (15 + 13)                 28

TrĂ€ning kostar 24,389 × 3 × $10.00 per miljon = $0.7317. Det Ă€r hela byggkostnaden, mindre Ă€n en kopp kaffe, vilket Ă€r exakt varför sĂ„ mĂ„nga team betalar den innan de kontrollerar om det hjĂ€lper.

Nu fĂ€llan, och den Ă€r skĂ€let till att det hĂ€r kapitlet finns. En fine-tuned model kostar inte samma som sin basmodell att köra. Prissidan sĂ€ger det i en mening: ”for model inference starting from Gemini 3, tuned model endpoint prediction price will be 1.5 times of the base model.”6 Inte trĂ€ningen. Inference, pĂ„ varje token, sĂ„ lĂ€nge modellen lever.

SÀtt det alltsÄ i en formel. LÄt pip_i och pop_o vara priserna för base input och output, mm tuned-multiplikatorn, LRL_R prompt-lÀngden för vÀgen du ersÀtter, LFL_F prompt-lÀngden efter fine-tuning och OO svarslÀngden. Fine-tuning Àr billigare per frÄga bara nÀr

LR  >  m LF  +  (m−1) O popiL_R \;>\; m\,L_F \;+\; \frac{(m-1)\,O\,p_o}{p_i}

Den första termen Ă€r uppenbar: din nya korta prompt, med pĂ„slag. Den andra Ă€r det inte, och det Ă€r dĂ€r pengarna hamnar — pĂ„slaget pĂ„ svaret, som inte har nĂ„got med din prompt att göra och som trĂ€ning inte kan korta. Med de uppmĂ€tta siffrorna — m=1.5m = 1.5, LF=28L_F = 28, O=150O = 150, po/pi=6p_o/p_i = 6 — Ă€r tröskeln

the break-even prompt lengthTEXT
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 tokens

Vid den uppmĂ€tta svarslĂ€ngden, 492 tokens — varav 450 Ă€r svarspĂ„slaget, inte prompt. Att ersĂ€tta en kortare prompt Ă€n sĂ„ Ă€r dyrare per frĂ„ga, för alltid, vid vilken volym som helst; och tröskeln vĂ€xer linjĂ€rt med hur mycket din assistant sĂ€ger, sĂ„ en som skriver lĂ„nga svar kan aldrig fine-tune sig fram till en billigare token oavsett hur mycket prompt den tar bort.

Samma faktum frÄn andra hÄllet Àr meningen att minnas. Av den fine-tuned vÀgens $0.002088 per frÄga Àr 97.0 % svaret. Fine-tuning optimerar de ÄterstÄende tre procenten.

Fyra siffror beskriver vilken som helst av dessa vÀgar: vad du betalar en gÄng, vad du betalar nÀr dokumentationen Àndras, vad du betalar per timme oavsett, och vad du betalar per frÄga. Det utökar Kapitel 16:s computeCost utan att Àndra den.

costsheet.tsTS
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);
}

Den tuned model Àr inte en annan prislista, det Àr samma multiplicerad:

the tuned endpoint is the base list times 1.5TS
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 })),   
});

Den dÀr markerade raden Àr hela föregÄende avsnitts argument skrivet som kod: multiplikatorn landar pÄ output ocksÄ.

Sex mÄnader, med dokumentationen uppdaterad varje vecka:

frÄgor / mÄnadprompt, cachedprompt, ingen cacheretrievalfine-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

Och skÀrningspunkterna, som Àr de fyra siffror en budget faktiskt behöver:

crossovers, six monthsTEXT
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 / month

LĂ€s de första tvĂ„ tillsammans, eftersom de Ă€r kapitlets poĂ€ng. En stationĂ€r corpus gör att fine-tuning betalar sig pĂ„ hundrafemtio frĂ„gor; en corpus som Ă€ndras varje vecka flyttar samma skĂ€rningspunkt med en faktor tjugosju, och inget med modellen Ă€ndrades — bara hur ofta du betalar för den igen. Byggkostnad Ă€r en fotnot; underhĂ„llskostnad Ă€r beslutet.

Om du nu drar slutsatsen att en upptagen supportdesk bör fine-tune, hÄller aritmetiken med dig. Det Àr fortfarande fel, och nÀsta avsnitt visar varför.

Kostnadsbladet har en kolumn det inte kan berÀkna, sÄ det hÀr avsnittet kör fine-tune: lokalt, pÄ en liten öppen model, med adaptern skriven för hand snarare Àn hÀmtad frÄn ett bibliotek. Kapitel 11 byggde LoRA; hÀr Àr den, pÄ q_proj och v_proj i alla 24 lager av Qwen2.5-0.5B-Instruct vid rank 8:

lora.py — the whole adapterPYTHON
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 y

De tvĂ„hundra trĂ€ningsexemplen kommer mekaniskt frĂ„n korpusen, sĂ„ de gĂ„r att reproducera: frĂ„gan Ă€r en sektionsrubrik omgjord till en frĂ„ga, svaret Ă€r sektionens egen text i en rigid intern stil — en rad som börjar med Short answer:, en rad som börjar med Source: med filvĂ€gen. Formatet Ă€r formen som lĂ€rs ut; vĂ€gen Ă€r faktumet. Sedan tvĂ„ siffror över tjugo undanhĂ„llna frĂ„gor: kommer svaret ut i den interna stilen, och namnger det filen som faktiskt besvarar frĂ„gan?

TvÄ baslinjer gör tabellen lÀsbar, och bÄda Àr Kapitel 4:s insisterande snarare Àn en eftertanke. Tio av de tjugo rÀtta svaren Àr samma fil, sÄ en model som ignorerar frÄgan och alltid svarar CLAUDE.md fÄr 10/20. Och retrievern har sitt eget tak: över dessa tjugo frÄgor innehÄller dess fyra utdrag rÀtt fil 14 gÄnger och rankar den först 7, sÄ 14/20 Àr det mesta nÄgon reader skulle kunna fÄ med den.

measuredTEXT
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 / 20

Formen lĂ€rdes in, fullstĂ€ndigt och snabbt. Noll till nitton av tjugo, frĂ„n en adapter med 540,672 parametrar — 0.109 % av modellen — pĂ„ fem minuters trĂ€ning pĂ„ en processor utan grafikkort i sikte.

Fakta gjorde det inte. Åtta av tjugo gĂ„r inte att skilja frĂ„n de tio du fĂ„r genom att ignorera frĂ„gan helt, och Kapitel 4:s intervall pĂ„ tjugo samples sĂ€ger det högt. De dĂ€r filvĂ€garna fanns i trĂ€ningsdata tre gĂ„nger om; det som kom ut var vanan att sluta med en plausibel Source:-rad. PĂ„ frĂ„gan överst i det hĂ€r kapitlet svarade den fine-tuned model Short answer: 10.x . . . och citerade CLAUDE.md. RĂ€tt svar, som finns i CLAUDE.md, Ă€r 18.17.0.

Och sedan gick formen sönder, vilket Ă€r raden som motiverar experimentet. Ge den fine-tuned model tusen tokens med hĂ€mtade utdrag — en prompt-form den aldrig sett, eftersom varje trĂ€ningsprompt var tjugoĂ„tta tokens — och den interna stilen kollapsar frĂ„n 19/20 till 1/20. PĂ„ frĂ„gan överst i det hĂ€r kapitlet svarar den 18.17.0 — korrekt, och utan nĂ„got av formatet den trĂ€nades för. Fine-tuning lĂ€rde alltsĂ„ inte ut ett format; den lĂ€rde ut ett format villkorat pĂ„ prompts i trĂ€ningsmĂ€ngden, och den första prompt som sĂ„g annorlunda ut tog formatet med sig. Det du fine-tunar pĂ„ blir den enda input distribution din model Ă€r bra pĂ„, och ingen lĂ€gger in det i kalkylbladet.

En sista notering om mĂ€tetalet, som pekar rakt pĂ„ Kapitel 29: ”korrekt kĂ€lla” poĂ€ngsĂ€tter form och fakta tillsammans, vilket Ă€r varför bĂ„da retrieval-raderna ser usla ut trots att bĂ„da modeller fick just den frĂ„gans fakta rĂ€tt. Ett end-to-end-tal dolde tre saker — en retriever pĂ„ 14/20 recall, en 0.5B reader och ett kĂ€llhĂ€nvisningsformat — och att vĂ€lja vad som ska fixas betyder att separera dem innan du mĂ€ter, inte efter.

Nu kolumnen leverantörerna fyller i Ät dig. En fine-tuned model Àr inte en tillgÄng du Àger; den Àr ett hyresavtal pÄ nÄgon annans basmodell, med ett slutdatum tryckt pÄ det. Den 7 september 2026 hade fine-tuning-avsnittet pÄ OpenAI:s prissida detta meddelande i sin helhet:

OpenAI avvecklar fine-tuning-plattformen. Plattformen Àr inte lÀngre tillgÀnglig för nya anvÀndare, men befintliga anvÀndare av fine-tuning-plattformen kommer att kunna skapa trÀningsjobb under de kommande mÄnaderna. Alla fine-tuned models kommer att förbli tillgÀngliga för inference tills deras basmodeller avvecklas.7

Tidslinjen Ă€r daterad pĂ„ dagen: 7 maj 2026, stĂ€ngd för organisationer som aldrig hade fine-tuned; 2 juli 2026, stĂ€ngd för dem som inte hade kört inference pĂ„ en fine-tuned model pĂ„ sextio dagar; 6 januari 2027, inga nya jobb alls.8 Samma sida schemalĂ€gger nedstĂ€ngningen av de fine-tuned models sjĂ€lva — ft-gpt-3.5-turbo, ft-gpt-4, ft-gpt-4.1-nano, ft-babbage-002, ft-davinci-002 — den 23 oktober 2026, var och en med en rekommenderad ersĂ€ttande basmodell, vilket Ă€r ett artigt sĂ€tt att sĂ€ga: trĂ€na den igen.

Den andra frontier-leverantören sÄlde aldrig hyresavtalet till dig. Anthropic:s dokumentationsindex listar 699 sidor och inte en enda handlar om fine-tuning; model-customisation-avsnitten pÄ Bedrock:s prissida tÀcker Amazon Nova, Amazon Titan, Cohere, Meta och OpenAI open-weight models, och ingen Claude.910 Om din arkitektur beror pÄ en fine-tune Àr en av de tre frontier-familjerna helt enkelt otillgÀnglig för dig oavsett budget.

Self-hosting ersĂ€tter hyresavtalet pĂ„ en model med ett hyresavtal pĂ„ en maskin, och AWS gör den aritmetiken pĂ„ sin egen sida: en model unit av provisioned throughput för en customized model, en mĂ„nads bindning, Ă€r ”1 model unit × $21.18 × 24 hours × 31 days = $15,757.92” i mĂ„naden.10 Att hyra metallen direkt Ă€r billigare och inte gratis — $3.99 per GPU-timme on demand för en H100, $1.99 preemptible11 — ungefĂ€r $2,900 i mĂ„naden för ett kort som mĂ„ste vara uppe oavsett om nĂ„gon frĂ„gar nĂ„got. Hela retrieval-vĂ€gen vid tiotusen frĂ„gor i mĂ„naden Ă€r $174.52 för sex mĂ„nader.

Det Ă€r hĂ€r LoRA förtjĂ€nar sin plats, som ett budgetargument snarare Ă€n ett tekniskt. MĂ€tt pĂ„ samma model Ă€r en rank-16 adapter över attention och feed-forward-lagren 8,798,208 parametrar — 1.781 % av modellen, 17.6 MB i bfloat16 — mot 0.988 GB basvikter, och dess optimiser och gradient state Ă€r 140.77 MB dĂ€r full fine-tuning behöver 7.90 GB, en faktor 56. Konsekvensen Ă€r inte billigare trĂ€ning utan att en laddad basmodell kan tjĂ€na mĂ„nga adapters, vilket Ă€r det enda sĂ€ttet en GPU:s fasta kostnad delas med nĂ„got. Managed training speglar det: $0.48 per miljon tokens low-rank upp till 16B mot $0.54 full, med ett minimum pĂ„ $4.00 per jobb.11 Det golvet Ă€r detaljen. Vid 24,389 tokens i tre epochs faktureras varje omtrĂ€ning pĂ„ denna corpus $4.00 snarare Ă€n de $0.04 den berĂ€knas till — $104 i minimikostnader över tjugosex veckokörningar, för nittioen cents aritmetik.

Vad integritet kostar, och varför distillation inte Àr ett fjÀrde alternativ

LÀnk till avsnittet: Vad integritet kostar, och varför distillation inte Àr ett fjÀrde alternativ

TvÄ kolumner till som bara syns pÄ fakturan.

Data residency kostar ungefĂ€r tio procent, och tvĂ„ leverantörer Ă€r överens om siffran. OpenAI tar ut ”a 10 % uplift” pĂ„ data-residency-endpoints för modeller slĂ€ppta den 5 mars 2026 eller senare;7 Vertex prissĂ€tter sina icke-globala endpoints till $1.65 mot $1.50, samma tio procent.6 StĂ€ll det mot de femtio procent en tuned endpoint kostar och folkloren vĂ€nds: residency Ă€r billigt och fine-tuning Ă€r det inte — och fine-tuning Ă€r Ă€ndĂ„ inte det privata alternativet, eftersom korpusen nĂ„r leverantören oavsett, en gĂ„ng vid trĂ€ning i stĂ€llet för en gĂ„ng per anrop.

Det mest explicita priset som nĂ„gonsin satts pĂ„ dina data finns pĂ„ samma sida, som listar en fine-tuned model tvĂ„ gĂ„nger: med data sharing aktiverat Ă€r inference exakt hĂ€lften — $2.00 mot $4.00 input, $8.00 mot $16.00 output.7 Att lĂ„ta leverantören behĂ„lla det du skickade Ă€r vĂ€rt 50 % rabatt, vilket sĂ€ger vad det Ă€r vĂ€rt för dem.

Distillation — att trĂ€na en liten egen model pĂ„ en stor models svar — erbjuds ofta som en vĂ€g ut ur bĂ„da. PrissĂ€tt det och det Ă€r det inte, eftersom lĂ€raren Ă€r systemet du försökte ersĂ€tta: att producera tvĂ„hundra trĂ€ningsexempel genom att stĂ€lla tvĂ„hundra frĂ„gor till retrieval-vĂ€gen kostar 200 × $0.002906 = $0.58, utöver $0.73 för att trĂ€na pĂ„ dem. Distillation Ă€r nĂ„got du gör efter att retrieval-pipelinen fungerar, för att göra den billigare, och den Ă€rver varje faktum som retrievern fick fel.

Pengar Àr den synliga halvan. Den andra kommer som vÀntan, med samma orsak som fakturan: modellen lÀser hela prompt innan den sÀger ett ord. Kapitel 13 mÀtte prefill mot decode pÄ en model du kunde röra; hÀr Àr samma mÀtning, en körning, en maskin, mot prompt-lÀngd:

prompt tokenstid till första tokenper token
28312 ms11.14 ms
1,0374,971 ms4.79 ms
4,09622,272 ms5.44 ms
8,19249,443 ms6.04 ms

De absoluta siffrorna hör till en 0.5B model pĂ„ sexton CPU-trĂ„dar och sĂ€ger inget om en hosted frontier model. Formen överförs exakt: prefill vĂ€xer med prompt-lĂ€ngd, och kostnaden per token kryper upp nĂ€r Kapitel 9:s kvadratiska term börjar synas — 4.79 ms vid tusen tokens mot 6.04 ms vid Ă„ttatusen, en 26 % straffkostnad för att bara vara lĂ€ngre.

Konsekvensen för de tre vĂ€garna Ă€r direkt. VĂ€g ett prefillar fyrtiotretusen tokens per frĂ„ga, och en cache hit Ă€r det som gör det uthĂ€rdligt — Kapitel 16 förklarade varför: en cache-lĂ€sning ersĂ€tter prefill-arbete, sĂ„ den köper latency och pengar i en transaktion. VĂ€g tvĂ„ prefillar tusen och lĂ€gger först till en round trip till indexet. VĂ€g tre prefillar tjugoĂ„tta och lĂ€gger inte till nĂ„got, vilket gör den mĂ€tbart snabbast av de tre pĂ„ att svara. Den svarar bara pĂ„ fel sak.

Tre misslyckanden som ser ut som model-problem och inte Ă€r det — tio minuter hĂ€r sparar en mĂ„nad senare:

Retrieval kan inte hÀmta det ingen skrev, och fine-tuning pÄ det lÀr bara modellen att lÄta sjÀlvsÀker. Om din vanligaste supportfrÄga inte besvaras nÄgonstans i korpusen Àr lösningen en teknisk skribent.

”Var Ă€r min bestĂ€llning?” Ă€r en database query, inte en kunskapsfrĂ„ga. Det Ă€r ett tool call — Kapitel 18 — och varken trĂ€ning eller retrieval ersĂ€tter det.

FrÄgan Àr tvetydig och grÀnssnittet döljer det

LÀnk till avsnittet: FrÄgan Àr tvetydig och grÀnssnittet döljer det

NÀr tvÄ produkter delar namn Àr det bÀsta möjliga svaret en begÀran om förtydligande. Det Àr ett produktbeslut om input, inte ett modelleringsbeslut om output.

Och kravet över alltihop: det hĂ€r beslutet kan inte fattas utan en evaluation set, och leverantören som sĂ€ljer fine-tune sĂ€ger det sjĂ€lv. OpenAI:s guide öppnar med ”Only invest in fine-tuning after setting up evals. You need a reliable way to determine whether your fine-tuned model is performing better than a base model”, och lĂ€gger till att om femtio bra exempel inte Ă€ndrar nĂ„got Ă€r problemet uppgiften eller prompt, inte datavolymen.1 Tjugo frĂ„gor, vilket Ă€r vad det hĂ€r kapitlet anvĂ€nde, visar en mekanism och kan inte vĂ€lja en leverantör — Kapitel 4 mĂ€tte varför, och vad du ska göra nĂ€r tjugo fall Ă€r allt du har — upprepa dem, para ihop dem och mĂ€t spridningen mellan körningar — Ă€r Kapitel 29.

Fyra kolumner, och bara den sista avgör:

promptretrievalfine-tune
vad den lÀr utallt du kan skriva nedfakta som förÀndrasform och beteende
byggkostnadnoll$0.0070 plus en eftermiddag$0.7317 plus en eval set
kostnad per frÄga$0.0079 cached, $0.0663 inte$0.0029$0.0021, över 492 prompt tokens
underhÄllskostnadnoll, eller $0.043 i timmen i hyra$0.0070 per ombyggnaden omtrÀning per Àndring, plus en per avvecklad basmodell

Regeln som faller ut ur det, och den Ă€r kort nog att behĂ„lla: börja med prompt; lĂ€gg till retrieval nĂ€r fakta rör sig; fine-tune bara nĂ€r du har mĂ€tt att det du fortfarande saknar Ă€r en form, inte ett faktum — och prissĂ€tt svaret, inte prompt, innan du gör det.

Den obekvÀma versionen, för alla som kom hit efter att redan ha bestÀmt sig: i det uppmÀtta fallet i det hÀr kapitlet Àr fine-tuning den billigaste vÀgen över fyratusen frÄgor i mÄnaden, och pÄ fakta kan den fortfarande inte slÄ att svara CLAUDE.md pÄ allt.

Varje pris hÀr har varit per token, och varje vÀg ett annat sÀtt att arrangera tokens. Det Àr pÄ vÀg att sluta vara sant.

Kapitel 21 lĂ€mnar text. En bild som gĂ„r in i en model Ă€r inte en string utan ett rutnĂ€t av patches med ett token-antal du inte valde; en talad minut faktureras per sekund hos en leverantör och per audio token hos en annan; syntetiskt tal sĂ€ljs per tecken, transkribering per minut, rĂ„ compute per GPU-sekund. FrĂ„gan det hĂ€r kapitlet besvarade med en kostnadsfunktion — vilket Ă€r billigare? — kan inte ens stĂ€llas förrĂ€n enheterna matchar, och ingen kalkylator pĂ„ internet normaliserar dem.

Det Àr ocksÄ dÀr trÀning dyker upp igen: en image adapter med ett trigger word, och en röst klonad frÄn ett sample. Vilket vÀcker frÄgan nÀsta kapitel öppnar med, och den Àr inte retorisk: om fine-tuning av en language model nÀstan alltid Àr fel köp, varför Àr fine-tuning av en image model nÀstan alltid rÀtt?


Varje pris, tröskel och multiplikator i det hĂ€r kapitlet lĂ€stes frĂ„n leverantörens egen sida den 7 september 2026 och citeras med det datumet, eftersom alla kommer att röra sig. De uppmĂ€tta siffrorna — token-rĂ€kningar, chunk-storlekar, retrieval-storlekar, training loss, poĂ€ng, latencies och versionshistorikrĂ€kningar — producerades pĂ„ en maskin samma dag och kan reproduceras frĂ„n korpusen som beskrivs ovan.

De lokala experimenten anvÀnde Qwen/Qwen2.5-0.5B-Instruct med greedy decoding, sÄ de reproduceras exakt; adaptern Àr tolvradersklassen som trycktes ovan, vid rank 8 över q_proj och v_proj. Korpusen Àr den spÄrade Markdown-dokumentationen i ett fungerande mjukvaru-repository, exklusive tvÄ append-only-loggar, och dess förÀndringstakt rÀknades frÄn det repositoryts versionshistorik.

  1. OpenAI, Supervised fine-tuning, developers.openai.com/api/docs/guides/supervised-fine-tuning, och Model optimization, .../guides/model-optimization, bĂ„da Ă„tkomna 2026-09-07. KĂ€lla till: tabellen över vad supervised fine-tuning Ă€r bĂ€st för (klassificering, nyanserad översĂ€ttning, att generera innehĂ„ll i ett specifikt format, att korrigera misslyckanden i instruktionsefterlevnad); de fyra pĂ„stĂ„dda fördelarna inklusive kortare prompts och lĂ€gre latency; minimum pĂ„ 10 trĂ€ningsexempel och rekommendationen att börja med 50; och ”Only invest in fine-tuning after setting up evals.” ↩ ↩2

  2. Zhou, C. et al. LIMA: Less Is More for Alignment. arXiv:2305.11206 (2023). Superficial Alignment Hypothesis — kunskap kommer frĂ„n pretraining, alignment lĂ€r vilket format modellen ska tala i — och skĂ€let till att tusen kurerade exempel rĂ€ckte. ↩

  3. Brown, T. et al. Language Models are Few-Shot Learners. arXiv:2005.14165 (2020). KĂ€llan till in-context learning som den Ă€rliga baslinjen: uppgiften demonstreras inne i prompt och ingen vikt uppdateras. ↩

  4. Ovadia, O., Brief, M., Mishaeli, M. and Elisha, O. Fine-Tuning or Retrieval? Comparing Knowledge Injection in LLMs. arXiv:2312.05934 (2023). Retrieval slog unsupervised fine-tuning för att injicera kunskap, Ă€ven pĂ„ fakta som redan setts i pretraining. ↩

  5. Gekhman, Z. et al. Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations? arXiv:2405.05904 (2024). Exempel som introducerar ny kunskap anpassas lĂ„ngsamt, och att anpassa dem höjer hallucination pĂ„ orelaterade frĂ„gor. ↩

  6. Google, Vertex AI generative AI pricing, cloud.google.com/vertex-ai/generative-ai/pricing, Ă„tkommen 2026-09-07. Varje siffra i det hĂ€r kapitlets kostnadsblad: Gemini 3.5 Flash pĂ„ global endpoint till $1.50 per miljon input tokens, $0.15 cached input och $9.00 text output, med icke-globala endpoints 10 % högre; supervised fine-tuning av samma model till $0.01 per 1,000 training tokens, dĂ€r ”training tokens are calculated by the total number of tokens in your training dataset, multiplied by your number of epochs”; explicit context cache storage till $0.000001 per token per timme; Gemini Embedding input till $0.00015 per 1,000 tokens online; och noteringen att ”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

  7. OpenAI, Pricing, developers.openai.com/api/docs/pricing, Ă„tkommen 2026-09-07. KĂ€lla till avvecklingsmeddelandet som citeras i sin helhet, och till de aktuella textpriser som anvĂ€nds för cross-check: gpt-5.6-terra standard short context till $2.00 input, $0.20 cached input, $2.50 cache write och $12.00 output per miljon tokens, med batch-nivĂ„n pĂ„ hĂ€lften av varje. Sidan har tio fine-tuning-rader över sju basmodeller, och exakt en av dem faktureras per tid snarare Ă€n per tokens: reinforcement fine-tuning av o4-mini-2025-04-16 till $100.00 per training hour. Samma sida noterar ett 10 % pĂ„slag pĂ„ data-residency-endpoints för modeller slĂ€ppta den 5 mars 2026 eller senare. ↩ ↩2 ↩3

  8. OpenAI, Deprecations, developers.openai.com/api/docs/deprecations, Ă„tkommen 2026-09-07. KĂ€lla till tidslinjen för self-serve fine-tuning (7 maj 2026, 2 juli 2026, 6 januari 2027) och till nedstĂ€ngningen den 23 oktober 2026 av ft-gpt-3.5-turbo, ft-gpt-4, ft-gpt-4.1-nano-2025-04-14, ft-babbage-002 och ft-davinci-002, var och en listad med en rekommenderad ersĂ€ttande basmodell. ↩

  9. Anthropic, developer documentation index, platform.claude.com/llms.txt, Ă„tkommen 2026-09-07. 699 listade sidor, ingen av dem om fine-tuning; platform.claude.com/docs/en/build-with-claude/fine-tuning returnerar 404. ↩

  10. Amazon Web Services, Amazon Bedrock pricing, aws.amazon.com/bedrock/pricing/, Ă„tkommen 2026-09-07. KĂ€lla till model-customisation-avsnitten (Amazon Nova, Amazon Titan, Cohere, Meta, Qwen och OpenAI open-weight models — ingen Claude), till mĂ„nadsavgiften $1.95 för att lagra varje custom model, och till det citerade rĂ€kneexemplet: ”1 model unit × $21.18 × 24 hours × 31 days = $15,757.92”. ↩ ↩2

  11. Together AI, Pricing, together.ai/pricing, Ă„tkommen 2026-09-07. Fine-tuning per miljon tokens för modeller upp till 16B: $0.48 low-rank och $0.54 full för supervised fine-tuning, $1.20 och $1.35 för direct preference optimisation, med priset berĂ€knat som ”training dataset size × number of epochs” plus evaluation tokens och ”a minimum charge of $4.00” per jobb. GPU-kapacitet: $3.99 per GPU-timme on demand för HGX H100, $1.99 preemptible, $5.99 för H200. ↩ ↩2

Redo att lÄta LIA vÀlja Ät dig?

Bygg med alla AI-modeller pĂ„ ett stĂ€lle – kom igĂ„ng gratis i dag.