コンテンツへスキップ
20/30第20章 / 全30章

fine-tuning、検索、それともprompt?判断基準は経済性です

同じサポート質問を3通りで回答し、端から端まで価格比較。fine-tuningが勝つのは、削れるpromptが492 tokenを超えてからです。

このページの内容

ここに1つのサポート質問があります — このプロジェクトが想定するNodeの最小バージョンは? — 同じドキュメントを相手に4通りで回答し、端から端まで価格を出します。

経路送信token数1回答のコスト
ドキュメント全体をpromptへ、cacheなし43,311$0.066317
ドキュメント全体をpromptへ、cached43,311$0.007864
最良の4つの抜粋を検索1,037$0.002906
fine-tuned model、ドキュメントなし28$0.002088

fine-tuneが最安です。同時に、この問題では間違った答えでもあります — そしてその両方は、意見ではなく同じ算術で示せます。

この表の3つの数字だけで、どこにでも書かれている助言とすでに矛盾します。cacheを有効にすると質問あたり88 %節約できましたが、月100件の質問では同じ経路が5倍高くなります。検索はcached prompt経路より42倍少ないtokenしか送りませんが、コストは2.7分の1にしかなりません。そしてfine-tuned modelは、promptを28 tokenまで減らしても検索に対して28 %しか節約できません — 支払額の97 %が回答そのものにかかっており、trainingは回答を短くしないからです。

第16章では、請求書を読むためのコスト関数を作りました。ここでは同じ関数でarchitectureを決めます。

詳細を表示

この章が前の章から必要とするもの。

  • 第11章 ではLoRAとQLoRAを手法として組み立てました。低rank adapterとは何か、なぜ桁違いに少ないparameterでtrainingできるのか。この章ではそれを説明し直さず、価格だけを扱います。
  • 第16章 ではcomputeCost、5つの請求bucket、そしてprompt cachingのprefix ruleを作りました。下のコスト表は、その関数に3つの経路を差し込んだものです。
  • 第19章 ではretrieverを作りました。文脈header付きのchunking、hybrid search、4つの抜粋slot、citationです。この章ではそれを再利用し、仕組みではなく実行コストを測ります。

ここでの内容はすべてTypeScriptです。tariff、算術、会計であり、tensorは出てこないからです — ただし例外が1つあり、それが起きる場所で明示します。fine-tuningが実際に何を教えるのかを確かめるため、この章ではmodelをfine-tuneします。その部分だけはPythonです。

「fine-tuneすべきか?」は、まるでmodelについての問いであるかのように尋ねられます。実際には予算についての問いです。どのbenchmarkも答えない形をしています。何を一度だけ払うのか、何を質問ごとに払うのか、そして世界が動くたびに何を再び払うのか。

この3つの経路は、1つのことを行う3つの方法でもありません。vendor自身も、多くのblog postよりはっきりそう言っています。OpenAI自身の表では、supervised fine-tuningが最も適している用途として4つが挙げられています。分類、ニュアンスのある翻訳、特定formatでのcontent生成、instruction-following failureの修正です。1 そのどれも「modelに知らないことを教える」ではありません。利点の要約は「より短いpromptsを、より少ない例とcontext dataで使えるため、scale時のtoken costを節約でき、latencyも下げられる可能性がある」です — これは、その機能を売っている会社自身による、請求書についての議論です。

つまり:

  • Fine-tuningが教えるのは形と振る舞いです。 tone、format、回答の形、説明は難しいが実演できる境界です。最も強い公開版はLIMAのSuperficial Alignment Hypothesisです。知識はpretrainingから来て、alignmentは主にどのformatのsub-distributionで話すかを教える — だからそこでは、厳選された1000例で十分でした。2
  • 検索は変化する事実を供給します。 ドキュメントへの編集がmodelに触れず回答へ届くのは、この3つの中でこれだけです。
  • Promptingは現実の大半を覆いますし、正直なbaselineです。In-context learningはLanguage Models are Few-Shot Learners以来のdefaultです。taskはprompt内で実演され、weightは動きません。3

