經過前面的準備,我們已經擁有了專屬的問答資料集。今天,我們要讓AI導遊開始它的學習之旅。關鍵在於使用 PEFT (Parameter-Efficient Fine-Tuning) 函式庫,它讓微調變得非常輕鬆。
首先要使用 PeftModel 這個核心工具,將設定好的 LoRA 適配器載入到預訓練的Gemma模型上。
這個步驟並不會改變原始模型龐大的參數,而是在它的基礎上疊加一層輕量級的學習層。這個過程極大地減少了訓練所需的計算資源,可以在一般的硬體上也能對模型進行微調。
from peft import get_peft_model, LoraConfig, TaskType
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer
# 定義 LoRA 配置
lora_config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
r=8,
lora_alpha=32,
target_modules=["q_proj", "v_proj"], # 指定要應用 LoRA 的模型層
lora_dropout=0.05,
)
# 載入預訓練的 Gemma 模型
model = AutoModelForCausalLM.from_pretrained("google/gemma-2b")
# 將 LoRA 適配器載入到模型中
model = get_peft_model(model, lora_config)
完成載入後,啟動訓練流程。整個訓練過程就像是讓 AI 閱讀我們的問答資料集,並學習如何回答相關問題。在訓練過程中,你可以透過監控 Loss 值來評估學習進度。這個數值代表了模型預測的結果與真實答案之間的差距。當 Loss 值越小,代表模型的預測越準確,也就意味著學習效果越好。
# 使用 Trainer啟動訓練
trainer = Trainer(
#設定參數
model=model,
args=training_args, # training_args
train_dataset=dataset,
tokenizer=tokenizer,
)
# 啟動訓練
trainer.train()
到這裡你已經成功地啟動了模型微調。明天將檢視訓練成果,並將模型儲存起來,為後續的部署做準備,謝謝各位今天的觀看。