Lewati ke konten
20/30Bab 20 dari 30

Fine-Tune, Retrieve, atau Prompt? Keputusannya Ekonomi

Pertanyaan dukungan yang sama dijawab tiga cara dan dihitung end-to-end. Fine-tuning menang hanya jika prompt yang dihapus melewati 492 token.

Di halaman ini

Ini satu pertanyaan dukungan — berapa versi Node minimum yang diharapkan proyek ini? — dijawab empat cara terhadap dokumentasi yang sama, dan dihitung biayanya end to end.

rutetoken dikirimbiaya satu jawaban
seluruh dokumentasi di prompt, tanpa cache43.311$0,066317
seluruh dokumentasi di prompt, cached43.311$0,007864
empat ekstrak terbaik, retrieved1.037$0,002906
model fine-tuned, tanpa dokumentasi sama sekali28$0,002088

Fine-tune adalah yang paling murah. Untuk masalah ini, itu juga jawaban yang salah — dan keduanya bisa ditunjukkan dengan aritmetika yang sama, bukan dengan opini.

Tiga angka di tabel itu sudah membantah saran yang akan kamu baca di mana-mana. Menyalakan cache menghemat 88 % per pertanyaan dan, pada seratus pertanyaan sebulan, membuat rute yang sama lima kali lebih mahal. Retrieval mengirim token empat puluh dua kali lebih sedikit daripada rute cached prompt dan biayanya hanya 2,7 kali lebih rendah. Dan model fine-tuned, dengan prompt dua puluh delapan token, hanya menghemat 28 % dibanding retrieval — karena 97 % dari biaya yang dibayarnya adalah jawaban, dan training tidak memperpendek jawaban.

Chapter 16 membangun fungsi biaya untuk membaca invoice. Di sini fungsi yang sama menentukan arsitektur.

Tampilkan detail

Yang dibutuhkan bab ini dari bab-bab sebelumnya.

  • Chapter 11 membangun LoRA dan QLoRA sebagai teknik: apa itu low-rank adapter, mengapa ia melatih parameter dengan jumlah beberapa orde magnitudo lebih sedikit. Bab ini tidak menjelaskannya ulang dan hanya menghitung biayanya.
  • Chapter 16 membangun computeCost, lima bucket yang dapat ditagih, dan aturan prefix untuk prompt caching. Lembar biaya di bawah adalah fungsi itu dengan tiga rute dimasukkan ke dalamnya.
  • Chapter 19 membangun retriever: chunking dengan header kontekstual, pencarian hybrid, empat slot ekstrak, citation. Bab ini menggunakannya kembali dan mengukur biaya menjalankannya, bukan cara kerjanya.

Semua di sini adalah TypeScript, karena ini tarif, aritmetika, dan akuntansi, tanpa tensor terlihat — dengan satu pengecualian, dinyatakan saat terjadi: untuk mencari tahu apa yang sebenarnya diajarkan fine-tuning, bab ini melakukan fine-tuning pada sebuah model, dan bagian itu memakai Python.

"Haruskah kita fine-tune?" ditanyakan seolah-olah itu pertanyaan tentang model. Ini pertanyaan tentang anggaran, dengan bentuk yang tidak dijawab benchmark mana pun: apa yang dibayar sekali, apa yang dibayar per pertanyaan, dan apa yang dibayar lagi setiap kali dunia berubah.

Tiga rute itu juga bukan tiga cara melakukan satu hal, dan para vendor mengatakannya lebih jelas daripada kebanyakan blog post. Tabel OpenAI sendiri tentang supervised fine-tuning paling cocok untuk apa mencantumkan empat penggunaan: klasifikasi, terjemahan bernuansa, menghasilkan konten dalam format tertentu, dan memperbaiki kegagalan mengikuti instruksi.1 Tidak ada yang berupa "mengajari model sesuatu yang tidak diketahuinya". Ringkasan manfaatnya adalah bahwa "kamu bisa menggunakan prompt yang lebih pendek dengan lebih sedikit contoh dan data context, yang menghemat biaya token dalam skala besar dan bisa menurunkan latency" — argumen tentang invoice, dari perusahaan yang menjual fitur itu.

Jadi:

  • Fine-tuning mengajarkan bentuk dan perilaku. Nada, format, bentuk jawaban, batas yang bisa kamu demonstrasikan tetapi sulit kamu jelaskan. Versi publikasi terkuatnya adalah Superficial Alignment Hypothesis dari LIMA: knowledge berasal dari pretraining, alignment sebagian besar mengajarkan sub-distribution format mana yang harus dipakai untuk berbicara — itulah mengapa seribu contoh terkurasi cukup di sana.2
  • Retrieval memasok fakta yang berubah. Ini satu-satunya dari tiga rute ketika edit pada dokumentasimu mencapai jawaban tanpa menyentuh model.
  • Prompting mencakup sebagian besar kasus nyata, dan merupakan baseline yang jujur. In-context learning telah menjadi default sejak Language Models are Few-Shot Learners: tugas didemonstrasikan di dalam prompt dan tidak ada weight yang bergerak.3