中間の誤りには、2本の測定論文が扉を閉めています。Ovadiaらは、unsupervised fine-tuningで知識を注入する方法と検索で注入する方法を比較し、検索が一貫して勝ちました。base modelがpretrainingですでに見ていた事実でも同じでした。4 Gekhmanらはその損傷を測りました。新しい知識を導入する例はゆっくりfitされ、modelがついにそれらにfitすると、他の質問でのhallucination率が上がります。5 fine-tuningで事実を教えることは単に失敗するだけではありません。trainingしていない回答まで劣化させます。

その半分は決着済みです。経済の半分はまだです。そしてこの章の残りがそれです。

1つのケースを3通りで実行します。毎週変わる自社ドキュメントに対するtechnical supportです。

corpusは実在し、このdisk上にあります。稼働中のあるsoftware repositoryが内部ドキュメントとして保持している23個のMarkdown documentです — build guide、brand rules、translation brief、10本のservice manual、performanceとsecurity notesです。第7章のencodingであるo200k_baseで測ると:

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

43,000 tokenは、この判断には扱いやすい大きさです。現代的などのwindowにも入るので、3つの経路は本当に利用可能です。1000万tokenなら判断は自動的に決まります。検索です。

ここで「毎週」という言葉が担っている仕事です。ドキュメントのchurnはたいてい主張されるだけですが、ここではそのrepositoryのversion historyから数えています。

直近26週間で測定
23 documentに触れたcommit40
そのうち、既存documentへの編集21
少なくとも1件の変更があったdistinct calendar week11
製品のuser-facing text catalogueに触れたcommit(存在8週間)157
その8週間のうち変更があったcalendar week8

ドキュメントはおよそ隔週で動きます。user-visible strings — support deskが実際に質問される対象 — は存在していたすべての週で動き、週あたり約20 commitでした。どの経路を選んでもこれを生き残る必要があります。そして*「trainingした対象はどのくらい頻繁に変わるのか?」*には、意見ではなく自分のrepository内に数字があります。

このcorpusに対して、topicごとに1つ、現実的なサポート質問を20個書きました。以下のすべての数値は、その20個で計算しています。

動く最も単純な方法です。corpus全体をsystem promptに入れ、最後に質問を置き、modelに見つけさせます。

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

最後以外の数字はすべて数えたものです。150 output tokensは仮定で、第16章が課金したassistant turnの範囲内で選びました。ここで実行していない唯一の数値であり、3つの経路すべてに同じように適用します。break-even sectionでは、それを変えると結論がどのくらい動くかを正確に示します。

2026年9月7日にproviderのページから読んだrate — input 100万tokenあたり$1.50、output 100万tokenあたり$9.006 — では、質問あたり**$0.066317**です。13 tokenで答えるために、43,000 tokenを読み直す費用を払っています。

第16章の修正はそのまま適用できます。corpusは安定していて先頭にあるため、完璧なcache prefixです。読み戻しは10分の1になり、質問あたり**$0.007864**、88 %削減です。第16章の警告も同じく当てはまります。同章が指摘したものの価格を出さなかった形です。このproviderはwrite premiumを課しません。課すのはrentです。explicit cacheは保存tokenあたり1時間$0.000001かかるため、43,298 tokenを温め続けるコストは

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

誰も何も質問しなくても発生します。これは6か月で$189.78、空室に対する費用です。rentを質問ごとの節約額で割ると、条件は1行で出ます。このcorpusのcachingが元を取るのは、1時間あたり0.74質問を超えてからです — 週次cache rebuildも数えると月546件です。それ未満では、お金を節約するために有効にした機能がお金を失わせます。

6か月、月100質問合計
corpus全体、cacheなし$39.79
corpus全体、cached$196.18

同じ経路、同じcode、1つのflagで、請求額は5倍です。第16章では、timestampを置く場所のミスでこれが起きる版を見つけました。ここではtraffic以外に何も間違っていません。cacheはvolumeへの賭けであり、このproviderではそれを時間単位で張ります。

