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Àg | skickade tokens | kostnad för ett svar |
|---|---|---|
| hela dokumentationen i prompt, ingen cache | 43,311 | $0.066317 |
| hela dokumentationen i prompt, cached | 43,311 | $0.007864 |
| de fyra bÀsta utdragen, hÀmtade | 1,037 | $0.002906 |
| en fine-tuned model, ingen dokumentation alls | 28 | $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.
FrÄgan stÀlls fel
LĂ€nk till avsnittet: FrĂ„gan stĂ€lls felâ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.
Fallet, och dokumentationen som inte stÄr still
LÀnk till avsnittet: Fallet, och dokumentationen som inte stÄr stillEtt 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:
documents 23
characters 159,223
words 22,194
tokens (o200k_base) 42,921
tokens with per-file headers 43,158Fyrtiotretusen 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 veckorna | vÀrde |
|---|---|
| commits som rör de 23 dokumenten | 40 |
| av dessa, Àndringar i ett dokument som redan fanns | 21 |
| distinkta kalenderveckor med minst en Àndring | 11 |
| commits som rör produktens anvÀndarvÀnda textkatalog under dess 8 veckors liv | 157 |
| kalenderveckor av dessa 8 dÀr den Àndrades | 8 |
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.
VĂ€g ett: skicka allt
LÀnk till avsnittet: VÀg ett: skicka alltDet enklaste som fungerar: lÀgg hela korpusen i system prompt, frÄgan pÄ slutet, och lÄt modellen hitta den.
system instructions 140 tokens
the 23 documents 43,158 tokens
the question (median of 20 measured) 13 tokens
the answer (the one assumption) 150 tokensVarje 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
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Änaden | totalt |
|---|---|
| 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.
VÀg tvÄ: skicka bara det som spelar roll
LÀnk till avsnittet: VÀg tvÄ: skicka bara det som spelar rollKapitel 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:
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 tokensFyrtiotvĂ„ 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.
VĂ€g tre: sluta skicka dokumentationen
LÀnk till avsnittet: VÀg tre: sluta skicka dokumentationenTrÀna pÄ tvÄhundra exempel i den egna stilen, och stÀll sedan frÄgor utan nÄgon dokumentation bifogad alls.
training examples 200
training tokens 24,389
epochs 3
prompt per question (15 + 13) 28TrÀ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 och vara priserna för base input och output, tuned-multiplikatorn, prompt-lÀngden för vÀgen du ersÀtter, prompt-lÀngden efter fine-tuning och svarslÀngden. Fine-tuning Àr billigare per frÄga bara nÀr
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 â , , , â Ă€r tröskeln
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 tokensVid 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.
Kostnadsbladet
LÀnk till avsnittet: KostnadsbladetFyra 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.
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:
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Änad | prompt, cached | prompt, ingen 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 |
Och skÀrningspunkterna, som Àr de fyra siffror en budget faktiskt behöver:
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 / monthLĂ€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.
Vad fine-tune faktiskt lÀrde sig
LÀnk till avsnittet: Vad fine-tune faktiskt lÀrde sigKostnadsbladet 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:
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 yDe 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.
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 / 20Formen 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.
Klockan du inte kontrollerar
LÀnk till avsnittet: Klockan du inte kontrollerarNu 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 alternativTvÄ 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.
Vad du betalar i latency
LÀnk till avsnittet: Vad du betalar i latencyPengar À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 tokens | tid till första token | per 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 |
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.
DÀr ingen av de tre Àr svaret
LĂ€nk till avsnittet: DĂ€r ingen av de tre Ă€r svaretTre misslyckanden som ser ut som model-problem och inte Ă€r det â tio minuter hĂ€r sparar en mĂ„nad senare:
Dokumentationen innehÄller inte svaret
LÀnk till avsnittet: Dokumentationen innehÄller inte svaretRetrieval 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.
Svaret behöver en ÄtgÀrd, inte en text
LĂ€nk till avsnittet: Svaret behöver en Ă„tgĂ€rd, inte en textâ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 detNÀ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.
Tabellen
LÀnk till avsnittet: TabellenFyra kolumner, och bara den sista avgör:
| prompt | retrieval | fine-tune | |
|---|---|---|---|
| vad den lÀr ut | allt du kan skriva ned | fakta som förÀndras | form och beteende |
| byggkostnad | noll | $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Ällskostnad | noll, eller $0.043 i timmen i hyra | $0.0070 per ombyggnad | en 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.
Vart detta gÄr hÀrnÀst
LÀnk till avsnittet: Vart detta gÄr hÀrnÀstVarje 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?
KĂ€llor och metod
LĂ€nk till avsnittet: KĂ€llor och metodVarje 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.
Referenser
LĂ€nk till avsnittet: Referenser-
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 -
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. â©
-
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. â©
-
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. â©
-
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. â©
-
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 -
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-terrastandard 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 avo4-mini-2025-04-16till $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 -
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 avft-gpt-3.5-turbo,ft-gpt-4,ft-gpt-4.1-nano-2025-04-14,ft-babbage-002ochft-davinci-002, var och en listad med en rekommenderad ersÀttande basmodell. ⩠-
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-tuningreturnerar 404. ⩠-
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 -
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