Dua paper terukur menutup pintu atas kesalahan di tengah. Ovadia dan kolega membandingkan penyuntikan knowledge lewat unsupervised fine-tuning dengan penyuntikan lewat retrieval, dan retrieval menang konsisten, termasuk pada fakta yang sudah pernah dilihat base model dalam pretraining.4 Gekhman dan kolega mengukur kerusakannya: contoh yang memperkenalkan knowledge baru di-fit dengan lambat, dan saat model akhirnya mem-fit-nya, tingkat halusinasi pada pertanyaan lain naik.5 Mengajarkan fakta lewat fine-tuning bukan hanya gagal; ia menurunkan kualitas jawaban yang tidak kamu latih.

Separuh itu sudah selesai. Separuh ekonominya belum, dan itulah sisa bab ini.

Kasusnya, dan dokumentasi yang tidak akan diam

Tautan ke bagian: Kasusnya, dan dokumentasi yang tidak akan diam

Satu kasus, dijalankan tiga cara: dukungan teknis atas dokumentasimu sendiri, yang berubah setiap minggu.

Corpus-nya nyata dan ada di disk ini: 23 dokumen Markdown yang disimpan sebuah repository software aktif sebagai dokumentasi internal — panduan build, aturan brand, translation brief, sepuluh manual layanan, catatan performa dan keamanan. Diukur dengan o200k_base, encoding dari Chapter 7:

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

Empat puluh tiga ribu token adalah ukuran yang nyaman untuk keputusan ini: muat di window modern mana pun, jadi ketiga rute benar-benar tersedia. Pada sepuluh juta, keputusan dibuatkan untukmu, dan jawabannya adalah retrieval.

Sekarang pekerjaan yang dilakukan kata "mingguan". Perubahan dokumentasi biasanya hanya diasumsikan; di sini ia dihitung, dari riwayat versi repository itu:

diukur selama 26 minggu terakhirnilai
commit yang menyentuh 23 dokumen40
dari jumlah itu, edit pada dokumen yang sudah ada21
minggu kalender berbeda dengan setidaknya satu perubahan11
commit yang menyentuh katalog teks user-facing produk selama 8 minggu hidupnya157
minggu kalender dari 8 minggu itu ketika ia berubah8

Dokumen bergerak kira-kira dua minggu sekali. String yang terlihat oleh user — yang justru ditanyakan ke meja dukungan — bergerak setiap minggu sejak ia ada, sekitar dua puluh commit seminggu. Rute apa pun yang kita pilih harus bertahan menghadapi itu, dan "seberapa sering hal yang kamu latih berubah?" ternyata punya angka di repository kamu sendiri, bukan opini.

Dua puluh pertanyaan dukungan realistis ditulis terhadap corpus ini, satu per topik, dan setiap angka di bawah dihitung atas dua puluh pertanyaan itu.

Hal paling sederhana yang bekerja: masukkan seluruh corpus ke system prompt, pertanyaan di akhir, lalu biarkan model menemukannya.

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

Setiap angka di sana dihitung kecuali yang terakhir: 150 output token adalah asumsi, dipilih dalam rentang giliran assistant yang ditagih Chapter 16. Itu satu-satunya angka di sini yang tidak dieksekusi, diterapkan identik ke ketiga rute, dan bagian break-even menunjukkan persis seberapa jauh kesimpulan bergerak saat kamu mengubahnya.

Pada tarif yang dibaca dari halaman provider pada 7 September 2026 — $1,50 per juta input token, $9,00 per juta output6 — itu menjadi $0,066317 per pertanyaan. Kamu membayar untuk membaca ulang empat puluh tiga ribu token demi menjawab tiga belas.

Perbaikan Chapter 16 berlaku langsung: corpus stabil dan berada di depan, jadi ia adalah prefix cache yang sempurna, dan membacanya kembali biayanya sepersepuluh — $0,007864 per pertanyaan, pemotongan 88 %. Peringatan Chapter 16 juga berlaku, dalam bentuk yang ditandai bab itu tetapi belum dihitung. Provider ini tidak mengenakan premium tulis; ia mengenakan sewa. Cache eksplisit berbiaya $0,000001 per token tersimpan per jam,6 jadi menjaga 43.298 token tetap warm biayanya

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

