Fine-tuning, retrieval vai prompt? Päätös on taloudellinen
Sama tukikysymys kolmella tavalla ja hinnat loppuun asti. Fine-tuning voittaa vasta, kun poistettu prompt ylittää 492 tokenia.
Tällä sivulla
Tässä on yksi tukikysymys — mikä on tämän projektin odottama Node-minimiversio? — vastattuna neljällä tavalla samaa dokumentaatiota vasten ja hinnoiteltuna alusta loppuun.
| reitti | lähetetyt tokenit | yhden vastauksen hinta |
|---|---|---|
| koko dokumentaatio promptissa, ei cachea | 43,311 | $0.066317 |
| koko dokumentaatio promptissa, cached | 43,311 | $0.007864 |
| neljä parasta otetta, retrieved | 1,037 | $0.002906 |
| fine-tuned-malli, ei dokumentaatiota lainkaan | 28 | $0.002088 |
Fine-tune on halvin. Se on myös tässä ongelmassa väärä vastaus — ja molemmat voidaan näyttää samalla aritmetiikalla, ei mielipiteellä.
Jo kolme lukua taulukossa kumoaa neuvon, jota luet kaikkialla. Cachen kytkeminen päälle säästi 88 % per kysymys ja tekee sadalla kysymyksellä kuukaudessa samasta reitistä viisi kertaa kalliimman. Retrieval lähettää neljäkymmentäkaksi kertaa vähemmän tokeneita kuin cached prompt -reitti ja maksaa vain 2,7 kertaa vähemmän. Ja fine-tuned-malli, jonka prompt on pudonnut kahteenkymmeneenkahdeksaan tokeniin, säästää vain 28 % retrievaliin verrattuna — koska 97 % siitä, mistä se maksaa, on vastaus, eikä training lyhennä vastauksia.
Chapter 16 rakensi kustannusfunktion laskun lukemiseen. Tässä sama funktio päättää arkkitehtuurin.
Näytä lisätiedot
Mitä tämä luku tarvitsee aiemmista luvuista.
- Chapter 11 rakensi LoRA:n ja QLoRA:n tekniikkana: mikä low-rank adapter on ja miksi se kouluttaa kertaluokkia vähemmän parametreja. Tämä luku ei selitä sitä uudelleen, vaan ainoastaan hinnoittelee sen.
- Chapter 16 rakensi
computeCost, viisi laskutettavaa ämpäriä ja prefix-säännön prompt cachingille. Alla oleva kustannusarkki on sama funktio, johon on liitetty kolme reittiä. - Chapter 19 rakensi retrieverin: chunking kontekstuaalisella otsakkeella, hybridihaku, neljä otepaikkaa, viittaukset. Tämä luku käyttää sitä uudelleen ja mittaa, mitä sen ajaminen maksaa, ei miten se toimii.
Kaikki tässä on TypeScriptiä, koska kyse on tariffeista, aritmetiikasta ja kirjanpidosta, eikä tensorista ole näköpiirissä — yhtä poikkeusta lukuun ottamatta, joka ilmoitetaan siinä kohdassa: jotta saadaan selville, mitä fine-tuning todella opettaa, tämä luku fine-tunaa mallin, ja se osa on Pythonia.
Kysymys esitetään väärin
Linkki osioon: Kysymys esitetään väärin"Pitäisikö meidän tehdä fine-tuning?" kysytään ikään kuin se olisi kysymys mallista. Se on kysymys budjetista, muodossa johon mikään benchmark ei vastaa: mistä maksetaan kerran, mistä maksetaan per kysymys ja mistä maksetaan uudelleen aina, kun maailma liikkuu.
Kolme reittiä eivät myöskään ole kolme tapaa tehdä sama asia, ja toimittajat sanovat sen selvemmin kuin useimmat blogikirjoitukset. OpenAI:n oma taulukko siitä, mihin supervised fine-tuning on paras, listaa neljä käyttötapaa: luokittelu, vivahteikas käännös, sisällön tuottaminen tietyssä muodossa ja instruction-following-virheiden korjaaminen.1 Yksikään niistä ei ole "opettaa mallille jotain, mitä se ei tiedä". Hyödyn yhteenveto kuuluu, että "voit käyttää lyhyempiä prompteja, joissa on vähemmän esimerkkejä ja context dataa, mikä säästää token-kustannuksia skaalassa ja voi pienentää latenssia" — laskua koskeva argumentti yritykseltä, joka myy ominaisuutta.
Siis:
- Fine-tuning opettaa muotoa ja käyttäytymistä. Sävyä, formaattia, vastauksen rakennetta, rajaa jonka voit demonstroida mutta et kuvata. Vahvin julkaistu versio on LIMA:n Superficial Alignment Hypothesis: tieto tulee pretrainingista, alignment opettaa lähinnä, missä formaattien alijakaumassa puhutaan — siksi tuhat kuratoitua esimerkkiä riitti siellä.2
- Retrieval toimittaa muuttuvat faktat. Se on näistä kolmesta ainoa, jossa dokumentaatioon tehty muokkaus päätyy vastaukseen koskematta malliin.
- Prompting kattaa useimmat todelliset tapaukset, ja on rehellinen baseline. In-context learning on ollut oletus lähtien artikkelista Language Models are Few-Shot Learners: tehtävä demonstroidaan promptin sisällä eikä yksikään paino liiku.3
Kaksi mitattua artikkelia sulkee oven keskellä olevalta virheeltä. Ovadia kollegoineen vertasi tiedon injektointia unsupervised fine-tuningilla ja retrievalillä, ja retrieval voitti johdonmukaisesti, myös faktoissa jotka base model oli jo nähnyt pretrainingissa.4 Gekhman kollegoineen mittasi vahingon: uutta tietoa tuovat esimerkit sovittuvat hitaasti, ja kun malli lopulta sovittaa ne, sen hallucination-aste muiden kysymysten kohdalla nousee.5 Faktojen opettaminen fine-tuningilla ei vain epäonnistu; se heikentää vastauksia, joita et kouluttanut.
Se puolikas on ratkaistu. Taloudellinen puolikas ei ole, ja siitä loppu luku kertoo.
Tapaus ja dokumentaatio, joka ei pysy paikallaan
Linkki osioon: Tapaus ja dokumentaatio, joka ei pysy paikallaanYksi tapaus, ajettuna kolmella tavalla: tekninen tuki oman dokumentaatiosi päällä, joka muuttuu joka viikko.
Korpus on todellinen ja tällä levyllä: 23 Markdown-dokumenttia, joita eräs toimiva ohjelmistorepository pitää sisäisenä dokumentaationa — build-opas, brand-säännöt, translation brief, kymmenen palvelukäsikirjaa, suorituskyky- ja tietoturvamuistiot. Mitattuna o200k_base:lla, Chapter 7:n encodingilla:
documents 23
characters 159,223
words 22,194
tokens (o200k_base) 42,921
tokens with per-file headers 43,158Neljäkymmentäkolme tuhatta tokenia on mukava koko tätä päätöstä varten: se mahtuu mihin tahansa moderniin ikkunaan, joten kaikki kolme reittiä ovat aidosti käytettävissä. Kymmenessä miljoonassa päätös on tehty puolestasi, ja se on retrieval.
Nyt se työ, jonka sana "weekly" tekee. Dokumentaation churn yleensä väitetään; tässä se lasketaan kyseisen repositoryn versiohistoriasta:
| mitattu viimeisten 26 viikon ajalta | arvo |
|---|---|
| commitit, jotka koskivat 23 dokumenttia | 40 |
| niistä muokkauksia jo olemassa olleeseen dokumenttiin | 21 |
| erilliset kalenteriviikot, joilla oli vähintään yksi muutos | 11 |
| commitit, jotka koskivat tuotteen käyttäjälle näkyvää tekstikatalogia sen 8 elinviikon aikana | 157 |
| kalenteriviikot näistä 8:sta, joina se muuttui | 8 |
Dokumentit liikkuvat noin joka toinen viikko. Käyttäjälle näkyvät merkkijonot — joista tukipisteeltä oikeasti kysytään — liikkuivat jokaisena olemassaoloviikkonaan, noin kahdenkymmenen commitin viikkovauhdilla. Minkä reitin valitsemmekin, sen täytyy kestää tämä, ja "kuinka usein se asia muuttuu, jolla koulutit?" osoittautuu luvuksi omassa repositoryssasi, ei mielipiteeksi.
Tätä korpusta vasten kirjoitettiin kaksikymmentä realistista tukikysymystä, yksi per aihe, ja jokainen alla oleva luku lasketaan näiden kahdenkymmenen yli.
Reitti yksi: lähetä kaikki
Linkki osioon: Reitti yksi: lähetä kaikkiYksinkertaisin toimiva ratkaisu: laita koko korpus system promptiin, kysymys loppuun, ja anna mallin löytää se.
system instructions 140 tokens
the 23 documents 43,158 tokens
the question (median of 20 measured) 13 tokens
the answer (the one assumption) 150 tokensJokainen luku tuossa laskettiin viimeistä lukuun ottamatta: 150 output tokenia on oletus, valittu Chapter 16:n laskuttamien assistant-vuorojen vaihteluvälin sisältä. Se on ainoa tässä oleva luku, jota ei ajettu, sitä sovelletaan identtisesti kaikkiin kolmeen reittiin, ja break-even-osio näyttää täsmälleen, kuinka paljon johtopäätös liikkuu, kun muutat sitä.
Palveluntarjoajan sivulta 7. syyskuuta 2026 luetuilla hinnoilla — $1.50 per miljoona input tokenia, $9.00 per miljoona output6 — se on $0.066317 per kysymys. Maksat siitä, että neljäkymmentäkolme tuhatta tokenia luetaan uudelleen kolmentoista tokenin vastauksen antamiseksi.
Chapter 16:n korjaus pätee suoraan: korpus on vakaa ja edessä, joten se on täydellinen cache prefix, ja sen lukeminen takaisin maksaa kymmenesosan — $0.007864 per kysymys, 88 % leikkaus. Chapter 16:n varoitus pätee myös siinä muodossa, jonka kyseinen luku merkitsi mutta ei hinnoitellut. Tämä palveluntarjoaja ei veloita write premiumia; se veloittaa vuokraa. Explicit cache maksaa $0.000001 per tallennettu token per tunti,6 joten 43,298 tokenin pitäminen lämpimänä maksaa
kysyy kukaan mitään tai ei. Se on $189.78 kuuden kuukauden aikana tyhjästä huoneesta. Jaa vuokra säästöllä per kysymys, ja ehto saadaan yhdellä rivillä: tämän korpuksen caching maksaa itsensä takaisin yli 0,74 kysymyksen tuntivauhdilla — 546 kuukaudessa, kun viikoittainen cache rebuild lasketaan mukaan. Sen alle ominaisuus, jonka otit käyttöön säästääksesi rahaa, menettää sitä.
| kuusi kuukautta, 100 kysymystä kuukaudessa | yhteensä |
|---|---|
| koko korpus, ei cachea | $39.79 |
| koko korpus, cached | $196.18 |
Sama reitti, sama koodi, yksi flag, viisinkertainen lasku. Chapter 16 löysi version tästä väärässä paikassa olevasta timestampista; tässä mikään ei ole pielessä paitsi liikenne. Cache on veto volyymin puolesta, ja tällä palveluntarjoajalla asetat sen tunnin tarkkuudella.
Reitti kaksi: lähetä vain olennainen
Linkki osioon: Reitti kaksi: lähetä vain olennainenChapter 19:n retriever, muuttamattomana: leikkaa osiorajoilla kontekstuaalisen otsakkeen kanssa, indeksoi, laita neljä parasta otetta promptiin. Mitattuna kahdenkymmenen kysymyksen yli:
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 tokensNeljäkymmentäkaksi kertaa vähemmän prompt tokeneita kuin reitillä yksi, hinnalla $0.002906 per kysymys. Indeksin rakentaminen maksaa $0.0070 hinnalla $0.15 per miljoona embedding tokenia6 — vähemmän kuin kolmen kysymyksen verran — ja samat $0.0070 sen rakentamisesta alusta joka kerta, kun dokumentaatio muuttuu. Koko indeksin uudelleenrakentaminen joka viikko kuuden kuukauden ajan maksaa kahdeksantoista senttiä.
Yhden asian kohdalla kannattaa pysähtyä. Retrieval tuhoaa prompt cachingin. Vakaa prefix on nyt 140-tokenin system instruction; tokenista 141 alkaen prompt eroaa jokaisella kutsulla, koska otteet valitaan kysymyksen mukaan. Ja 140 tokenia on alle jokaisen cache-minimin, jonka Chapter 16 lainasi. Siksi reittiä kaksi ei voi cachettaa lainkaan, mikä kuulostaa huonolta mutta ei ole: 1,037 tokenin cachettamatta jättäminen on halvempaa kuin 43,298 tokenin cachettaminen.
Se on yleinen sääntö mukaan otettavaksi: kaksi suurta token-säästötekniikkaa ovat toisiaan poissulkevia saman sisällön kohdalla, ja voittaja on se, joka poistaa enemmän tokeneita. Retrieval poistaa niistä 97,6 %.
Reitti kolme: lopeta dokumentaation lähettäminen
Linkki osioon: Reitti kolme: lopeta dokumentaation lähettäminenKouluta kahdellasadalla esimerkillä talon tyyliin, kysy sitten kysymykset ilman mitään liitettyä dokumentaatiota.
training examples 200
training tokens 24,389
epochs 3
prompt per question (15 + 13) 28Training maksaa 24,389 × 3 × $10.00 per miljoona = $0.7317. Se on koko rakennuskustannus, vähemmän kuin kuppi kahvia, mikä on täsmälleen syy siihen, miksi niin moni tiimi maksaa sen ennen kuin tarkistaa, auttaako se.
Nyt ansa, ja se on tämän luvun olemassaolon syy. Fine-tuned-mallin ajaminen ei maksa samaa kuin sen base model. Hinnoittelusivu sanoo sen yhdessä lauseessa: "for model inference starting from Gemini 3, tuned model endpoint prediction price will be 1.5 times of the base model."6 Ei training. Inference, jokaisesta tokenista, niin kauan kuin malli elää.
Laita se siis kaavaan. Olkoot ja base input- ja output-hinnat, tuned-kerroin, korvattavan reitin promptin pituus, promptin pituus fine-tuningin jälkeen, ja vastauksen pituus. Fine-tuning on halvempi per kysymys vain kun
Ensimmäinen termi on ilmeinen: uusi lyhyt promptisi, lisähinnalla. Toinen ei ole, ja sinne raha menee — lisämaksu vastauksesta, jolla ei ole mitään tekemistä promptisi kanssa ja jota training ei voi lyhentää. Mitatuilla luvuilla — , , , — kynnys on
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 tokensMitattulla vastauspituudella 492 tokenia — joista 450 on vastauksen lisämaksua, ei promptia. Sitä lyhyemmän promptin korvaaminen on kalliimpaa per kysymys ikuisesti, millä tahansa volyymilla; ja kynnys kasvaa lineaarisesti sen mukaan, kuinka paljon assistant puhuu, joten pitkiä vastauksia kirjoittava assistant ei voi koskaan fine-tunata tietään halvempaan tokeniin riippumatta siitä, kuinka paljon promptia se poistaa.
Sama tosiasia toisesta päästä on lause, joka kannattaa muistaa. Fine-tuned-reitin $0.002088 kysymyskohtaisesta hinnasta 97,0 % on vastaus. Fine-tuning optimoi jäljelle jäävää kolmea prosenttia.
Kustannusarkki
Linkki osioon: KustannusarkkiNeljä lukua kuvaa mitä tahansa näistä reiteistä: mitä maksat kerran, mitä maksat kun dokumentaatio muuttuu, mitä maksat tunneittain riippumatta mistään, ja mitä maksat per kysymys. Se laajentaa Chapter 16:n computeCost:ta muuttamatta sitä.
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);
}Tuned-malli ei ole eri hinnasto, se on sama hinnasto kerrottuna:
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 })),
});Tuo yksi korostettu rivi on edellisen osion koko argumentti koodina: kerroin osuu myös output:iin.
Kuusi kuukautta, dokumentaatio päivitettynä viikoittain:
| kysymyksiä / kk | prompt, cached | prompt, ei cachea | 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 |
Ja crossoverit, jotka ovat ne neljä lukua joita budjetti oikeasti tarvitsee:
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 / monthLue kaksi ensimmäistä yhdessä, koska ne ovat luvun ydin. Paikallaan pysyvä korpus saa fine-tuningin maksamaan itsensä takaisin sadassaviidessäkymmenessä kysymyksessä; viikoittain muuttuva korpus siirtää saman crossoverin kaksikymmentäseitsemänkertaiseksi, eikä mikään mallissa muuttunut — vain se, kuinka usein maksat siitä uudelleen. Rakennuskustannus on alaviite; ylläpitokustannus on päätös.
Jos päättelet nyt, että kiireisen tukipisteen kannattaa tehdä fine-tuning, aritmetiikka on samaa mieltä. Se on silti väärin, ja seuraava osio kertoo miksi.
Mitä fine-tune todella oppi
Linkki osioon: Mitä fine-tune todella oppiKustannusarkissa on yksi sarake, jota se ei voi laskea, joten tämä osio ajaa fine-tunen: paikallisesti, pienellä avoimella mallilla, adapter käsin kirjoitettuna eikä kirjastosta vedettynä. Chapter 11 rakensi LoRA:n; tässä se on q_proj:lla ja v_proj:lla kaikissa Qwen2.5-0.5B-Instruct:n 24 kerroksessa rankilla 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 yKaksisataa training-esimerkkiä tulevat mekaanisesti korpuksesta, joten ne toistuvat: kysymys on kysymykseksi muutettu osio-otsikko, vastaus on kyseisen osion oma teksti jäykässä talon tyylissä — yksi rivi alkaa Short answer:, yksi rivi alkaa Source: ja mukana on tiedostopolku. Formaatti on opetettava muoto; polku on fakta. Sitten kaksi lukua kahdenkymmenen held-out-kysymyksen yli: tuleeko vastaus talon tyyliin, ja nimeääkö se tiedoston, joka todella vastaa kysymykseen?
Kaksi baselinea tekee taulukosta luettavan, ja molemmat ovat Chapter 4:n vaatimus eivätkä jälkiajatus. Kymmenen kahdestakymmenestä oikeasta vastauksesta on sama tiedosto, joten malli, joka sivuuttaa kysymyksen ja vastaa aina CLAUDE.md, saa tuloksen 10/20. Ja retrieverillä on oma kattonsa: näiden kahdenkymmenen kysymyksen yli sen neljä otetta sisältävät oikean tiedoston 14 kertaa ja rankkaavat sen ensimmäiseksi 7 kertaa, joten 14/20 on enimmäistulos, jonka mikään sitä käyttävä reader voisi saada.
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 / 20Muoto opittiin, täysin ja nopeasti. Nollasta yhdeksääntoista kahdestakymmenestä, 540,672-parametrisella adapterilla — 0,109 % mallista — viidessä minuutissa trainingia prosessorilla ilman näköpiirissä olevaa näytönohjainta.
Faktoja ei opittu. Kahdeksan kahdestakymmenestä ei erotu kymmenestä, jonka saat sivuuttamalla kysymyksen kokonaan, ja Chapter 4:n intervalli kahdellakymmenellä näytteellä sanoo sen ääneen. Nuo tiedostopolut olivat training datassa kolmeen kertaan; ulos tuli tapa päättää vastaus uskottavan näköiseen Source:-riviin. Kun siltä kysyttiin tämän luvun alussa oleva kysymys, fine-tuned-malli vastasi Short answer: 10.x . . . ja viittasi CLAUDE.md:een. Oikea vastaus, joka on CLAUDE.md:ssa, on 18.17.0.
Ja sitten muoto hajosi, mikä on rivi joka oikeuttaa kokeen. Anna fine-tuned-mallille tuhat tokenia retrieved-otteita — promptin muoto, jota se ei koskaan nähnyt, koska jokainen training prompt oli kaksikymmentäkahdeksan tokenia — ja talon tyyli romahtaa tuloksesta 19/20 tulokseen 1/20. Tämän luvun alussa olevaan kysymykseen se vastaa 18.17.0 — oikein, mutta ilman mitään siitä formaatista, jota varten se koulutettiin. Fine-tuning ei siis opettanut formaattia; se opetti formaatin ehdollisena training setin prompteille, ja ensimmäinen erilaiselta näyttänyt prompt vei formaatin mukanaan. Se, mihin teet fine-tuningin, muuttuu ainoaksi input distributioniksi, jossa mallisi on hyvä, eikä kukaan laita sitä laskentataulukkoon.
Viimeinen huomio metriikasta, suoraan kohti Chapter 29: "correct source" pisteyttää muodon ja faktan yhdessä, minkä vuoksi molemmat retrieval-rivit näyttävät kamalilta, vaikka molemmat mallit saivat kyseisen kysymyksen faktan oikein. Yksi end-to-end-luku piilotti kolme asiaa — retrieverin 14/20 recallin, 0.5B readerin ja viittausformaatin — ja sen valitseminen, mitä korjataan, tarkoittaa niiden erottamista ennen mittaamista, ei sen jälkeen.
Kello, jota et hallitse
Linkki osioon: Kello, jota et hallitseNyt sarake, jonka toimittajat täyttävät puolestasi. Fine-tuned-malli ei ole omistamasi omaisuus; se on vuokrasopimus jonkun toisen base modeliin, ja siihen on painettu päättymispäivä. 7. syyskuuta 2026 OpenAI:n hinnoittelusivun fine-tuning-osiossa oli tämä ilmoitus kokonaisuudessaan:
OpenAI is winding down the fine-tuning platform. The platform is no longer accessible to new users, but existing users of the fine-tuning platform will be able to create training jobs for the coming months. All fine-tuned models will remain available for inference until their base models are deprecated.7
Aikajana on päivätty päivän tarkkuudella: 7. toukokuuta 2026 suljettu organisaatioilta, jotka eivät olleet koskaan fine-tunanneet; 2. heinäkuuta 2026 suljettu niiltä, jotka eivät olleet ajaneet inferenceä fine-tuned-mallilla kuuteenkymmeneen päivään; 6. tammikuuta 2027 ei enää uusia jobeja lainkaan.8 Sama sivu aikatauluttaa itse fine-tuned-mallien alasajon — ft-gpt-3.5-turbo, ft-gpt-4, ft-gpt-4.1-nano, ft-babbage-002, ft-davinci-002 — 23. lokakuuta 2026, jokaisella mukana recommended replacement base model, joka on kohtelias tapa sanoa: kouluta se uudelleen.
Toinen frontier-toimittaja ei koskaan myynyt sinulle vuokrasopimusta. Anthropicin dokumentaatioindeksi listaa 699 sivua, eikä yksikään koske fine-tuningia; Bedrockin hinnoittelusivun model-customisation-osiot kattavat Amazon Novan, Amazon Titanin, Cohere:n, Meta:n ja OpenAI:n open-weight-mallit, mutta eivät Claudea.910 Jos arkkitehtuurisi riippuu fine-tunesta, yksi kolmesta frontier-perheestä ei yksinkertaisesti ole käytettävissä millään budjetilla.
Self-hosting korvaa mallin vuokrasopimuksen koneen vuokrasopimuksella, ja AWS tekee tämän aritmetiikan omalla sivullaan: yksi model unit provisioned throughputia customised-mallille, yhden kuukauden sitoumus, on "1 model unit × $21.18 × 24 hours × 31 days = $15,757.92" kuukaudessa.10 Metallin vuokraaminen suoraan on halvempaa eikä ilmaista — $3.99 per GPU-tunti on demand H100:lle, $1.99 preemptible11 — noin $2,900 kuukaudessa yhdestä kortista, jonka täytyy olla päällä kysyy kukaan mitään tai ei. Koko retrieval-reitti kymmenellätuhannella kysymyksellä kuukaudessa on $174.52 kuudelta kuukaudelta.
Tässä LoRA ansaitsee paikkansa budjettiargumenttina, ei teknisenä argumenttina. Samalla mallilla mitattuna rank-16-adapter attentionin ja feed-forward-kerrosten yli on 8,798,208 parametria — 1,781 % mallista, 17,6 MB bfloat16:ssa — verrattuna 0,988 GB:n base weightseihin, ja sen optimiser- ja gradient-tila on 140,77 MB, kun full fine-tuning tarvitsee 7,90 GB, kerroin 56. Seuraus ei ole halvempi training vaan se, että yksi ladattu base model voi palvella monia adaptereita, mikä on ainoa tapa jakaa GPU:n kiinteä kustannus millään. Managed training heijastaa sitä: $0.48 per miljoona tokenia low-rank jopa 16B:hen asti vastaan $0.54 full, $4.00 minimillä per job.11 Tuo lattia on yksityiskohta. 24,389 tokenilla kolmelle epochille jokainen retraining tällä korpuksella laskutetaan $4.00 eikä laskennallisella $0.04:llä — $104 minimejä kahdenkymmenenkuuden viikoittaisen ajon aikana, yhdeksänkymmenenyhden sentin aritmetiikasta.
Mitä yksityisyys maksaa, ja miksi distillation ei ole neljäs vaihtoehto
Linkki osioon: Mitä yksityisyys maksaa, ja miksi distillation ei ole neljäs vaihtoehtoKaksi lisäsaraketta, jotka näkyvät vain laskulla.
Data residency maksaa noin kymmenen prosenttia, ja kaksi palveluntarjoajaa on samaa mieltä luvusta. OpenAI veloittaa "a 10 % uplift" data-residency-endpointeista malleille, jotka on julkaistu 5. maaliskuuta 2026 tai sen jälkeen;7 Vertex hinnoittelee non-global-endpointtinsa $1.65:een verrattuna $1.50:een, sama kymmenen prosenttia.6 Aseta se tuned-endpointin viittäkymmentä prosenttia vastaan ja folklore kääntyy: residency on halpaa eikä fine-tuning ole — eikä fine-tuning ole yksityinen vaihtoehto muutenkaan, koska korpus päätyy palveluntarjoajalle joka tapauksessa, kerran training-aikana eikä kerran per kutsu.
Selkein hinta, joka datallesi on koskaan asetettu, on samalla sivulla, joka listaa yhden fine-tuned-mallin kahdesti: data sharing käytössä inference on täsmälleen puolet — $2.00 vastaan $4.00 input, $8.00 vastaan $16.00 output.7 Se, että annat palveluntarjoajan pitää lähettämäsi, on 50 % alennuksen arvoista, mikä kertoo mitä se on heille arvoista.
Distillation — oman pienen mallin kouluttaminen suuren mallin vastauksilla — tarjotaan yleensä ulospääsyksi molemmista. Hinnoittele se, eikä se ole sitä, koska teacher on järjestelmä, jota yritit korvata: kahdensadan training-esimerkin tuottaminen kysymällä retrieval-reitiltä kaksisataa kysymystä maksaa 200 × $0.002906 = $0.58, sen $0.73:n päälle, jolla ne koulutetaan. Distillation on jotain, mitä teet sen jälkeen kun retrieval pipeline toimii, jotta siitä tulee halvempi, ja se perii jokaisen faktan, jonka retriever sai väärin.
Mitä maksat latenssissa
Linkki osioon: Mitä maksat latenssissaRaha on näkyvä puolikas. Toinen saapuu odotuksena, samasta syystä kuin lasku: malli lukee koko promptin ennen kuin se sanoo sanaakaan. Chapter 13 mittasi prefillin decodea vasten mallilla, jota pystyi koskettamaan; tässä sama mittaus, yksi ajo, yksi kone, promptin pituutta vasten:
| prompt tokenit | aika ensimmäiseen tokeniin | 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 |
Absoluuttiset luvut kuuluvat 0.5B-mallille kuudellatoista CPU-säikeellä eivätkä sano mitään hosted frontier -mallista. Muoto siirtyy täsmälleen: prefill kasvaa promptin pituuden mukana, ja kustannus per token hiipii ylöspäin, kun Chapter 9:n neliöllinen termi alkaa näkyä — 4.79 ms tuhannella tokenilla vastaan 6.04 ms kahdeksalla tuhannella, 26 % rangaistus pelkästä pidemmyydestä.
Seuraus kolmelle reitille on suora. Reitti yksi prefillaa neljäkymmentäkolme tuhatta tokenia per kysymys, ja cache hit tekee siitä siedettävän — Chapter 16 selitti miksi: cache-luku korvaa prefill-työn, joten se ostaa latenssia ja rahaa yhdellä transaktiolla. Reitti kaksi prefillaa tuhat ja lisää ensin round tripin indeksiin. Reitti kolme prefillaa kaksikymmentäkahdeksan eikä lisää mitään, mikä tekee siitä mitatusti nopeimman kolmesta vastaamaan. Se vain vastaa väärään asiaan.
Missä mikään kolmesta ei ole vastaus
Linkki osioon: Missä mikään kolmesta ei ole vastausKolme epäonnistumista, jotka näyttävät malliongelmilta mutta eivät ole — kymmenen minuuttia tässä säästää kuukauden myöhemmin:
Dokumentaatio ei sisällä vastausta
Linkki osioon: Dokumentaatio ei sisällä vastaustaRetrieval ei voi hakea sitä, mitä kukaan ei kirjoittanut, ja fine-tuning sillä vain opettaa mallin kuulostamaan varmalta. Jos tärkeimpään tukikysymykseesi ei vastata missään korpuksessa, korjaus on tekninen kirjoittaja.
Vastaus tarvitsee toiminnon, ei tekstiä
Linkki osioon: Vastaus tarvitsee toiminnon, ei tekstiä"Missä tilaukseni on?" on tietokantakysely, ei tietokysymys. Se on tool call — Chapter 18 — eikä training eikä retrieval korvaa sitä.
Kysymys on moniselitteinen ja käyttöliittymä piilottaa sen
Linkki osioon: Kysymys on moniselitteinen ja käyttöliittymä piilottaa senKun kahdella tuotteella on sama nimi, paras mahdollinen vastaus on tarkennuspyyntö. Se on tuotepäätös inputista, ei modelling-päätös outputista.
Ja vaatimus kaiken yli: tätä päätöstä ei voi tehdä ilman evaluation setiä, ja fine-tunen myyvä toimittaja sanoo sen. OpenAI:n opas alkaa lauseella "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", ja lisää, että jos viisikymmentä hyvää esimerkkiä ei muuta mitään, ongelma on tehtävässä tai promptissa, ei datan määrässä.1 Kaksikymmentä kysymystä, joita tämä luku käytti, näyttää mekanismin eikä voi valita toimittajaa — Chapter 4 mittasi miksi, ja mitä tehdä kun kaksikymmentä tapausta on kaikki mitä sinulla on — toista ne, parita ne ja mittaa hajonta ajojen välillä — on Chapter 29.
Taulukko
Linkki osioon: TaulukkoNeljä saraketta, ja vain viimeinen päättää:
| prompt | retrieval | fine-tune | |
|---|---|---|---|
| mitä se opettaa | mitä tahansa minkä voit kirjoittaa ylös | muuttuvat faktat | muoto ja käyttäytyminen |
| rakennuskustannus | nolla | $0.0070 plus iltapäivä | $0.7317 plus eval set |
| hinta per kysymys | $0.0079 cached, $0.0663 ei | $0.0029 | $0.0021, yli 492 prompt tokenin kohdalla |
| ylläpitokustannus | nolla, tai $0.043 tunnissa vuokraa | $0.0070 per rebuild | retraining per muutos, plus yksi per eläkkeelle jäänyt base model |
Siitä seuraava sääntö on tarpeeksi lyhyt pidettäväksi mielessä: aloita promptista; lisää retrieval, kun faktat liikkuvat; tee fine-tuning vain, kun olet mitannut, että sinulta vielä puuttuva asia on muoto, ei fakta — ja hinnoittele vastaus, ei prompt, ennen kuin teet sen.
Epämukava versio kaikille, jotka tulivat paikalle päätös jo tehtynä: tässä luvussa mitatussa tapauksessa fine-tuning on halvin reitti yli neljällä tuhannella kysymyksellä kuukaudessa, mutta faktoissa se ei silti pysty päihittämään sitä, että vastataan CLAUDE.md kaikkeen.
Mihin tämä jatkuu
Linkki osioon: Mihin tämä jatkuuJokainen hinta tässä on ollut per token, ja jokainen reitti erilainen tapa järjestää tokeneita. Tämä lakkaa pian olemasta totta.
Chapter 21 poistuu tekstistä. Malliin tuleva kuva ei ole string vaan ruudukko patcheja token-määrällä, jota et valinnut; puhuttu minuutti laskutetaan yhdellä toimittajalla sekunteina ja toisella audio tokenina; synteettinen puhe myydään merkeittäin, transcription minuuteittain, raaka compute GPU-sekunneittain. Kysymystä, johon tämä luku vastasi yhdellä kustannusfunktiolla — kumpi on halvempi? — ei voi edes esittää ennen kuin yksiköt täsmäävät, eikä mikään internetin laskin normalisoi niitä.
Siellä myös training ilmestyy uudelleen: image adapter trigger wordilla, ja näytteestä kloonattu ääni. Se nostaa kysymyksen, jolla seuraava luku alkaa, eikä se ole retorinen: jos language modelin fine-tuning on lähes aina väärä ostos, miksi image modelin fine-tuning on lähes aina oikea?
Lähteet ja menetelmä
Linkki osioon: Lähteet ja menetelmäJokainen tämän luvun hinta, kynnys ja kerroin luettiin palveluntarjoajan omalta sivulta 7. syyskuuta 2026 ja lainataan kyseisellä päivämäärällä, koska ne kaikki liikkuvat. Mitatut luvut — token-määrät, chunk-koot, retrieval-koot, training loss, pisteet, latenssit ja versiohistorian laskurit — tuotettiin yhdellä koneella samana päivänä ja ovat toistettavissa yllä kuvatusta korpuksesta.
Paikalliset kokeet käyttivät Qwen/Qwen2.5-0.5B-Instruct:ää greedy decodingilla, joten ne toistuvat täsmälleen; adapter on yllä tulostettu kaksitoistarivinen class, rankilla 8 q_proj:n ja v_proj:n yli. Korpus on yhden toimivan ohjelmistorepositoryn seurattu Markdown-dokumentaatio, pois lukien kaksi append-only-lokia, ja sen muutosvauhti laskettiin kyseisen repositoryn versiohistoriasta.
Viitteet
Linkki osioon: Viitteet-
OpenAI, Supervised fine-tuning,
developers.openai.com/api/docs/guides/supervised-fine-tuning, ja Model optimization,.../guides/model-optimization, molemmat katsottu 2026-09-07. Lähde seuraaville: taulukko siitä, mihin supervised fine-tuning sopii parhaiten (luokittelu, vivahteikas käännös, sisällön tuottaminen tietyssä muodossa, instruction-following-virheiden korjaaminen); neljä väitettyä hyötyä, mukaan lukien lyhyemmät promptit ja pienempi latenssi; 10 training-esimerkin minimi ja suositus aloittaa 50:llä; sekä "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 — tieto tulee pretrainingista, alignment opettaa missä formaatissa puhutaan — ja syy siihen, miksi tuhat kuratoitua esimerkkiä riitti. ↩
-
Brown, T. et al. Language Models are Few-Shot Learners. arXiv:2005.14165 (2020). In-context learningin lähde rehellisenä baselinena: tehtävä demonstroidaan promptin sisällä eikä yhtään painoa päivitetä. ↩
-
Ovadia, O., Brief, M., Mishaeli, M. and Elisha, O. Fine-Tuning or Retrieval? Comparing Knowledge Injection in LLMs. arXiv:2312.05934 (2023). Retrieval voitti unsupervised fine-tuningin tiedon injektoinnissa, myös faktoissa jotka oli jo nähty pretrainingissa. ↩
-
Gekhman, Z. et al. Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations? arXiv:2405.05904 (2024). Uutta tietoa tuovat esimerkit sovittuvat hitaasti, ja niiden sovittaminen nostaa hallucinationia aiheeseen liittymättömissä kysymyksissä. ↩
-
Google, Vertex AI generative AI pricing,
cloud.google.com/vertex-ai/generative-ai/pricing, katsottu 2026-09-07. Jokainen tämän luvun kustannusarkin luku: Gemini 3.5 Flash global endpointilla hinnalla $1.50 per miljoona input tokenia, $0.15 cached input ja $9.00 text output, non-global endpointit 10 % korkeammalla; saman mallin supervised fine-tuning hinnalla $0.01 per 1,000 training tokenia, jossa "training tokens are calculated by the total number of tokens in your training dataset, multiplied by your number of epochs"; explicit context cache storage hinnalla $0.000001 per token per tunti; Gemini Embedding input hinnalla $0.00015 per 1,000 tokenia online; ja huomio, että "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, katsottu 2026-09-07. Lähde kokonaan lainatulle alasajoilmoitukselle ja nykyisille tekstihinnoille, joita käytettiin ristiintarkistuksessa:gpt-5.6-terrastandard short context hinnalla $2.00 input, $0.20 cached input, $2.50 cache write ja $12.00 output per miljoona tokenia, batch-tason ollessa puolet kustakin. Sivulla on kymmenen fine-tuning-riviä seitsemän base modelin yli, ja täsmälleen yksi niistä laskutetaan ajalla eikä tokeneilla: reinforcement fine-tuning mallilleo4-mini-2025-04-16hinnalla $100.00 per training-tunti. Sama sivu mainitsee 10 % lisän data-residency-endpointeille malleille, jotka on julkaistu 5. maaliskuuta 2026 tai sen jälkeen. ↩ ↩2 ↩3 -
OpenAI, Deprecations,
developers.openai.com/api/docs/deprecations, katsottu 2026-09-07. Lähde self-serve fine-tuning -aikajanalle (7. toukokuuta 2026, 2. heinäkuuta 2026, 6. tammikuuta 2027) ja 23. lokakuuta 2026 tapahtuvaan mallienft-gpt-3.5-turbo,ft-gpt-4,ft-gpt-4.1-nano-2025-04-14,ft-babbage-002jaft-davinci-002alasajoon, jokainen listattuna suositellun replacement base modelin kanssa. ↩ -
Anthropic, developer documentation index,
platform.claude.com/llms.txt, katsottu 2026-09-07. 699 listattua sivua, yksikään niistä ei koske fine-tuningia;platform.claude.com/docs/en/build-with-claude/fine-tuningpalauttaa 404. ↩ -
Amazon Web Services, Amazon Bedrock pricing,
aws.amazon.com/bedrock/pricing/, katsottu 2026-09-07. Lähde model-customisation-osioille (Amazon Nova, Amazon Titan, Cohere, Meta, Qwen ja OpenAI open-weight -mallit — ei Claudea), $1.95 kuukausimaksulle jokaisen custom modelin tallentamisesta, ja lainatulle esimerkkilaskelmalle: "1 model unit × $21.18 × 24 hours × 31 days = $15,757.92". ↩ ↩2 -
Together AI, Pricing,
together.ai/pricing, katsottu 2026-09-07. Fine-tuning per miljoona tokenia jopa 16B-malleille: $0.48 low-rank ja $0.54 full supervised fine-tuningille, $1.20 ja $1.35 direct preference optimisationille, hinnan perustuessa "training dataset size × number of epochs" plus evaluation tokenit ja "a minimum charge of $4.00" per job. GPU-kapasiteetti: $3.99 per GPU-tunti on demand HGX H100:lle, $1.99 preemptible, $5.99 H200:lle. ↩ ↩2