大模型推理參數(Inference Parameters)入門
呼叫大型語言模型(LLM)時,可以透過一組推理參數調整模型「如何生成文字」。這些參數不會改變模型本身的知識或能力,只影響輸出的風格、長度與穩定性。
可以在 Playground(例如 AWS Bedrock 控制台)用滑桿調整,也可以在 API 呼叫中直接傳入。
背景:模型是怎麼生成文字的?
LLM 是逐個 token 生成的。每一步,模型都會為所有候選 token 計算一個機率分布,然後從中選出一個,接在已生成的文字後面,再繼續下一步。
|
|
推理參數主要控制兩件事:
- 怎麼選下一個 token(Temperature、Top P、Top K)
- 什麼時候停止生成(Max tokens、Stop sequences)
1. Temperature(溫度)
作用: 控制輸出的隨機程度。
| 設定 | 效果 | 適用場景 |
|---|---|---|
| 低(0~0.3) | 傾向選機率最高的詞,回答穩定、一致、保守 | 程式碼生成、資料抽取、事實問答、分類 |
| 中(0.4~0.7) | 平衡穩定與自然 | 一般對話、摘要 |
| 高(0.8~1.0+) | 低機率的詞也有機會被選,更多樣、有創意,但更容易出錯或離題 | 創意寫作、腦力激盪、文案發想 |
原理: Temperature 會「拉平」或「拉尖」機率分布。
- 溫度低 → 高機率的詞更突出,幾乎總被選中
- 溫度高 → 各詞機率差距縮小,冷門詞機會變大
2. Top P(核取樣,Nucleus Sampling)
作用: 依累積機率縮小候選範圍。
將候選詞按機率由高到低排列,依序累加,直到總和達到 P,只在這些詞中挑選。
|
|
特點: 候選詞的數量是動態的。
- 模型很有把握時(某個詞機率很高),候選很少
- 模型不確定時,候選會變多
3. Top K
作用: 只保留機率最高的 K 個候選詞。
|
|
與 Top P 的差異:
| Top K | Top P | |
|---|---|---|
| 篩選依據 | 固定數量 | 固定機率總和 |
| 候選數 | 永遠是 K 個 | 隨情況變化 |
| 缺點 | 模型很確定時仍保留 K 個,可能選到不合適的詞;很不確定時又可能過度限制 | 較靈活,通常更常用 |
註:並非所有模型 / API 都支援 Top K。
4. Max Tokens(最大 Token 數)
作用: 限制回應的最大長度。
- 達到上限時,輸出會被直接截斷(可能話說到一半)
- API 通常按 token 計費,設定上限有助於控制成本
- 1 個 token 大約是英文 3~4 個字元;中文 / 日文通常 1 個字約 1~2 個 token(視模型的 tokenizer 而定)
建議: 依任務需求設定合理上限,例如一句話的分類任務設小一點,長文生成設大一點。
5. Stop Sequences(停止序列)
作用: 指定一段或多段文字,模型一旦生成這些文字就立即停止。
常見用途:
- 只要單行答案 → 設定
"\n" - 防止模型自己扮演下一輪使用者 → 設定
"Human:"或"User:" - 結構化輸出 → 遇到
"</answer>"就停
|
|
API 呼叫範例(AWS Bedrock Converse API / Python)
|
|
經驗法則
先使用預設值,有明確理由時才調整——而且一次只改一個,再觀察效果。
- 同時修改多個參數,結果改變時就無法判斷是哪個參數造成的
- Temperature 和 Top P 通常只調其中一個,兩者都在控制隨機性,同時調容易互相干擾
- 需要可重現、穩定的結果 → 降低 Temperature
- 需要多樣化、有創意的結果 → 提高 Temperature(或 Top P)
速查表
| 參數 | 一句話說明 | 調高 → | 調低 → |
|---|---|---|---|
| Temperature | 隨機 vs. 專注 | 更有創意、更不穩定 | 更穩定、更保守 |
| Top P | 依累積機率篩選候選詞 | 候選更多、更多樣 | 候選更少、更集中 |
| Top K | 只保留前 K 個候選詞 | 候選更多、更多樣 | 候選更少、更集中 |
| Max tokens | 回應長度上限 | 允許更長回答、成本可能更高 | 回答更短、可能被截斷 |
| Stop sequences | 遇到指定文字即停止 | — | — |