baik ada yang bertanya maupun tidak. Itu $189,78 selama enam bulan, untuk ruangan kosong. Bagi sewa dengan penghematan per pertanyaan dan syaratnya keluar dalam satu baris: caching corpus ini membayar dirinya sendiri di atas 0,74 pertanyaan per jam — 546 per bulan setelah rebuild cache mingguan ikut dihitung. Di bawah itu, fitur yang kamu aktifkan untuk menghemat uang justru merugikan.

enam bulan, 100 pertanyaan sebulantotal
seluruh corpus, tanpa cache$39,79
seluruh corpus, cached$196,18

Rute yang sama, code yang sama, satu flag, tagihan lima kali lipat. Chapter 16 menemukan versi ini yang disebabkan timestamp di tempat yang salah; di sini tidak ada yang salah kecuali traffic. Cache adalah taruhan pada volume, dan pada provider ini kamu memasangnya per jam.

Retriever dari Chapter 19, tanpa perubahan: potong pada batas section dengan header kontekstual, index, masukkan empat ekstrak terbaik ke prompt. Diukur atas dua puluh pertanyaan:

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

Token prompt empat puluh dua kali lebih sedikit daripada rute satu, pada $0,002906 per pertanyaan. Index berbiaya $0,0070 untuk dibuat pada $0,15 per juta embedding token6 — kurang dari biaya tiga pertanyaan — dan $0,0070 yang sama untuk rebuild dari nol setiap kali dokumentasi berubah. Rebuild seluruh index setiap minggu selama enam bulan biayanya delapan belas sen.

Satu hal layak dihentikan sejenak. Retrieval menghancurkan prompt caching. Prefix stabil sekarang adalah instruksi system 140 token; dari token 141, prompt berbeda pada setiap call, karena ekstrak dipilih per pertanyaan. Dan 140 token berada di bawah setiap minimum cache yang dikutip Chapter 16. Jadi rute dua sama sekali tidak bisa di-cache, yang terdengar buruk dan ternyata tidak: tidak meng-cache 1.037 token lebih murah daripada meng-cache 43.298.

Itu aturan umum yang layak dibawa: dua teknik besar penghemat token saling eksklusif pada konten yang sama, dan yang menang adalah mana pun yang menghapus lebih banyak token. Retrieval menghapus 97,6 % di antaranya.

Rute tiga: berhenti mengirim dokumentasi

Tautan ke bagian: Rute tiga: berhenti mengirim dokumentasi

Latih pada dua ratus contoh dengan gaya internal, lalu ajukan pertanyaan tanpa dokumentasi terlampir sama sekali.

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

Training berbiaya 24.389 × 3 × $10,00 per juta = $0,7317. Itu seluruh biaya konstruksi, kurang dari secangkir kopi, dan justru karena itulah begitu banyak tim membayarnya sebelum memeriksa apakah itu membantu.

Sekarang jebakannya, dan inilah alasan bab ini ada. Model fine-tuned tidak berbiaya sama dengan base model-nya saat dijalankan. Halaman harga mengatakannya dalam satu kalimat: "untuk model inference mulai dari Gemini 3, harga prediksi tuned model endpoint akan menjadi 1,5 kali base model."6 Bukan training. Inference, pada setiap token, selama model itu hidup.

Jadi masukkan ke formula. Misalkan pip_i dan pop_o adalah harga input dan output base, mm multiplier tuned, LRL_R panjang prompt rute yang kamu ganti, LFL_F panjang prompt setelah fine-tuning, dan OO panjang jawaban. Fine-tuning lebih murah per pertanyaan hanya ketika

LR  >  mLF  +  (m1)OpopiL_R \;>\; m\,L_F \;+\; \frac{(m-1)\,O\,p_o}{p_i}

Term pertama jelas: prompt pendek barumu, dengan markup. Term kedua tidak, dan di sanalah uang pergi — surcharge pada jawaban, yang tidak ada hubungannya dengan prompt-mu dan tidak bisa dipersingkat training. Dengan angka terukur — m=1.5m = 1.5, LF=28L_F = 28, O=150O = 150, po/pi=6p_o/p_i = 6 — threshold-nya adalah

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

Pada panjang jawaban terukur, 492 token — dan 450 di antaranya adalah surcharge jawaban, bukan prompt. Mengganti prompt yang lebih pendek dari itu lebih mahal per pertanyaan, selamanya, pada volume berapa pun; dan threshold tumbuh linear dengan seberapa banyak assistant-mu menulis, jadi assistant yang menulis jawaban panjang tidak akan pernah bisa fine-tune menuju token yang lebih murah, seberapa pun banyak prompt yang dihapus.

