大型語言模型(Large Language Model, LLM),從名字就知道,它並非一般人能僅靠自己電腦訓練的模型。
這類模型通常需要大量的運算資源與海量資料,因此對個人或小型團隊來說,直接訓練是非常困難的。
不過,近幾年有一種非常廣泛使用的訓練方式,稱為 Parameter Efficient Fine-Tuning(PEFT),透過只微調少量參數,我們便能在有限資源下,對大型語言模型進行下游任務的優化。以下簡介幾種常見方式。
範例中我們所使用的模型為 GPT-oss,它是 OpenAI 於 2025 年推出的開源模型。
值得注意的是,距離上一次 OpenAI 開源模型 GPT-2 已經有一段時間,而本次使用的版本為 20B,gpt-oss-20b
在常見基準測試中的表現與 OpenAI o3‑mini 相近,且僅需 16 GB 記憶體即可在邊緣裝置運行,非常適合用於裝置端應用、本地推論,或在無需昂貴基礎設施的情況下快速優化。
下面所使用的套件是 unsloth 它是一個專門針對大型語言模型進行參數微調的框架,我們可以選擇模型,並透過 LoRA 或是 QLoRA 來訓練模型。
from unsloth import FastLanguageModel
import torch
max_seq_length = 1024
dtype = None
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "unsloth/gpt-oss-20b",
dtype = dtype,
max_seq_length = max_seq_length, # Choose any for long context!
load_in_4bit = True, # 4 bit quantization to reduce memory
full_finetuning = False, # [NEW!] We have full finetuning now!
)
原理簡介
LoRA(Low-Rank Adaptation)的核心想法是將大型參數矩陣分解成低秩矩陣,並只更新這些新增的小矩陣。透過這種方式,我們能在保留原始模型能力的同時,大幅降低需要更新的參數量,僅需微調極少部分參數即可完成任務。
在這裡我們使用 LoRA
model = FastLanguageModel.get_peft_model(
model,
r = 8, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128
target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj",],
lora_alpha = 16,
lora_dropout = 0, # Supports any, but = 0 is optimized
bias = "none", # Supports any, but = "none" is optimized
# [NEW] "unsloth" uses 30% less VRAM, fits 2x larger batch sizes!
use_gradient_checkpointing = "unsloth", # True or "unsloth" for very long context
random_state = 3407,
use_rslora = False, # We support rank stabilized LoRA
loftq_config = None, # And LoftQ
)
📘 延伸閱讀:LoRA: Low-Rank Adaptation of Large Language Models
原理簡介
QLoRA 在 LoRA 的基礎上,先將模型進行量化(如 4-bit 壓縮),再進行低秩矩陣微調。這樣即使是超大模型(例如 65B 參數)也能在單張消費級 GPU 上完成微調,且微調後的性能接近全參數微調。
📘 延伸閱讀:QLoRA: Efficient Finetuning of Quantized LLMs
原理簡介
Adapter 方法則是在模型層中插入小型模組,用來學習下游任務特徵。其優勢在於模組化設計,不同任務可對應不同的 Adapter,而不需要重新訓練整個模型,大幅節省資源並便於任務切換。
📘 延伸閱讀:Parameter-Efficient Transfer Learning for NLP
透過以上方法,我們可以在有限運算資源下,對企業級大型語言模型進行訓練與微調。
然而,若我們真的沒有足夠的資源,或者手上只有少量的訓練資料,該怎麼辦呢?
這時 Prompt 技巧 就登場了。Prompt 的核心概念是:語言模型本身已具備廣泛的能力,使用者或開發者不必額外微調,只要設計合適的輸入(prompt),便能完成我們想要的下游任務。
下一篇,我們將深入介紹 Prompt 這一近年來快速成為關鍵技術的應用與設計技巧。