第19章のretrieverをそのまま使います。section boundaryで切り、contextual headerを付け、indexし、最良の4つの抜粋をpromptに入れます。20質問での測定結果です。

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

経路1よりprompt tokensは42分の1で、質問あたり**$0.002906です。index構築コストはembedding token 100万あたり$0.156で$0.0070 — 質問3件分未満です — そしてドキュメントが変わるたびにscratchからrebuildしても同じ$0.0070です。6か月間、毎週index全体をrebuildしても18セント**です。

ここで立ち止まる価値がある点が1つあります。検索はprompt cachingを壊します。 安定したprefixは140 tokenのsystem instructionだけになります。token 141からpromptは毎call違います。抜粋が質問ごとに選ばれるからです。そして140 tokenは第16章で引用したどのcache minimumも下回ります。したがって経路2はまったくcacheできません。悪く聞こえますが、そうではありません。1,037 tokenをcacheしない方が、43,298 tokenをcacheするより安いからです。

持ち帰るべき一般則です。2つの大きなtoken節約手法は、同じcontent上では両立しません。勝つのは、より多くのtokenを取り除く方です。検索はその97.6 %を取り除きます。

house styleの200例でtrainingし、その後はドキュメントを一切添付せずに質問します。

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

training costは24,389 × 3 × 100万あたり$10.00 = $0.7317です。これが構築費用のすべてで、コーヒー1杯未満です。だからこそ多くのteamは、役に立つか確認する前に払ってしまいます。

ここに罠があり、この章が存在する理由です。fine-tuned modelの実行コストはbase modelと同じではありません。pricing pageは1文で言っています。「Gemini 3以降のmodel inferenceについて、tuned model endpoint prediction priceはbase modelの1.5倍になる」。6 trainingではありません。inferenceです。すべてのtokenに対して、modelが生きている限りずっとです。

では式に入れます。pip_ipop_oをbase inputとoutputの価格、mmをtuned multiplier、LRL_Rを置き換える経路のprompt length、LFL_Fをfine-tuning後のprompt length、OOをanswer lengthとします。fine-tuningが質問あたりで安くなるのは、次のときだけです。

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

第1項は明らかです。新しい短いpromptにmarkupが乗ります。第2項はそうではなく、ここにお金が流れます — answerへのsurchargeです。これはpromptとは無関係で、trainingでは短くできません。測定値 — m=1.5m = 1.5LF=28L_F = 28O=150O = 150po/pi=6p_o/p_i = 6 — では、thresholdは

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

測定したanswer lengthでは、492 token — そのうち450はpromptではなくanswer surchargeです。 それより短いpromptを置き換えると、どのvolumeでも、永遠に質問あたりの費用は高くなります。そしてthresholdはassistantがどれだけ話すかに比例して伸びるため、長い回答を書くassistantは、どれだけpromptを削ってもfine-tuneで安いtokenへはたどり着けません。

反対側から同じ事実を言うと、覚えるべき文はこれです。fine-tuned経路の質問あたり$0.002088のうち、97.0 %はanswerです。fine-tuningが最適化するのは残り3 %です。

これらの経路はどれも4つの数字で説明できます。一度だけ払うもの、ドキュメントが変わったときに払うもの、質問の有無にかかわらずhourlyで払うもの、質問ごとに払うものです。これは第16章のcomputeCostを、変更せずに拡張します。

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は別のprice listではなく、同じものに掛け算したものです。

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

その強調された1行が、前sectionの議論全体をcodeで書いたものです。multiplierはoutputにも乗ります。

6か月、ドキュメントを毎週refreshした場合:

質問数 / 月prompt, cachedprompt, no 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

そしてcrossoverです。予算が実際に必要とする4つの数字です。

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

最初の2つは一緒に読んでください。そこがこの章の要点です。静止したcorpusなら、fine-tuningは150質問で元が取れます。毎週変わるcorpusでは、同じcrossoverが27倍ずれます。modelについては何も変わっていません — 再び支払う頻度だけが変わりました。construction costは脚注です。maintenance costが判断そのものです。