Fakta yang sama dari ujung lain adalah kalimat yang perlu diingat. Dari $0,002088 per pertanyaan pada rute fine-tuned, 97,0 % adalah jawaban. Fine-tuning mengoptimalkan tiga persen sisanya.

Empat angka menggambarkan rute mana pun: apa yang kamu bayar sekali, apa yang kamu bayar saat dokumentasi berubah, apa yang kamu bayar per jam apa pun yang terjadi, dan apa yang kamu bayar per pertanyaan. Itu memperluas computeCost dari Chapter 16 tanpa memodifikasinya.

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);
}

Tuned model bukan daftar harga berbeda, melainkan daftar yang sama dikalikan:

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 })),   
});

Satu baris yang disorot itu adalah seluruh argumen bagian sebelumnya yang ditulis sebagai code: multiplier juga mendarat pada output.

Enam bulan, dengan dokumentasi diperbarui mingguan:

pertanyaan / bulanprompt, cachedprompt, tanpa 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

Dan crossover-nya, yaitu empat angka yang benar-benar dibutuhkan anggaran:

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

Baca dua yang pertama bersamaan, karena itulah poin bab ini. Corpus yang diam membuat fine-tuning membayar dirinya sendiri dalam seratus lima puluh pertanyaan; corpus yang berubah mingguan menggeser crossover yang sama dengan faktor dua puluh tujuh, dan tidak ada apa pun tentang model yang berubah — hanya seberapa sering kamu membayarnya lagi. Biaya konstruksi adalah catatan kaki; biaya maintenance adalah keputusannya.

Jika sekarang kamu menyimpulkan bahwa meja dukungan yang sibuk sebaiknya fine-tune, aritmetikanya setuju denganmu. Itu tetap salah, dan bagian berikutnya menjelaskan mengapa.

Apa yang sebenarnya dipelajari fine-tune

Tautan ke bagian: Apa yang sebenarnya dipelajari fine-tune

Lembar biaya punya satu kolom yang tidak bisa dihitungnya, jadi bagian ini menjalankan fine-tune: lokal, pada model terbuka kecil, dengan adapter ditulis tangan alih-alih diambil dari library. Chapter 11 membangun LoRA; ini dia, pada q_proj dan v_proj dari semua 24 layer Qwen2.5-0.5B-Instruct pada 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

Dua ratus contoh training berasal secara mekanis dari corpus, jadi bisa direproduksi: pertanyaan adalah heading section yang diubah menjadi pertanyaan, jawabannya adalah teks section itu sendiri dalam gaya internal yang kaku — satu baris diawali Short answer:, satu baris diawali Source: dengan path file. Format adalah bentuk yang diajarkan; path adalah faktanya. Lalu dua angka atas dua puluh pertanyaan held-out: apakah jawaban keluar dalam gaya internal, dan apakah ia menyebut file yang benar-benar menjawab pertanyaan?

Dua baseline membuat tabel mudah dibaca, dan keduanya adalah desakan Chapter 4, bukan tambahan belakangan. Sepuluh dari dua puluh jawaban benar adalah file yang sama, jadi model yang mengabaikan pertanyaan dan selalu menjawab CLAUDE.md mendapat skor 10/20. Dan retriever punya ceiling sendiri: di antara dua puluh pertanyaan ini, empat ekstraknya memuat file yang benar 14 kali dan menempatkannya di peringkat pertama 7 kali, jadi 14/20 adalah skor maksimum pembaca mana pun yang menggunakannya.

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

Bentuknya dipelajari, lengkap dan cepat. Nol menjadi sembilan belas dari dua puluh, dari adapter 540.672 parameter — 0,109 % dari model — dalam lima menit training pada prosesor tanpa kartu grafis terlihat.

Faktanya tidak. Delapan dari dua puluh tidak bisa dibedakan dari sepuluh yang kamu dapat dengan mengabaikan pertanyaan sepenuhnya, dan interval Chapter 4 pada dua puluh sampel mengatakannya terang-terangan. Path file itu ada di data training tiga kali; yang keluar adalah kebiasaan mengakhiri dengan baris Source: yang tampak masuk akal. Saat ditanya pertanyaan di awal bab ini, model fine-tuned menjawab Short answer: 10.x . . . dan mengutip CLAUDE.md. Jawaban yang benar, yang ada di CLAUDE.md, adalah 18.17.0.

