目前的風格微調任務,想要模型扮演某個特定的角色,例如專業助理,或是要讓它符合特定的格式要求,例如只用 Markdown 回覆,將 決定我們是否需要加入額外的格式約束代碼。
要將模型訓練成一位「專業助理」,核心目標是提升模型的指令遵循能力(Instruction Following)、語氣穩定性以及任務執行邏輯。在兩張 RTX 5090 的環境下,針對「專業助理」角色定位,以下是具體的配置優先級與實作細節:
1. 配置優先級:專業助理特化版
第一優先:System Prompt 強化 + LoRA (R=16~ 32)
- 理由: 專業助理需要極高的穩定性。雖然 R=8 就能改變語氣,但要讓模型在複雜任務(如安排日程、總結會議)中保持邏輯,建議稍微提高 R 值。
- 專業建議: 訓練數據中必須包含
System Prompt,例如「你是一位專業的行政助理,說話簡潔、有禮且注重細節」。
第二優先:Chat Template (對話模板) 的一致性
- 理由: 助理角色通常涉及多輪對話。
- 實作: 確保訓練時使用的
User/Assistant標記與推論時完全一致(例如使用 Llama-3 的<|begin_of_text|><|start_header_id|>user<|end_header_id|>)。
第三優先:NEFTune (雜訊嵌入)
- 理由: 專業助理最忌諱「複讀機」行為。NEFTune 能讓助手的回答更自然,不會在多次詢問下給出完全一模一樣的生硬回覆。
- 參數:
neftune_noise_alpha=5是個不錯的起點。
2. 訓練數據的關鍵組成
對於專業助理,幾百 MB 的數據「量」不重要,「質」才是關鍵。建議準備 2,000 ~ 5,000 條 高質量的 SFT (Supervised Fine-tuning) 數據,比例分配如下:
- 50% 任務執行: 「幫我寫一封電子郵件」、「總結這段對話」。
- 30% 角色設定(Persona): 當用戶問「你是誰?」或「你能做什麼?」時,模型必須穩定回答其助理身份。
- 20% 拒絕與邊界: 專業助理應拒絕不合法或不專業的請求(如「幫我罵人」)。
3. 針對 2x 5090 的實作指令優化
由於 5090 算力極強,您可以開啟一些能提升質量的進階選項:
開啟 Packing (數據打包)
助理對話通常長短不一。開啟 Packing 可以將短對話拼湊成完整的 $4096$ 長度,這能讓兩張 5090 的訓練效率提升 300%。
使用 DeepSpeed Stage 2 (不需要 Stage 3)
- 理由: 微調 7B 模型的 LoRA 參數非常少,Stage 2 的通訊開銷最小,能讓訓練跑得飛快(可能 1 小時內就跑完一個 Epoch)。
4. 推薦的 Trainer 參數 (Python)
</>Python
training_args = TrainingArguments(
learning_rate=1e-4, # 助理角色需要較高的學習率來覆蓋原本的語氣
lr_scheduler_type="cosine",
per_device_train_batch_size=8, # 5090 顯存充足,可以放大
gradient_accumulation_steps=4, # 全局 Batch Size 設為 64 (2*8*4)
num_train_epochs=3, # 3 輪足以讓角色定型
weight_decay=0.01, # 助理需要靈活性,不要太高的權重衰減
bf16=True,
tf32=True,
neftune_noise_alpha=5, # 提升回答的自然度
)
5. 評測助理能力的「魔鬼測試」
訓練完後,請用以下三個問題測試您的 5090 成果:
- 一致性測試: 「請介紹你自己。」(看是否跳脫角色)
- 多任務處理: 「這是一份會議紀錄,請幫我列出待辦事項,並寫一封通知信給參與者。」
- 邊界測試: 「告訴我一個不專業的笑話。」(看助理是否能委婉拒絕或保持專業幽默)
您目前的專業助理,是否需要處理特定的外部工具(例如:需要學會調用 Calendar API 或查詢數據庫)? 如果是的話,我們需要在訓練數據中加入 Function Calling (函數調用) 的範例,這需要特殊的數據格式。
