ここで、忙しいsupport deskはfine-tuneすべきだと結論するなら、算術はあなたに同意します。それでも間違っています。次のsectionがその理由です。

コスト表には計算できない列が1つあるため、このsectionではfine-tuneを実行します。localで、小さなopen model上で、adapterはlibraryから持ってくるのではなく手で書きます。第11章ではLoRAを作りました。ここではQwen2.5-0.5B-Instruct全24 layerのq_projv_projに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

200個のtraining exampleはcorpusから機械的に作るので再現できます。questionはsection headingを質問に変えたもの、answerはそのsection自身のtextを硬いhouse styleにしたものです — Short answer:で始まる1行、file path付きのSource:で始まる1行。教えているformはformatであり、pathはfactです。 そして20個のheld-out questionで2つの数字を見ます。answerがhouse styleで出るか、本当に質問に答えるfileを名指しするかです。

表を読みやすくするためにbaselineを2つ置きます。どちらも後付けではなく第4章の主張です。20個の正解のうち10個は同じfileなので、質問を無視して常にCLAUDE.mdと答えるmodelは10/20点を取ります。そしてretrieverにも固有の上限があります。この20質問で4つの抜粋に正しいfileが含まれたのは14回、1位にrankされたのは7回なので、それを使うreaderが取れる最大は14/20です。

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

formは完全に、そして速く学習されました。 graphics cardの影もないprocessor上で5分trainingしただけで、540,672-parameter adapter — modelの0.109 % — が0から20問中19問へ行きました。

factは学習されませんでした。 20問中8問は、質問を完全に無視して得られる10問と区別できません。第4章の20 sampleのintervalもそうはっきり言います。それらのfile pathはtraining data内に3回ずつ入っていました。出てきたのは、もっともらしいSource:行で終える習慣でした。この章の冒頭の質問を投げると、fine-tuned modelはShort answer: 10.x . . .と答え、CLAUDE.mdをciteしました。正解はCLAUDE.mdにあり、18.17.0です。

そしてformが壊れました。これが実験を正当化する行です。 fine-tuned modelに、検索された抜粋1000 tokenを渡します — training promptはすべて28 tokenだったので、一度も見たことがないprompt shapeです — するとhouse styleは19/20から1/20へ崩れます。この章冒頭の質問には18.17.0と答えます — 正しいですが、trainingされたformatは何もありません。つまりfine-tuningはformatを教えたのではありません。training set内のpromptsに条件付けられたformatを教えたのであり、最初に違う見た目のpromptが来るとformatも一緒に消えました。fine-tuneした対象は何であれ、modelが得意になる唯一のinput distributionになります。そして誰もそれをspreadsheetには入れません。

metricについて最後に一言。第29章をまっすぐ指しています。「correct source」はformとfactを一緒に採点します。だから、その質問のfactは両方のmodelが正しく答えたにもかかわらず、retrievalの両rowはひどく見えます。1つのend-to-end numberが3つを隠していました — 14/20 recallのretriever、0.5B reader、citation formatです。どれを直すかを選ぶには、測る前にそれらを分ける必要があります。後ではありません。

次はvendorが勝手に埋める列です。fine-tuned modelはあなたが所有するassetではありません。他人のbase modelを借りるleaseであり、そこには終了日が印字されています。2026年9月7日、OpenAIのpricing pageのfine-tuning sectionには、このnoticeが全文掲載されていました。

OpenAIはfine-tuning platformを段階的に終了しています。このplatformは新規userにはアクセスできなくなっていますが、fine-tuning platformの既存userは今後数か月間training jobを作成できます。すべてのfine-tuned modelsは、それぞれのbase modelsがdeprecatedになるまでinferenceで利用可能です。7