Lalu bentuknya pecah, dan itulah baris yang membenarkan eksperimen ini. Berikan model fine-tuned seribu token ekstrak retrieved — bentuk prompt yang tidak pernah dilihatnya, karena setiap prompt training berisi dua puluh delapan token — dan gaya internal runtuh dari 19/20 menjadi 1/20. Pada pertanyaan di awal bab ini ia menjawab 18.17.0 — benar, dan tanpa format apa pun yang dilatih untuknya. Jadi fine-tuning tidak mengajarkan format; ia mengajarkan format yang bersyarat pada prompt dalam training set, dan prompt pertama yang tampak berbeda membawa format itu pergi. Apa pun yang kamu fine-tune menjadi satu input distribution yang dikuasai modelmu, dan tidak ada yang memasukkannya ke spreadsheet.

Catatan terakhir tentang metrik, menunjuk langsung ke Chapter 29: "sumber benar" menilai bentuk dan fakta bersama-sama, itulah mengapa kedua baris retrieval tampak buruk meski kedua model mendapatkan fakta pertanyaan itu dengan benar. Satu angka end-to-end menyembunyikan tiga hal — retriever dengan recall 14/20, reader 0,5B, dan format citation — dan memilih mana yang harus diperbaiki berarti memisahkannya sebelum mengukur, bukan sesudah.

Sekarang kolom yang diisi vendor untukmu. Model fine-tuned bukan aset yang kamu miliki; ia adalah sewa atas base model milik orang lain, dengan tanggal akhir tercetak di atasnya. Pada 7 September 2026, bagian fine-tuning di halaman harga OpenAI memuat pemberitahuan ini secara lengkap:

OpenAI sedang menghentikan platform fine-tuning secara bertahap. Platform ini tidak lagi dapat diakses oleh user baru, tetapi user platform fine-tuning yang sudah ada akan dapat membuat training job selama beberapa bulan mendatang. Semua model fine-tuned akan tetap tersedia untuk inference sampai base model-nya deprecated.7

Timeline-nya diberi tanggal sampai hari: 7 Mei 2026, ditutup untuk organisasi yang belum pernah fine-tune; 2 Juli 2026, ditutup untuk yang belum menjalankan inference pada model fine-tuned dalam enam puluh hari; 6 Januari 2027, tidak ada job baru sama sekali.8 Halaman yang sama menjadwalkan shutdown model fine-tuned itu sendiri — ft-gpt-3.5-turbo, ft-gpt-4, ft-gpt-4.1-nano, ft-babbage-002, ft-davinci-002 — pada 23 Oktober 2026, masing-masing dengan base model pengganti yang direkomendasikan, cara sopan untuk mengatakan: latih lagi.

Vendor frontier lain bahkan tidak pernah menjual sewanya kepadamu. Indeks dokumentasi Anthropic mencantumkan 699 halaman dan tidak satu pun tentang fine-tuning; bagian model-customisation pada halaman harga Bedrock mencakup Amazon Nova, Amazon Titan, Cohere, Meta, dan model open-weight OpenAI, tetapi tidak Claude.910 Jika arsitekturmu bergantung pada fine-tune, salah satu dari tiga keluarga frontier tidak tersedia untukmu pada anggaran berapa pun.

Self-hosting mengganti sewa model dengan sewa mesin, dan AWS melakukan aritmetika itu di halamannya sendiri: satu model unit provisioned throughput untuk model yang dikustomisasi, komitmen satu bulan, adalah "1 model unit × $21,18 × 24 jam × 31 hari = $15.757,92" sebulan.10 Menyewa metal langsung lebih murah dan tidak gratis — $3,99 per GPU-hour on demand untuk H100, $1,99 preemptible11 — kira-kira $2.900 sebulan untuk satu kartu yang harus tetap menyala, ada yang bertanya atau tidak. Seluruh rute retrieval pada sepuluh ribu pertanyaan sebulan adalah $174,52 untuk enam bulan.

Di sinilah LoRA layak mendapat tempatnya, sebagai argumen anggaran dan bukan teknis. Diukur pada model yang sama, adapter rank-16 di atas attention dan feed-forward layers adalah 8.798.208 parameter — 1,781 % dari model, 17,6 MB dalam bfloat16 — dibanding 0,988 GB base weights, dan optimizer serta gradient state-nya 140,77 MB sementara full fine-tuning butuh 7,90 GB, faktor 56. Konsekuensinya bukan training yang lebih murah, melainkan satu base model yang dimuat bisa melayani banyak adapter, dan itu satu-satunya cara biaya tetap GPU dibagi oleh sesuatu. Managed training mencerminkannya: $0,48 per juta token low-rank hingga 16B dibanding $0,54 full, dengan minimum $4,00 per job.11 Lantai itulah detailnya. Pada 24.389 token untuk tiga epoch, setiap retraining pada corpus ini ditagih $4,00 alih-alih $0,04 hasil hitungannya — minimum $104 di sepanjang dua puluh enam run mingguan, untuk aritmetika sembilan puluh satu sen.

