View a markdown version of this page

模型合併 - Amazon Nova

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

模型合併

重要

在本文件中,我們將參考「基礎模型」作為兩個模型之一。如果未執行反覆訓練,或先前反覆訓練執行的輸出,則可能是原始的基礎模型 (例如 Nova Lite 2.0)。

微調完成後,您的自訂模型會經歷選用的使用者可設定模型合併步驟,將新學到的知識與「基礎模型」的功能混合。此程序可確保您的最終模型保留「基礎模型」的原始智慧,同時整合在最新微調訓練執行期間學到的特殊行為。模型合併可減輕稱為災難性忘記的現象,其中模型在微調新資料後會失去先前學到的知識。

依訓練類型的模型合併適用性

模型合併僅適用於 SFT 訓練。下表摘要說明每種訓練類型的模型合併行為:

訓練類型 模型合併行為
受管微調 (SFT) 套用使用者可設定的模型合併。您可以控制微調模型與基礎模型之間的合併權重,如本文件所述。
強化微調 (RFT) 無模型合併。訓練過的模型檢查點會直接輸出為最終模型。合併步驟中沒有涉及的基礎模型。
持續訓練前 (CPT) 無模型合併。訓練過的模型檢查點會直接輸出為最終模型。合併步驟中沒有涉及的基礎模型。

何時使用模型合併

您應該在下列情況下啟用模型合併:

  • 一般功能會在微調後降級。如果您的微調模型在訓練資料以外的任務 (例如數學、推理或編碼) 上失去效能,則合併會混合基礎模型知識來復原這些技能。

  • 反覆/持續訓練。在先前自訂檢查點上進行微調時,合併對於保留先前回合中學到的技能至關重要。如果沒有它,每個新回合都可以覆寫上一回合教導的內容。

在以下情況下,您可能不需要模型合併:

  • 您只想要最大化目標任務效能,而一般功能保留不是問題。

  • 爬山。您想要繼續在相同的資料集上反覆運算,以進一步最佳化評估效能。

  • 您正在使用以推理為基礎的微調。研究已顯示以推理為基礎的 SFT 可大幅減輕災難性忘記。

如何設定模型合併權重

的預設值model_importance_score.fine_tuned_model為 1.0,表示訓練輸出檢查點完全使用微調的權重,而不會從「基礎模型」混合。當您的訓練資料完整且緊密地代表您的目標任務時,預設值可正常運作。

您可以在超參數model_importance_score中設定 ,以控制最終模型如何平衡專業化與一般知識。例如:

training_config: # ... model_importance_score: fine_tuned_model: 0.75 # set value between 0.0 to 1.0 inclusive

model_importance_score.fine_tuned_model 接近 1.0 的值會使模型傾向於您的微調資料,而接近 0.0 的值則保留更多基本模型的一般功能。在上述範例中,最終訓練模型是透過將特定資料集上的 75% 微調模型與 25% 的「基礎模型」合併來產生。

如果您注意到微調後的模型失去一般功能 (例如,訓練資料外的任務效能降低),請減少 model_importance_score.fine_tuned_model 以更了解「基礎模型」。

注意

即使我們可以設定模型合併程序的權重,使用者仍無法選擇要合併的模型。換句話說,它永遠介於「基礎模型」與目前訓練執行的微調模型之間。「基礎模型」可以是原始的基礎模型 (例如 Nova Lite 2.0),或先前反覆訓練執行的輸出。

選擇模型合併權重

model_importance_score.fine_tuned_model 參數控制微調模型與基礎模型之間的平衡。從下列準則開始:

案例 建議的起始權重 理由
具有完整訓練資料的單回合 SFT 1.0 (預設,不合併) 您的訓練資料涵蓋目標任務集;合併會減少學習到的行為,而不會帶來好處。
一般功能降級的單回合 SFT 0.7–0.9 混合足夠的基礎模型知識來復原一般技能 (數學、推理、編碼),同時保留大部分微調後的效能。
反覆/持續 SFT (在先前的檢查點建置) 0.3–0.7 較低的權重保留先前訓練回合中更多的知識。如果沒有合併,後續回合可能會覆寫先前回合中學到的技能。
探索性/不確定 0.7 合理的中間地面;根據評估結果進行調整。