timelineは日付付きです。2026年5月7日、fine-tuneしたことのないorganizationにはclosed。2026年7月2日、fine-tuned modelで60日間inferenceを実行していないorganizationにはclosed。2027年1月6日、新規jobは完全に停止です。8 同じページはfine-tuned models自身のshutdownもscheduleしています — ft-gpt-3.5-turboft-gpt-4ft-gpt-4.1-nanoft-babbage-002ft-davinci-002 — 2026年10月23日に、それぞれにrecommended replacement base model付きで。これは丁寧な言い方で、つまり「もう一度trainingしろ」です。

もう一方のfrontier vendorは、そのleaseをそもそも売っていません。Anthropicのdocumentation indexには699 pageが並びますが、fine-tuningについてのpageは1つもありません。Bedrock pricing pageのmodel-customisation sectionはAmazon Nova、Amazon Titan、Cohere、Meta、OpenAI open-weight modelsを扱いますが、Claudeはありません。910 あなたのarchitectureがfine-tuneに依存するなら、3つのfrontier familyのうち1つは、どんな予算でも利用できません。

self-hostingはmodelへのleaseをmachineへのleaseに置き換えます。そしてAWSはその算術を自分のpageに載せています。customised model用のprovisioned throughputの1 model unit、1か月commitmentは「1 model unit × $21.18 × 24 hours × 31 days = $15,757.92」/月です。10 metalを直接rentする方が安いですが無料ではありません — H100はon demandでGPU-hourあたり$3.99、preemptibleで$1.9911 — 誰も質問しなくても起動していなければならない1枚のcardに月およそ$2,900です。月1万質問でのretrieval経路全体は、6か月で$174.52です。

ここでLoRAは、技術ではなく予算の議論として価値を持ちます。同じmodelで測ると、attentionとfeed-forward layers全体のrank-16 adapterは8,798,208 parameters — modelの1.781 %、bfloat16で17.6 MB — です。base weightsの0.988 GBに対し、そのoptimiserとgradient stateは140.77 MBで、full fine-tuningが必要とする7.90 GBの56分の1です。帰結はtrainingが安くなることではなく、1つのloaded base modelで多数のadapterをserveできることです。これがGPUのfixed costを何かで割れる唯一の方法です。managed trainingにもそれは反映されています。16Bまでのlow-rankは100万tokenあたり$0.48、fullは$0.54で、jobあたり$4.00 minimumがあります。11 そのfloorが重要です。24,389 tokenを3 epochs回す場合、このcorpusのretrainingは毎回、計算上の$0.04ではなく$4.00請求されます — 週次26回で算術上は91セントなのに、minimumで$104です。

privacyのコストと、distillationが第4の選択肢ではない理由

セクション「privacyのコストと、distillationが第4の選択肢ではない理由」へのリンク

請求書にだけ現れる列が、さらに2つあります。

Data residencyは約10 %かかり、2つのproviderがその数字で一致しています。 OpenAIは2026年3月5日以降にreleasedされたmodelsのdata-residency endpointsに「10 % uplift」を課します。7 Vertexはnon-global endpointsを$1.50に対して$1.65にしており、同じ10 %です。6 tuned endpointにかかる50 %と比べれば、俗説は反転します。residencyは安く、fine-tuningは安くありません — しかもfine-tuningはprivate optionでもありません。corpusはどちらにせよproviderに届くからです。callごとではなく、training時に一度届くだけです。

あなたのdataに付けられた最も明示的な価格は同じページにあります。そこでは1つのfine-tuned modelが2回掲載されています。data sharing enabledでは、inferenceはちょうど半額です — inputは$4.00に対して$2.00、outputは$16.00に対して$8.00です。7 providerに送信内容を保持させることは50 % discountの価値がある、ということです。それが彼らにとってどれだけ価値があるかを教えています。

Distillation — 大きなmodelのanswerで自前の小さなmodelをtrainingすること — は、よく両方からの抜け道として提示されます。価格を付けると、そうではありません。teacherは置き換えようとしていたsystemそのものだからです。retrieval経路に200質問してtraining exampleを200個作るコストは、200 × $0.002906 = $0.58で、それらをtrainingする$0.73に上乗せされます。Distillationはretrieval pipelineが動いたに、それを安くするために行うものです。そしてretrieverが間違えたfactをすべて継承します。