Biaya privacy, dan mengapa distillation bukan opsi keempat

Tautan ke bagian: Biaya privacy, dan mengapa distillation bukan opsi keempat

Dua kolom lagi yang hanya muncul di invoice.

Data residency biayanya sekitar sepuluh persen, dan dua provider sepakat pada angkanya. OpenAI mengenakan "uplift 10 %" pada endpoint data-residency untuk model yang dirilis pada atau setelah 5 Maret 2026;7 Vertex memberi harga endpoint non-global $1,65 dibanding $1,50, sepuluh persen yang sama.6 Bandingkan itu dengan lima puluh persen biaya tuned endpoint dan folklore-nya terbalik: residency murah dan fine-tuning tidak — dan fine-tuning juga bukan opsi privat, karena corpus mencapai provider bagaimanapun juga, sekali saat training alih-alih sekali per call.

Harga paling eksplisit yang pernah dipasang pada datamu ada di halaman yang sama, yang mencantumkan satu model fine-tuned dua kali: dengan data sharing diaktifkan, inference tepat setengah — $2,00 dibanding $4,00 input, $8,00 dibanding $16,00 output.7 Membiarkan provider menyimpan apa yang kamu kirim bernilai diskon 50 %, yang memberi tahu berapa nilainya bagi mereka.

Distillation — melatih model kecil milikmu sendiri pada jawaban model besar — biasanya ditawarkan sebagai jalan keluar dari keduanya. Hitung biayanya dan ternyata bukan, karena teacher-nya adalah sistem yang sedang kamu coba ganti: menghasilkan dua ratus contoh training dengan bertanya ke rute retrieval dua ratus kali biayanya 200 × $0,002906 = $0,58, di atas $0,73 untuk melatihnya. Distillation adalah sesuatu yang kamu lakukan setelah pipeline retrieval bekerja, untuk membuatnya lebih murah, dan ia mewarisi setiap fakta yang salah dari retriever.

Uang adalah separuh yang terlihat. Separuh lain datang sebagai penantian, dengan penyebab yang sama seperti tagihan: model membaca seluruh prompt sebelum mengucapkan satu kata. Chapter 13 mengukur prefill dibanding decode pada model yang bisa kamu sentuh; ini pengukuran yang sama, satu run, satu mesin, terhadap panjang prompt:

prompt tokenwaktu ke token pertamaper token
28312 ms11,14 ms
1.0374.971 ms4,79 ms
4.09622.272 ms5,44 ms
8.19249.443 ms6,04 ms

Angka absolutnya milik model 0,5B pada enam belas thread CPU dan tidak mengatakan apa pun tentang hosted frontier model. Bentuknya berpindah persis: prefill tumbuh bersama panjang prompt, dan biaya per token merayap naik saat suku kuadrat dari Chapter 9 mulai terlihat — 4,79 ms pada seribu token dibanding 6,04 ms pada delapan ribu, penalti 26 % hanya karena lebih panjang.

Konsekuensinya untuk tiga rute langsung. Rute satu melakukan prefill empat puluh tiga ribu token per pertanyaan, dan cache hit-lah yang membuatnya tertahankan — Chapter 16 menjelaskan alasannya: pembacaan cache menggantikan pekerjaan prefill, jadi ia membeli latency dan uang dalam satu transaksi. Rute dua melakukan prefill seribu dan menambahkan satu round trip ke index terlebih dahulu. Rute tiga melakukan prefill dua puluh delapan dan tidak menambahkan apa-apa, yang membuatnya terukur sebagai yang paling cepat dari ketiganya dalam menjawab. Ia hanya menjawab hal yang salah.

Saat tidak satu pun dari tiga itu jawabannya

Tautan ke bagian: Saat tidak satu pun dari tiga itu jawabannya

Tiga kegagalan yang tampak seperti masalah model padahal bukan — sepuluh menit di sini menghemat sebulan nanti:

Retrieval tidak bisa retrieve sesuatu yang tidak pernah ditulis siapa pun, dan fine-tuning di atasnya hanya mengajari model terdengar percaya diri. Jika pertanyaan dukungan teratasmu tidak dijawab di mana pun dalam corpus, perbaikannya adalah technical writer.

Jawabannya membutuhkan aksi, bukan teks

Tautan ke bagian: Jawabannya membutuhkan aksi, bukan teks

"Di mana pesanan saya?" adalah query database, bukan pertanyaan knowledge. Itu tool call — Chapter 18 — dan baik training maupun retrieval tidak menggantikannya.

Pertanyaannya ambigu dan interface menyembunyikannya

Tautan ke bagian: Pertanyaannya ambigu dan interface menyembunyikannya

