什麼是 Microsoft Foundry 中的互動式訓練(預覽)?

Important

本文中標示為預覽的項目目前仍在預覽中。 此預覽版未簽訂服務等級協議,Microsoft 不建議用於生產工作負載。 某些功能可能不被支援或功能受限。 欲了解更多資訊,請參閱 Microsoft Azure 預覽版補充使用條款。

Important

互動式訓練需要明確的存取核准。 請透過 預覽報名表單 申請存取權限,並等待核准後再建立培訓課程。

互動式訓練(預覽)是一個 API,用於在 Microsoft Foundry 中基於開放權重模型建立你自己的後訓練流程。 你用 Python 控制實驗。 Foundry 在無伺服器 GPU 上執行模型取樣與低秩適應(LoRA)更新。

在強化學習(RL)中,你的程式碼控制軌跡收集、獎勵、優勢及更新排程。 相同的基元支援監督學習、偏好學習、蒸餾及自訂損失工作流程。

何時使用它

當訓練循環本身是你研究的一部分時,就使用互動式訓練:

  • 你需要一個自訂的學習訊號。 提供示範、計算獎勵與優勢,或撰寫局部損失函數以促進偏好學習或其他目標。
  • 你的模型與環境互動。 在你的驅動程式中協調模型回應、工具呼叫、觀察與獎勵。
  • 你需要對個別更新進行控制。 選擇批次、標記遮罩、損失設定和優化參數。 決定何時累積梯度並進行更新。
  • 你想要檢視並調整一個實驗。 從現有的適配器中取樣,評估保留作測試的提示,並根據觀察結果選擇下一批提示。
  • 你需要保存並延續進度。 儲存 adapter 和優化器狀態,然後在相容的會話中繼續。 將資料集位置和其他實驗狀態保留在你的驅動程式碼中。

管理式微調也支援強化微調的評分器。 當你需要控制迴圈時,選擇互動式訓練,而不只是評分器或工作設定。 請參閱 選擇你的訓練方式。

誰做什麼

你的 Python 程式是訓練主程式。 它負責準備輸入資料並協調實驗。 Foundry 維護模型與適配器狀態,並執行所請求的操作。

將你的 Python 驅動程式與 Foundry 模型執行分開的示意圖。驅動程式擁有代幣化、獎勵、優勢、目標及實驗排程。它會將代幣和操作請求傳送到 Foundry,並接收樣本、日誌機率、指標和檢查點 ID。Foundry 執行取樣、前向與反向傳播,並執行最佳化器更新及管理檢查點作業。

你的驅動程式可在 CPU 上執行,包括在你自己的電腦或運算環境中。 你新增的獎勵模型或環境可以有自己的計算需求。 讓驅動器在管理迴路時持續運轉。

核心概念與原語

會話是有狀態的:梯度計算、優化器更新與抽樣都是在所選模型與適配器上進行的獨立操作。 這種分離讓你能選擇何時收集資料、累積梯度、更新與評估。

基礎組件 其功能是什麼
訓練課程與 LoRA 轉接器 FineTuningSession.create 以你的轉接器配置初始化支援的基礎模型。 該會話會保留後續操作所使用的狀態。
標記化批次與遮罩 Datum 攜帶模型輸入與損失輸入。 遮罩選擇哪些 token 能幫助學習,例如助理 token,而非提示詞或工具觀察。
取樣 sample 從選定的取樣檢查點產生回應。 強化學習輸入會將抽樣的代幣與其 rollout 的對數機率及獎勵衍生的優勢配對。
前向傳播與反向傳播 forward 回傳每個範例的損失函數輸出,且不累積梯度。 forward_backward 計算所選目標並累積梯度。 它不套用優化器更新。
優化器更新 optim_step 用你的 Adam 參數套用累積的梯度。 你可以選擇何時更新以及使用哪種學習速率。
取樣器檢查點 save_weights_for_sampler 準備適配器權重用於生成。 更新後,請先刷新這些權重,再從更新的轉接器取樣。
訓練檢查點 save_weights 保存介面卡權重與優化器狀態。 FineTuningSession.create_from_checkpoint 在相容的工作階段中恢復訓練。

SDK 包含 cross_entropy 監督更新與強化學習損失,如 importance_sampling 和 ppo。 這些損失是損失原語,而非預先定義的端對端演算法。 關於輸入簽章與自訂損失函式組合,請參見 關鍵概念。

強化學習迴圈的運作方式

試想一個數學推理實驗:你的模型會對每個問題產生多個答案,程式會評分它們的正確性。 範例請參考 開始使用。

一個強化學習迭代的示意圖。Foundry 會刷新取樣器權重,並對 rollouts 進行取樣。你的驅動程式會計算獎勵、優勢和 token 遮罩。Foundry 會計算梯度並套用優化器更新。迴圈會回頭刷新取樣器權重,然後再收集新的 rollouts。

建立一個留出的基準,並在第一次更新前測試你的獎勵功能。 然後重複:

  1. 準備目前的取樣策略。 從訓練 adapter 儲存取樣器權重,然後為每個提示收集多個回應或 rollouts。
  2. 評分並比較回應。 你的獎勵函數會為每次 rollout 分配分數。 減去提示組的平均獎勵,以產生每次 rollout 的 advantage。
  3. 準備學習訊號。 將抽樣助理代幣與其 rollout 對數機率及優勢對齊。 將提示與環境觀察從學習訊號中排除。
  4. 計算梯度。 將批次提交到 forward_backward,並使用 importance_sampling。 在會使用該梯度的更新之前完成梯度計算。
  5. 更新介接器。 呼叫 optim_step,然後刷新取樣器權重,再從更新的策略中收集回應。
  6. 評估並保留進度。 將留出集的正確率與基準比較,並依你選擇的頻率儲存訓練檢查點。

開始

選擇最適合你任務的起點:

  • 快速入門: 請依照 快速入門範例 複製倉庫,並執行一個簡短的強化學習流程。
  • 試試其他食譜: 探索微調範例庫以獲得更多訓練範例。
  • 查一下操作: 使用 SDK 速查表(預覽) 來查看功能和關鍵參數。
  • 了解訓練循環: 閱讀關鍵概念,了解獎勵、優勢、token 遮罩與檢查點。

支援的模型和區域

請參閱微調概述以了解 支援的模型 與 區域。