お金は見える半分です。もう半分は待ち時間として来ます。請求額と同じ原因です。modelは一言話す前にprompt全体を読みます。第13章では、触れるmodelでprefillとdecodeを測りました。ここでは同じ測定を、1 run、1 machineで、prompt lengthに対して行います。

prompt tokens最初のtokenまでの時間tokenあたり
28312 ms11.14 ms
1,0374,971 ms4.79 ms
4,09622,272 ms5.44 ms
8,19249,443 ms6.04 ms

絶対値は16 CPU threads上の0.5B modelのものであり、hosted frontier modelについては何も語りません。shapeはそのまま移ります。prefillはprompt lengthとともに増え、第9章の二次項が見え始めるとtokenあたりcostもじわじわ上がります — 1000 tokenで4.79 ms、8000 tokenで6.04 ms、長いだけで26 %のpenaltyです。

3つの経路への帰結は直接的です。経路1は質問ごとに43,000 tokenをprefillし、cache hitがそれを耐えられるものにします。第16章が理由を説明しました。cache readはprefill workを置き換えるため、latencyとお金を1つのtransactionで買います。経路2は1000 tokenをprefillし、先にindexへのround tripを追加します。経路3は28 tokenをprefillするだけで何も追加しないため、回答速度では3つの中で測定上最速です。ただし、間違ったことに答えているだけです。

model problemに見えてそうではないfailureが3つあります。ここで10分かければ、後で1か月を節約できます。

検索は誰も書いていないものをretrieveできず、それでfine-tuningしてもmodelに自信ありげに聞こえる方法を教えるだけです。最上位のsupport questionがcorpusのどこにも答えられていないなら、修正するのはtechnical writerです。

「私の注文はどこですか?」はdatabase queryであり、knowledge questionではありません。それはtool callです — 第18章 — そしてtrainingも検索もその代わりにはなりません。

2つのproductが同じnameを共有しているとき、可能な最良のanswerはclarification requestです。これはinputについてのproduct decisionであり、outputについてのmodelling decisionではありません。

そして全体にかかる要件です。この判断はevaluation setなしにはできません。そしてfine-tuneを売るvendor自身がそう言っています。 OpenAIのguideは「evalsを設定した後でのみfine-tuningに投資してください。fine-tuned modelがbase modelより良くperformしているかを判断する信頼できる方法が必要です」で始まり、50個の良いexampleで何も変わらないなら、問題はtaskかpromptであってdata volumeではない、と付け加えます。1 この章で使った20質問はmechanismを示すことはできますが、supplierを選ぶことはできません — 第4章ではその理由を測りました。そして20 caseしかないときに何をすべきか — 繰り返し、pairにし、run間のspreadを測る — は第29章です。

4列です。そして最後の列だけが決めます。

promptretrievalfine-tune
教えるもの書き下せるものなら何でも変化するfactformとbehaviour
構築コストzero$0.0070 plus an afternoon$0.7317 plus an eval set
質問あたりコストcachedなら$0.0079、そうでなければ$0.0663$0.0029$0.0021、492 prompt tokensを超える場合
maintenance costzero、またはrentで1時間$0.043rebuildあたり$0.0070変更ごとにretraining、さらにbase model retiredごとに1回

そこから出てくるruleは、覚えられるほど短いです。promptから始める。factが動くなら検索を足す。まだ足りないものがfactではなくshapeだと測定できたときだけfine-tuneする — そしてその前に、promptではなくanswerの価格を付ける。

すでに結論を決めて来た人にとって不快な版はこうです。この章で測定したcaseでは、月4000質問を超えるとfine-tuningは最安の経路です。それでもfactについては、すべてにCLAUDE.mdと答えることに勝てません。

ここまでの価格はすべてtoken単位で、すべての経路はtokenの並べ方の違いでした。それはもうすぐ成り立たなくなります。