Ketika dua produk berbagi nama, jawaban terbaik yang mungkin adalah permintaan klarifikasi. Itu keputusan produk tentang input, bukan keputusan modelling tentang output.

Dan requirement di atas semuanya: keputusan ini tidak bisa dibuat tanpa evaluation set, dan vendor yang menjual fine-tune mengatakannya begitu. Panduan OpenAI dibuka dengan "Berinvestasilah dalam fine-tuning hanya setelah menyiapkan evals. Kamu membutuhkan cara yang andal untuk menentukan apakah model fine-tuned-mu berkinerja lebih baik daripada base model", dan menambahkan bahwa jika lima puluh contoh bagus tidak mengubah apa pun, masalahnya adalah task atau prompt, bukan volume data.1 Dua puluh pertanyaan, seperti yang dipakai bab ini, menunjukkan mekanisme dan tidak bisa memilih supplier — Chapter 4 mengukur alasannya, dan apa yang harus dilakukan saat dua puluh kasus adalah semua yang kamu punya — ulangi, pasangkan, dan ukur sebaran antar-run — adalah Chapter 29.

Empat kolom, dan hanya yang terakhir yang menentukan:

promptretrievalfine-tune
yang diajarkannyaapa pun yang bisa kamu tulisfakta yang berubahbentuk dan perilaku
biaya konstruksinol$0,0070 plus satu sore$0,7317 plus eval set
biaya per pertanyaan$0,0079 cached, $0,0663 tidak$0,0029$0,0021, di atas 492 prompt token
biaya maintenancenol, atau sewa $0,043 per jam$0,0070 per rebuildsatu retraining per perubahan, plus satu per base model yang retired

Aturan yang muncul darinya, dan cukup pendek untuk diingat: mulai dengan prompt; tambahkan retrieval saat fakta bergerak; fine-tune hanya ketika kamu sudah mengukur bahwa hal yang masih kurang adalah bentuk, bukan fakta — dan hitung harga jawaban, bukan prompt, sebelum melakukannya.

Versi yang tidak nyaman, untuk siapa pun yang datang setelah sudah memutuskan: pada kasus terukur di bab ini, fine-tuning memang rute termurah di atas empat ribu pertanyaan sebulan, dan pada faktanya ia tetap tidak bisa mengalahkan menjawab CLAUDE.md untuk semuanya.

Setiap harga di sini adalah per token, dan setiap rute adalah cara berbeda mengatur token. Itu sebentar lagi berhenti benar.

Chapter 21 meninggalkan teks. Image yang masuk ke model bukan string melainkan grid patch dengan jumlah token yang tidak kamu pilih; satu menit suara ditagih per detik oleh satu provider dan per audio token oleh provider lain; synthetic speech dijual per karakter, transcription per menit, raw compute per GPU-second. Pertanyaan yang dijawab bab ini dengan satu fungsi biaya — mana yang lebih murah? — bahkan tidak bisa ditanyakan sampai unitnya cocok, dan tidak ada kalkulator di internet yang menormalisasikannya.

Di situ juga training muncul lagi: image adapter dengan trigger word, dan voice yang dikloning dari sample. Yang memunculkan pertanyaan pembuka bab berikutnya, dan ini bukan retoris: jika fine-tuning language model hampir selalu pembelian yang salah, mengapa fine-tuning image model hampir selalu yang benar?


Setiap harga, threshold, dan multiplier dalam bab ini dibaca dari halaman provider sendiri pada 7 September 2026 dan dikutip dengan tanggal itu, karena semuanya akan bergerak. Angka terukur — jumlah token, ukuran chunk, ukuran retrieval, training loss, skor, latency, dan hitungan riwayat versi — diproduksi pada satu mesin pada hari yang sama dan dapat direproduksi dari corpus yang dijelaskan di atas.