一般原則:較高的權重 (較接近 1.0) 可最大化目標任務效能,但可能會失去一般功能。較低的權重 (較接近 0.0) 可保留基礎模型的廣泛技能,但可減少專業化。沒有全域的最佳值 — 正確的權重取決於您的資料集大小、網域與基礎模型重疊,以及您需要保留的功能。

提示

如果您的訓練資料包含推理追蹤 (chain-of-thought),您通常可以使用較高的合併權重 (或完全略過 1.0 的合併),因為推理擴增資料可作為保留一般功能的規則化工具。

評估合併權重

訓練完成後,請評估合併模型以確認合併權重是否適當。您不需要多個訓練執行 — 單一評估通過可以告訴您是否進行調整。

  • 目標任務效能 — 在保留的測試集中執行您的網域特定評估 (準確性、F1、擷取分數等)。與基本模型 (在任何微調之前) 進行比較,以確認微調效能改善。如果基礎模型的增益小於預期,您的合併權重可能太低 — 基礎模型的權重正在排除訓練期間學到的內容。

  • 一般功能 spot-check — 使用訓練網域以外的一些任務提示合併模型 (例如數學字詞問題、摘要請求或編碼問題)。以定性方式將回應與基礎模型進行比較。如果合併模型的回應明顯比基礎模型差—不連貫、拒絕回答或對基礎模型處理良好的任務產生 Gibberish—您的合併權重太高,且模型失去一般功能。

合併的運作方式:全階微調

完整排名訓練會產生一組完整的模型權重。在合併期間,每個參數都會計算為加權混合:

# Weighted interpolation Merged Model = (1 - model_importance_score.fine_tuned_model) * Base Model + model_importance_score.fine_tuned_model * Fine-Tuned Model

例如,使用 model_importance_score.fine_tuned_model = 0.3,合併模型是 70% 的「基礎模型」知識和 30% 的微調知識。

合併的運作方式:LoRA 微調

LoRA (低排名調整) 學習一對精簡的低階矩陣 (A 和 B),以低排名更新表示適應。在模型合併過程中,每個 A 和 B LoRA 矩陣都會由 縮放 model_importance_score.fine_tuned_model,如下所示。在這些公式中, alpha是 LoRA 擴展係數 (peft.lora_tuning.alpha在您的訓練配方中), rank是 LoRA 排名。如需可用的 alpha值,請參閱 LoRA SFT 訓練配方

請注意,此時,A 和 B 矩陣僅包含來自最新微調執行的知識。它不知道先前的訓練執行。先前訓練執行的知識將來自模型與「基礎模型」合併,或先前階段的 LoRA 轉接器合併,如下所述。

Scaled_A = sqrt(model_importance_score.fine_tuned_model) * sqrt(alpha/rank) * A Scaled_B = sqrt(model_importance_score.fine_tuned_model) * sqrt(alpha/rank) * B

LoRA 訓練會產生兩個模型成品:完全合併的模型和一組合併的 LoRA 轉接器。讓我們分別查看每個項目。

完全合併的模型

LoRA 更新已擴展並新增至「基礎模型」:

Merged Model = Base Model + (Scaled_B @ Scaled_A)

現在, Merged Model具備目前訓練執行的知識,以及Base Model根據使用者設定的 從 繼承一些知識model_importance_score.fine_tuned_model

合併的 LoRA 轉接器

LoRA 轉接器的合併方式取決於您執行的是單一階段還是反覆訓練。

  • 對於單一階段 LoRA 訓練 (無疊代訓練),微調的 LoRA 轉接器會直接儲存而不合併,因為先前沒有一組要合併的 LoRA 轉接器。

  • 反覆式全 LoRA 工作流程中,每個階段的轉接器會合併為一組:

    Merged = Stage1_Scaled_B @ Stage1_Scaled_A + Stage2_Scaled_B @ Stage2_Scaled_A

    Merged LoRA 轉接器將包含先前訓練反覆運算的知識,以及根據使用者定義的 的最新微調知識model_importance_score.fine_tuned_model

    此外,請密切注意混合 LoRA 和全階訓練的反覆訓練限制

這些合併轉接器Merged_BMerged_A反映完整的訓練歷史記錄,並用於隨需推論