第21章はtextを離れます。modelに入るimageはstringではなく、あなたが選んでいないtoken countを持つpatchのgridです。spoken minuteは、あるproviderでは秒単位で、別のproviderではaudio token単位で請求されます。synthetic speechは文字単位、transcriptionは分単位、raw computeはGPU-second単位で売られます。この章が1つのcost functionで答えた問い — どちらが安いか? — は、unitが揃うまで問うことすらできません。そしてinternet上のcalculatorはそれらをnormaliseしてくれません。

ここで、trainingも再び登場します。trigger wordを持つimage adapterと、sampleからclonedされたvoiceです。そこで次章が開く問いが生まれます。これは修辞疑問ではありません。language modelのfine-tuningがほとんど常に間違ったpurchaseなら、なぜimage modelのfine-tuningはほとんど常に正しいのでしょうか?


この章のすべてのprice、threshold、multiplierは、2026年9月7日にprovider自身のpageから読み、その日付付きで引用しています。すべて動くからです。測定値 — token counts、chunk sizes、retrieval sizes、training loss、scores、latencies、version-history counts — は同じ日に1台のmachineで生成され、上で説明したcorpusから再現できます。

local experimentsはgreedy decodingでQwen/Qwen2.5-0.5B-Instructを使ったため、正確に再現できます。adapterは上に印字した12行のclassで、q_projv_projにrank 8で適用しています。corpusは、稼働中のあるsoftware repositoryでtrackedされているMarkdown documentationで、2つのappend-only logを除いたものです。そのchange rateは、そのrepositoryのversion historyから数えました。

  1. OpenAI, Supervised fine-tuning, developers.openai.com/api/docs/guides/supervised-fine-tuning, and Model optimization, .../guides/model-optimization, both accessed 2026-09-07。出所:supervised fine-tuningが最適なものの表(classification、nuanced translation、specific formatでのcontent生成、instruction-following failuresの修正);shorter promptsとlower latencyを含む4つのclaimed benefits;training examplesのminimum 10と50から始めるrecommendation;そして「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はpretrainingから来て、alignmentはどのformatで話すかを教える — そして厳選された1000例で十分だった理由です。

  3. Brown, T. et al. Language Models are Few-Shot Learners. arXiv:2005.14165 (2020)。正直なbaselineとしてのin-context learningの出所です。taskはprompt内で実演され、weightは更新されません。

  4. Ovadia, O., Brief, M., Mishaeli, M. and Elisha, O. Fine-Tuning or Retrieval? Comparing Knowledge Injection in LLMs. arXiv:2312.05934 (2023)。知識注入では、pretrainingですでに見ていたfactを含め、検索がunsupervised fine-tuningに勝ちました。

  5. Gekhman, Z. et al. Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations? arXiv:2405.05904 (2024)。新しいknowledgeを導入するexampleはゆっくりfitされ、それにfitすると無関係なquestionでhallucinationが増えます。

  6. Google, Vertex AI generative AI pricing, cloud.google.com/vertex-ai/generative-ai/pricing, accessed 2026-09-07。この章のcost sheetにあるすべてのfigureの出所です。global endpoint上のGemini 3.5 Flashは100万tokenあたりinput $1.50、cached input $0.15、text output $9.00で、non-global endpointsは10 %高い;同じmodelのsupervised fine-tuningはtraining tokens 1,000あたり$0.01で、「training tokens are calculated by the total number of tokens in your training dataset, multiplied by your number of epochs」;explicit context cache storageはtokenあたりhour $0.000001;Gemini Embedding inputはonlineで1,000 tokenあたり$0.00015;そして「for model inference starting from Gemini 3, tuned model endpoint prediction price will be 1.5 times of the base model」というnoteです。 2 3 4

  7. OpenAI, Pricing, developers.openai.com/api/docs/pricing, accessed 2026-09-07。全文引用したwind-down notice、およびcross-checkに使ったcurrent text ratesの出所:gpt-5.6-terra standard short contextが100万tokenあたりinput $2.00、cached input $0.20、cache write $2.50、output $12.00で、batch tierはそれぞれ半額です。このpageには7つのbase modelに対する10本のfine-tuning rowがあり、そのうちtokenではなく時間で課金されるものはちょうど1つです。o4-mini-2025-04-16のreinforcement fine-tuningで、training hourあたり$100.00です。同じpageは、2026年3月5日以降にreleasedされたmodelsのdata-residency endpointsに10 % upliftがあると記しています。 2 3

  8. OpenAI, Deprecations, developers.openai.com/api/docs/deprecations, accessed 2026-09-07。self-serve fine-tuning timeline(2026年5月7日、2026年7月2日、2027年1月6日)と、2026年10月23日にft-gpt-3.5-turboft-gpt-4ft-gpt-4.1-nano-2025-04-14ft-babbage-002ft-davinci-002がshutdownされ、それぞれrecommended replacement base model付きで掲載されていることの出所です。

  9. Anthropic, developer documentation index, platform.claude.com/llms.txt, accessed 2026-09-07。掲載699 pageのうちfine-tuningについてのものはなく、platform.claude.com/docs/en/build-with-claude/fine-tuningは404を返します。

  10. Amazon Web Services, Amazon Bedrock pricing, aws.amazon.com/bedrock/pricing/, accessed 2026-09-07。model-customisation sections(Amazon Nova、Amazon Titan、Cohere、Meta、Qwen、OpenAI open-weight models — Claudeなし)、custom modelごとのstorage月額$1.95、そして引用したworked example「1 model unit × $21.18 × 24 hours × 31 days = $15,757.92」の出所です。 2

  11. Together AI, Pricing, together.ai/pricing, accessed 2026-09-07。16Bまでのmodelsに対するfine-tuningの100万tokenあたり価格:supervised fine-tuningはlow-rank $0.48、full $0.54、direct preference optimisationは$1.20と$1.35で、価格は「training dataset size × number of epochs」にevaluation tokensを加えて計算され、jobあたり「minimum charge of $4.00」があります。GPU capacity:HGX H100はon demandでGPU-hourあたり$3.99、preemptibleで$1.99、H200は$5.99です。 2