Eksperimen lokal menggunakan Qwen/Qwen2.5-0.5B-Instruct dengan greedy decoding, jadi hasilnya bereproduksi persis; adapter adalah class dua belas baris yang dicetak di atas, pada rank 8 di atas q_proj dan v_proj. Corpus adalah dokumentasi Markdown terlacak dari satu repository software yang aktif digunakan, mengecualikan dua log append-only, dan laju perubahannya dihitung dari riwayat versi repository itu.

  1. OpenAI, Supervised fine-tuning, developers.openai.com/api/docs/guides/supervised-fine-tuning, dan Model optimization, .../guides/model-optimization, keduanya diakses 2026-09-07. Sumber dari: tabel tentang supervised fine-tuning paling cocok untuk apa (klasifikasi, terjemahan bernuansa, menghasilkan konten dalam format tertentu, memperbaiki kegagalan mengikuti instruksi); empat manfaat yang diklaim termasuk prompt lebih pendek dan latency lebih rendah; minimum 10 contoh training dan rekomendasi untuk mulai dengan 50; dan "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 — knowledge berasal dari pretraining, alignment mengajarkan format mana yang harus dipakai — dan alasan seribu contoh terkurasi cukup.

  3. Brown, T. et al. Language Models are Few-Shot Learners. arXiv:2005.14165 (2020). Sumber in-context learning sebagai baseline yang jujur: task didemonstrasikan di dalam prompt dan tidak ada weight yang diperbarui.

  4. Ovadia, O., Brief, M., Mishaeli, M. and Elisha, O. Fine-Tuning or Retrieval? Comparing Knowledge Injection in LLMs. arXiv:2312.05934 (2023). Retrieval mengalahkan unsupervised fine-tuning untuk menyuntikkan knowledge, termasuk pada fakta yang sudah terlihat dalam pretraining.

  5. Gekhman, Z. et al. Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations? arXiv:2405.05904 (2024). Contoh yang memperkenalkan knowledge baru di-fit dengan lambat, dan mem-fit-nya menaikkan hallucination pada pertanyaan yang tidak terkait.

  6. Google, Vertex AI generative AI pricing, cloud.google.com/vertex-ai/generative-ai/pricing, diakses 2026-09-07. Setiap angka dalam lembar biaya bab ini: Gemini 3.5 Flash pada endpoint global dengan $1,50 per juta input token, $0,15 cached input dan $9,00 text output, dengan endpoint non-global 10 % lebih tinggi; supervised fine-tuning model yang sama pada $0,01 per 1.000 training token, ketika "training tokens are calculated by the total number of tokens in your training dataset, multiplied by your number of epochs"; penyimpanan context cache eksplisit pada $0,000001 per token per jam; input Gemini Embedding pada $0,00015 per 1.000 token online; dan catatan bahwa "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, diakses 2026-09-07. Sumber pemberitahuan wind-down yang dikutip lengkap, dan sumber tarif teks saat ini yang dipakai untuk cross-check: gpt-5.6-terra standard short context pada $2,00 input, $0,20 cached input, $2,50 cache write, dan $12,00 output per juta token, dengan batch tier setengah dari masing-masing. Halaman itu memuat sepuluh baris fine-tuning di atas tujuh base model, dan tepat satu di antaranya ditagih berdasarkan waktu alih-alih token: reinforcement fine-tuning o4-mini-2025-04-16 pada $100,00 per training hour. Halaman yang sama mencatat uplift 10 % pada endpoint data-residency untuk model yang dirilis pada atau setelah 5 Maret 2026. 2 3

  8. OpenAI, Deprecations, developers.openai.com/api/docs/deprecations, diakses 2026-09-07. Sumber timeline self-serve fine-tuning (7 Mei 2026, 2 Juli 2026, 6 Januari 2027) dan shutdown 23 Oktober 2026 untuk ft-gpt-3.5-turbo, ft-gpt-4, ft-gpt-4.1-nano-2025-04-14, ft-babbage-002 dan ft-davinci-002, masing-masing dicantumkan dengan base model pengganti yang direkomendasikan.

  9. Anthropic, indeks dokumentasi developer, platform.claude.com/llms.txt, diakses 2026-09-07. 699 halaman tercantum, tidak satu pun tentang fine-tuning; platform.claude.com/docs/en/build-with-claude/fine-tuning mengembalikan 404.

  10. Amazon Web Services, Amazon Bedrock pricing, aws.amazon.com/bedrock/pricing/, diakses 2026-09-07. Sumber bagian model-customisation (Amazon Nova, Amazon Titan, Cohere, Meta, Qwen, dan model open-weight OpenAI — tanpa Claude), biaya bulanan $1,95 untuk menyimpan setiap custom model, dan contoh kerja yang dikutip: "1 model unit × $21,18 × 24 hours × 31 days = $15.757,92". 2

  11. Together AI, Pricing, together.ai/pricing, diakses 2026-09-07. Fine-tuning per juta token untuk model hingga 16B: $0,48 low-rank dan $0,54 full untuk supervised fine-tuning, $1,20 dan $1,35 untuk direct preference optimisation, dengan harga dihitung sebagai "training dataset size × number of epochs" plus evaluation tokens dan "a minimum charge of $4.00" per job. Kapasitas GPU: $3,99 per GPU-hour on demand untuk HGX H100, $1,99 preemptible, $5,99 untuk H200. 2

Siap membiarkan LIA yang memilih?

Berkarya dengan semua model AI dalam satu tempat — mulai gratis hari ini.