一句話解釋
Inference(推論)是 AI 模型收到你的輸入、用它學過的東西運算、然後產出回答的整個過程。
白話解釋
如果把 AI 模型比喻成一個學生,Training(訓練)就是這個學生花好幾個月念書、做練習、建立知識體系的過程。Inference(推論)則是考試那一刻——拿到題目、用學過的知識想答案、寫出回答。
你每次跟 ChatGPT 或 Claude 對話,背後發生的就是 inference。你輸入一段文字,模型在 GPU 上跑一輪計算,產出回答。這個「跑一輪計算」就是推論。
訓練只要做一次(或定期更新),但推論在每次使用時都要發生。這就是為什麼推論的成本和速度對使用者體驗這麼重要。一個模型可能花了數千萬美元和好幾個月的時間訓練完成,但一旦訓練好了,它就像一本已經寫好的教科書——每次有人問問題,只需要「翻書找答案」(推論),不需要重新寫一本書(訓練)。
另一個重要的區別是:訓練會改變模型的參數(模型在「學習」),但推論不會改變任何參數。推論只是用現有的參數來計算結果。這就是為什麼 ChatGPT 不會從你和它的對話中「學到」新知識——每次對話都是在做推論,模型本身沒有被修改。
推論怎麼運作
對 LLM 來說,推論的過程特別有趣,因為它是「一個 token 一個 token」地產出回答。理解這個過程有助於你優化 AI 應用的效能和成本。
當你送出一段文字(prompt)給 LLM,模型做的事情是:
第一步,把你的輸入文字切成 tokens,送進模型。模型一次性處理所有輸入 tokens(這叫 prefill 階段),建立對你問題的「理解」。在這個階段,模型會為每個 token 計算出一組稱為 Key 和 Value 的向量(這就是所謂的 KV Cache 的來源)。這個階段的計算量主要取決於你輸入的 token 數量,輸入越長,prefill 的時間越久。
第二步,開始產生輸出。模型預測「下一個最可能的 token 是什麼」,產出第一個 token。這個預測是基於一個機率分佈——模型會給詞彙表中的每個 token 一個機率,然後從中選一個。Temperature 參數就是在這個環節起作用的:temperature 越高,選擇越隨機;越低,越傾向選機率最高的 token。
第三步,把剛才產出的 token 加回輸入,再次預測下一個 token。重複這個過程,直到模型覺得回答結束了(產出一個「結束」token),或是達到你設定的 max_tokens 上限。
這就是為什麼你在 ChatGPT 上會看到文字一個字一個字蹦出來——它確實是一個 token 一個 token 產生的。這個逐 token 產生的過程叫做 autoregressive decoding(自迴歸解碼),是目前所有 LLM 共通的推論方式。
每產生一個 token,模型裡的數十億個參數都要做一次完整的矩陣運算。70B 的模型代表每個 token 需要 700 億次的乘加運算。這就是為什麼推論需要強大的 GPU——普通的 CPU 做這種大規模矩陣運算的效率遠遠比不上 GPU。
推論的兩個階段
推論過程可以更細緻地分成兩個階段,理解這兩個階段有助於你理解推論效能的瓶頸在哪裡。
Prefill 階段(也叫 prompt processing 階段):處理你送進來的所有輸入 token。這個階段是計算密集型(compute-bound)的,因為模型需要一次性處理大量的 token。GPU 的運算能力是這個階段的瓶頸。好消息是,輸入 token 可以平行處理,所以 prefill 的速度通常很快——即使你送進去一萬個 token,prefill 可能只需要幾秒鐘。
Decode 階段(也叫 generation 階段):逐 token 產生輸出。這個階段是記憶體頻寬密集型(memory-bandwidth-bound)的,因為每產生一個 token 都需要把整個模型的參數從記憶體讀出來做一次運算。GPU 的記憶體頻寬是這個階段的瓶頸。因為是逐 token 產生,而且每個 token 都依賴前一個 token 的結果,所以這個階段無法平行化。
這兩個階段的特性差異解釋了一些你可能觀察到的現象。例如,為什麼即使你的 prompt 很長(一萬個 token),第一個回應 token 出現的速度(TTFT)卻沒有慢很多?因為 prefill 可以平行處理。但為什麼回答的後半段越來越慢?因為隨著 context 變長,decode 階段每一步需要回顧的 KV Cache 越來越大。
為什麼推論要花錢
如果你用的是雲端 API(像 OpenAI API 或 Anthropic API),每次推論都要付錢。收費通常按 token 計算。
成本的組成很直覺:你佔用了 GPU 的時間。GPU 很貴(一張 H100 大約台幣 100 萬),你用的每一秒都是成本。AI API 供應商需要購買大量的 GPU、建造資料中心、支付電費和維護費用,這些成本都反映在 API 的定價上。
一般來說,output tokens 比 input tokens 貴。因為輸入 tokens 可以平行處理(一次算完),但輸出 tokens 必須逐個產生。產一個 token 就要跑一次模型,效率比較低。以目前的市場定價來看,output tokens 的價格通常是 input tokens 的 3-5 倍。
不同模型的定價差異很大,這反映了模型大小和品質的差異:
| 模型 | Input(每百萬 tokens) | Output(每百萬 tokens) | 適合場景 |
|---|---|---|---|
| Claude Haiku | ~0.25 美元 | ~1.25 美元 | 分類、擷取、簡單回答 |
| Claude Sonnet | ~3 美元 | ~15 美元 | 一般用途、程式碼 |
| Claude Opus | ~15 美元 | ~75 美元 | 複雜推理、創意寫作 |
如果你的應用每天要處理 100 萬個 output tokens,光是推論成本就是每天 15 美元(用 Sonnet)。規模一大,這筆錢很快就會累積。每月的推論費用可能從幾百美元到數萬美元不等,取決於你的使用量和選擇的模型。
影響推論速度的因素
模型大小直接影響速度。70B 模型比 7B 模型慢大約 10 倍,因為每個 token 需要的計算量是 10 倍。這是一個很直觀的關係——模型越大,參數越多,每個 token 需要做的矩陣運算就越多。在選擇模型時,你需要在「品質」和「速度」之間做取捨。很多時候,小模型在特定任務上的表現已經足夠好,不需要動用最大的模型。
Context 長度也很重要。隨著對話越來越長,模型需要「記住」的 tokens 越多,每產出一個新 token 需要回顧的東西就越多。這就是 attention 機制的計算量會隨 context 長度平方成長的原因。不過,現代的推論引擎(如 vLLM、TensorRT-LLM)使用了各種優化技術來緩解這個問題,例如 FlashAttention 可以顯著減少 attention 的記憶體使用和計算時間。
硬體當然也是關鍵。同一個模型在 H100 上跑可能是 A100 的兩倍速。量化後的模型在同樣硬體上跑得更快,因為記憶體頻寬的瓶頸被緩解了。在消費級硬體上(如 RTX 4090),你可以跑小型到中型的模型,但大型模型(70B 以上)通常需要專業的伺服器級 GPU。
批次大小(batch size)影響的是吞吐量而非單一請求的延遲。如果有很多人同時發請求,GPU 可以把多個請求打包一起算,提高整體效率。這就是為什麼 AI API 供應商在尖峰時段可能會有更好的性價比——更多的請求可以被批次處理,降低了每個請求的成本。但對單一使用者來說,批次處理不會讓你的請求變快。
推論優化技術
推論優化是一個活躍的研究和工程領域。以下是幾種常見的技術和它們的原理。
Prompt Caching 是最簡單有效的優化。如果你的 system prompt 很長但每次都一樣,服務商可以把它快取起來,下次不用重新計算。Anthropic 的 Prompt Caching 可以省下 90% 的 input token 成本。使用方式很簡單——你只需要在 API 請求中把不變的部分標記為可快取,服務商會自動在後端做快取和重用。對於有固定 system prompt 或需要反覆處理相似文件的應用,這個優化的效果非常顯著。
KV Cache 是推論引擎內部的優化。在逐 token 產生輸出時,之前計算過的 Key 和 Value 向量可以存起來,不用每次重算。幾乎所有推論引擎都有這個優化。沒有 KV Cache 的話,每產生一個新 token 就要從頭計算整個 context 的 attention,計算量會隨 context 長度線性增加。有了 KV Cache,每一步只需要計算新 token 的 attention,效率大幅提升。
Speculative Decoding 是一種加速逐 token 生成的技巧。用一個很小很快的模型先「猜」一串可能的 tokens(例如一次猜 5 個),再讓大模型一次性驗證這 5 個 token 是否正確。如果猜對了,就等於在一次計算中產生了多個 token,速度提升明顯。這個技術的前提是小模型的猜測準確率要夠高,否則頻繁的猜錯和重試反而會更慢。
量化(Quantization)降低每次計算的精度(例如從 FP16 降到 INT8 或 INT4),讓同樣的硬體在單位時間內算更多。量化後的模型佔用的記憶體也更少,讓你可以在更便宜的硬體上跑更大的模型。代價是精度的損失——量化後的模型品質會比全精度版本略差,但在大多數應用中這個差異不明顯。
Batching 把多個請求合在一起處理,提高 GPU 的利用率。進階的技術如 continuous batching(也叫 iteration-level batching)可以在一個請求結束後立即加入新請求,而不用等整個批次都結束。這讓 GPU 的利用率從傳統 batching 的 30-50% 提升到 80-90%。
台灣企業的推論選擇
在台灣,企業使用 AI 推論主要有三種選擇,每種各有適合的場景和限制。
直接用雲端 API(OpenAI、Anthropic、Google)。好處是不用管硬體、隨開即用、按用量付費、永遠可以用到最新的模型。缺點是資料要送到國外(對有資料主權要求的企業是大問題)、長期用下來可能比自建貴、受限於服務商的規則和速率限制。適合的場景:POC 驗證、中小型應用、不處理高度機密資料的任務。台灣的企業在使用雲端 API 時需要特別注意個資法的規定,確認資料跨境傳輸是否符合法規要求。
在台灣的雲端跑推論(GCP 台灣區域、AWS 等)。好處是資料留在台灣(或至少在亞洲區域)、可以選擇開源模型、可以完全控制推論引擎的設定。缺點是要自己管維運、GPU 實例很貴(一台 A100 每月數萬元台幣)、需要有 ML 工程師負責模型部署和監控。適合的場景:中大型企業、有資料合規要求、需要客製化模型的情況。
自建推論伺服器。好處是完全自主、長期成本可能最低、資料不出公司、可以根據需求客製化硬體和軟體。缺點是前期投資大(一台有多張 GPU 的推論伺服器可能要數百萬台幣)、需要 ML 工程師維護、硬體折舊。適合的場景:大型企業、有長期且穩定的大量推論需求、處理高度機密資料。在台灣,一些半導體公司和金融機構已經開始自建推論基礎設施。
對中小企業來說,API 通常是最合理的起點。等用量大到每月 API 費用超過自建成本的 2-3 倍時,再考慮自建。這個轉折點通常出現在每月 API 費用超過 5,000-10,000 美元的時候。
安全與限制
推論本身的安全考量主要有幾個面向。
資料隱私:你送給 API 的每一個字,都會經過服務商的伺服器。即使服務商承諾不用你的資料訓練模型,傳輸和暫存過程中仍有風險。服務商的系統如果被入侵,你的資料可能會外洩。對高機密資料,本地推論(自建或 Ollama)是唯一真正安全的選擇。在選擇推論方式時,先做一個資料分級——一般性的資料可以用雲端 API,機密資料只能用本地推論。
推論成本失控:如果你的應用開放給不特定使用者,沒有做好限制,推論成本可能在短時間內暴增。一個惡意使用者或一個寫壞的自動化腳本,可能在幾個小時內消耗掉你一整個月的預算。一定要設定 rate limit 和每日預算上限。在應用層面也要限制每個使用者的使用頻率和每次對話的最大 token 數。
延遲不穩定:雲端 API 的回應時間會因為負載波動。在尖峰時段,原本 2 秒的回應可能變成 10 秒甚至超時。對即時性要求高的應用,需要準備 fallback 方案——例如在主要模型延遲過高時自動切換到較小但較快的模型,或是顯示「系統繁忙,請稍後再試」的提示而不是讓使用者無限等待。
模型幻覺在推論時無法完全避免。推論只是「用模型算答案」,如果模型本身會產生幻覺,推論優化做得再好也不會消除這個問題。在部署 AI 應用時,必須在推論的輸出端加上驗證機制——例如 RAG 系統可以比對模型的回答和參考資料是否一致,分類任務可以檢查模型的信心分數是否足夠高。
模型版本更新的風險:AI 服務商會定期更新模型版本,新版本的推論行為可能和舊版本不同。如果你的應用依賴特定的輸出格式或行為,模型更新可能導致應用出錯。建議在 API 請求中指定具體的模型版本(如 claude-sonnet-5-20250514),而不是用 latest 或 auto 等動態版本。
常見問題
推論和訓練哪個比較花錢?
單次來看,訓練比推論貴非常多(訓練一次可能要數百萬美元)。但從總量來看,推論的累積成本通常遠超訓練。因為訓練做一次就好,推論卻是每個用戶、每次對話都要發生。OpenAI 曾透露,他們的 GPU 大部分時間是在做推論而非訓練。對企業來說,這意味著推論成本才是長期營運的主要開銷,選擇合適的模型和優化推論效率比選擇最強的模型更重要。
為什麼 AI 回答有時候很慢?
多半是推論延遲。可能的原因有好幾個:模型太大(你用了最強但也最慢的模型)、context 太長(你的對話已經很長了,每個 token 的生成都變慢)、伺服器負載太高(尖峰時段很多人同時在用)、你的網路延遲(跨太平洋的延遲加上 DNS 查詢時間)。如果你用的是付費方案但仍然慢,通常是服務商的 GPU 負載過高。可以嘗試錯開尖峰時段使用,或是換一個模型試試。
本地推論跟雲端 API 差多少?
速度上,消費級 GPU(如 RTX 4090)跑量化模型大約是每秒 20-60 tokens,雲端 API 通常是每秒 50-150 tokens。品質上,如果你本地跑的是量化版本(如 INT4 量化),品質會比 API 的全精度版本差一些,但差距通常在 1-3% 以內。好處是資料不離開你的電腦,而且不用付按 token 計費的費用——硬體買了之後推論是「免費」的(當然要算電費和折舊)。壞處是你需要自己管理模型更新、處理硬體故障、而且不能跑最大的模型(70B 以上通常需要多張 GPU)。
什麼是 TTFT 和 TPS?
TTFT(Time To First Token)是從你送出請求到收到第一個 token 的時間,反映的是啟動延遲。TPS(Tokens Per Second)是產出 tokens 的速度。一般使用者比較在意 TTFT(決定「開始回答」的體感快慢),批次處理比較在意 TPS(決定單位時間能處理多少量)。在評估不同推論服務時,這兩個指標都要看。一個服務可能 TTFT 很快但 TPS 很低(使用者覺得「開始回答很快但打字很慢」),另一個可能相反。
企業怎麼估算推論成本?
粗略公式:每月成本 = 平均每次對話 token 數 × 每天對話次數 × 30 天 × 每 token 單價。比如平均每次對話 2000 tokens(輸入+輸出),每天 1000 次對話,用 Claude Sonnet(假設平均每百萬 tokens 9 美元),月成本大約 2000 × 1000 × 30 ÷ 1,000,000 × 9 = 540 美元。但實際上你還需要加上重試(約 5-10% 的請求會失敗需要重試)、prompt caching 的折扣、以及使用量隨時間的成長。建議在 POC 階段就做好成本追蹤,用真實的數據來預估上線後的成本。
Reasoning model 的推論和一般模型有什麼不同?
Reasoning model(推理模型,如 Claude 的 extended thinking)在推論時會先進行「思考」過程,產生一段內部的推理鏈,然後才輸出最終答案。這代表 reasoning model 的推論時間和成本都比一般模型高,因為它產生了更多的 token(包括思考過程的 token)。好處是在需要多步推理的任務上(數學、邏輯、程式除錯),reasoning model 的準確率明顯更高。
相關文章
參考資料
- Statistical Inference — Wikipedia — 統計推論定義
- Triton Inference Server — NVIDIA — NVIDIA Triton Inference Server 文件
- LLM Inference Tutorial — Hugging Face — Hugging Face LLM 推論教學