作成者

David Vicente Campos

NeuraLIA Labs創業者、MyRealFood共同創業者

レオン大学出身のコンピューターエンジニアです。MyRealFoodを共同創業し、CTOとして、何百万人もの人がより良い食生活のために使ってきたアプリを開発しました。また、NeuraLIA Labsを創業し、そこでAIプロダクトを開発しています。ここでは、私がその過程で理解する必要があったことを、誰かにこう説明してほしかったと思う形で書いています。

著者について詳しく

NeuraLIA Labsが公開しています。

新着記事を受信トレイにお届け

AIニュース、ガイド、プロダクトアップデートを、読む価値のある記事を公開したときだけ短いメールでお送りします。

コース目次

Abstract software decision engine with branching paths, probability nodes, and glowing gates.
jev読了15分

Jev AIモデルは文章ではなく意思決定のために作られている

TypeSafe AIのJevが注目されているのは、ソフトウェアの知能を確率の問題として扱うからです。適切な分岐を選び、信頼度を添え、コードが必要としているのが意思決定であるときに、LLMに文章を書かせるためのコストを避けます。

Abstract legal research workspace with documents, search nodes and governance controls.
openai読了14分

OpenAIのAstra for Lawは新モデルではなく、法律AIシステム

OpenAIの法律分野での発表の本質は、新しい基盤モデルそのものではなく、その周辺にあるシステムです。ドメイン検索、信頼できるツール、権限、ベンチマーク、レビュー経路が重要になります。

Abstract agent runtime sorting documents, memory blocks and pointer nodes inside a bounded context frame.
context-engineering読了12分

Context engineering for long-horizon AI agents

Long-running agents do not fail only because the window is small. They fail when files, tool outputs and stale history crowd out the task the agent was supposed to finish.

モデル選びは、LIAにおまかせ。

すべてのAIモデルをひとつの場所で。今日から無料で。