Important
この記事でプレビューとしてマークされているアイテムは、現在プレビュー段階です。 このプレビューはサービス レベル アグリーメント(SLA)なしで提供されており、Microsoft はこれを運用ワークロードでの使用に推奨していません。 特定の機能がサポートされていないか、機能が制限されている可能性があります。 詳細については、「 Microsoft Azure プレビューの追加使用条件」を参照してください。
Important
対話型トレーニングには、明示的なアクセス承認が必要です。 プレビュー サインアップ フォームを使用してアクセスを要求し、トレーニング セッションを作成する前に承認を待ちます。
対話型トレーニングを使用すると、Microsoft Foundry がモデルを実行している間のモデルの学習方法をプログラムで制御できます。 トレーニング ドライバーとも呼ばれるプログラムは、例を選択し、応答を評価し、モデルを更新するタイミングを決定します。
以下の概念では、トレーニング ループの各部分がどのように連携しているかを説明します。 コードと実装の詳細については、 SDK のチートシートを参照してください。
トレーニングセッション
トレーニング セッションでは、実験の実行中にモデルとその現在のトレーニングの進行状況が保持されます。 ドライバーは、応答の生成や更新プログラムの適用など、個々の操作を要求します。
セッションは、マネージド ジョブまたはデプロイとは異なる目的で機能します。
| Resource | Purpose |
|---|---|
| 対話型トレーニングセッション | プログラムは、トレーニング ループを一度に 1 回ずつ制御します。 |
| マネージドファインチューニングジョブ | サービスは、指定したデータと設定から定義済みのトレーニング ワークフローを実行します。 |
| サービス提供のデプロイ | トレーニング済みのモデルは、アプリケーションからの要求に応答します。 |
ドライバーは、実験の実行中にセッションをアクティブに保ちます。 セッションでのみ保持される進行状況は永続的なレコードではありません。これは完了したトレーニング チェックポイントで保持されます。
LoRA アダプター
基本モデルは、最初に使用するモデルです。 その 重みは 、その動作を形成する学習された値です。
ローランク適応 (LoRA) アダプターは、基本モデルに追加されるトレーニング可能な重みの小さなセットです。 トレーニングでは、モデルの元の重みをすべて再トレーニングするのではなく、アダプターを変更します。
アダプターには、実験で学習した内容が含まれています。 互換性のあるベースモデルに引き続き依存しています。これは、そのモデルのスタンドアロンの代替ではありません。
実装の詳細については、セッションの作成を参照してください。
トレーニング レベル
トレーニング レベルは、トレーニングの実行に使用されるサービス オプションを表します。 レベルは、トレーニングの実行場所、容量の提供方法、適用されるサービスの保証によって異なる場合があります。
使用できるオプションは、モデル、リージョン、プロジェクトによって異なります。 トレーニングレベルは、トレーニング済みモデルの提供に使用されるデプロイ オプションとは別です。 「トレーニングの種類」を参照してください。
メッセージの書式
メッセージは、選択したモデルが認識する形式に変換する必要があります。 この形式では、ユーザー プロンプト、アシスタントの応答、およびツールによって返される情報も区別されます。
- トークン は、モデルが読み取って生成する単語や単語の部分などのテキストの小さな単位です。
- トークナイザーは 、テキストをトークンに変換し、トークンをテキストに変換します。
- チャット テンプレートは 、モデルが話者を区別し、応答の開始位置を認識できるようにメッセージを整理します。
- レンダラーは 、モデルの形式でメッセージを準備し、生成された応答を読み取り可能なコンテンツに変換します。
モデルによって、メッセージ形式が異なる場合があります。 一貫性のある書式設定は、トレーニング プログラムが、対話のどの部分が学習に寄与すべきかを特定するのに役立ちます。
画像ベースのトレーニングには、プロジェクトに対応したビジョン言語モデルと画像トレーニングのサポートも必要です。 画像を認識できるメッセージ フォーマッタがあるからといって、それらに対してトレーニングが利用可能であるとは限りません。
トレーニングループ
対話型トレーニングでは、応答の生成、学習信号の計算、更新の適用が分離されます。 お使いのドライバは、これらの操作を1つのワークフローにまとめます。
| Operation | 意味 |
|---|---|
| サンプリング | モデルは、アダプターの選択したスナップショットから応答を生成します。 |
| 順伝播 | このモデルは例を処理するため、更新のための変更を蓄積することなく、損失を測定したり、学習信号を検査したりすることができます。 |
| グラデーション計算 | トレーニングでは、学習目標を向上させるためにアダプターの重みがどのように変化するかを計算します。 |
| オプティマイザーの更新 | オプティマイザーは、累積された勾配を適用してアダプターを変更します。 |
| 評価 | ドライバーは、トレーニングとは別の例でパフォーマンスを測定します。 |
勾配は、アダプターに対する潜在的な変更を表します。 オプティマイザーは、これらの勾配を更新に変換します。 勾配を計算しても、アダプター自体は変更されません。
複数の例のセットが、1 回の更新に対して勾配を提供できます。 更新後、アダプターの最新の学習状態を使用するには、サンプリングに更新されたスナップショットが必要です。
評価では、トレーニングには使用されない ホールドアウト例を用いて、関心のあるタスクでのパフォーマンスを確認します。 トレーニング損失が少ない、またはトレーニング報酬が高いだけでは、パフォーマンスが向上しません。
コード内の対応する操作については、 SDK のチートシートを参照してください。
損失関数とトークンの重み
損失関数は、トレーニングによって改善しようとする目標を表します。 例と学習信号を、アダプターへの変更をガイドする指標に変換します。
| 学習アプローチ | 更新を左右するもの |
|---|---|
| 教師あり学習 | 望ましい応答は、モデルに何を生成すべきかを示します。 |
| 強化学習 | 生成された応答間のスコアと比較は、強化する振る舞いを導きます。 |
損失関数は、ワークフローの 1 つの部分です。 例の選択、回答の評価、トレーニングの停止時期の決定は行われません。
トークンの重みは、例の一部が学習にどの程度強く寄与するかを制御します。 マスクは、寄与させたくない部分を無視します。
たとえば、教師あり学習ワークフローは、ユーザーのプロンプトを再現することを学習することなく、アシスタントの応答から学習できます。
強化学習の場合、学習信号は、モデルによって生成された応答と、ユーザーまたは環境によって提供される情報とを区別します。 モデルが後で変更された場合でも、各応答を生成したモデルからの情報が使用されます。
カスタム目標では、モデルの出力とドライバー内の計算を組み合わせることができます。 ドライバーは引き続き学習信号とモデルの更新を調整します。
データ構造と例については、「 監視対象データの準備 」および 「RL データの準備」を参照してください。
学習シグナルの結合方法
異なる目的は、学習信号を異なる方法で組み合わせることができます。たとえば、それらを加算したり平均したりします。 1 つの更新で互換性のないアプローチを組み合わせると、更新の規模が変更されたり、サービスによって拒否されたりする可能性があります。
同じ更新への貢献には、学習信号を組み合わせる一貫した方法が必要です。 ワークフローが互換性のないアプローチに切り替わる前に、更新が完了します。
報酬、ロールアウト、利点
強化学習では、評価器はモデルの動作を評価し、その評価を学習信号に変換します。
| 概念 | Meaning |
|---|---|
| ロールアウト | 生成された応答、またはツールの呼び出しと観察を含めることができる長い対話。 |
| 報酬 | ロールアウトがタスクの目標をどの程度達成しているかを示すスコア。 プログラムによってこのスコアが割り当てられます。 |
| 利点 | 同じプロンプトに対する他の応答など、応答のパフォーマンスが参照よりも優れているか悪いかを示す比較。 |
1 つの方法では、同じプロンプトに対して複数の応答を生成し、各報酬をグループの平均報酬と比較します。
- 平均を上回る: 応答にはプラスの利点があります。
- 平均を下回る: 応答には不利な点があります。
- 同等の報酬: すべての応答に利点がないため、この比較では学習信号は提供されません。
数学タスクの場合、報酬は最終的な回答が正しいかどうかを反映できます。 書式設定スコアが高いだけでは、答えが正しいとは限りません。
ドライバーは、採点ルールと比較方法を定義します。 完全な例については、ファインチューニング サンプル リポジトリを参照してください。
操作の完了
各操作の実行には時間がかかります。 要求の受け付けは、要求された作業を完了することとは異なります。
| Status | それがあなたに伝えるもの |
|---|---|
| 承認済み | サービスは要求を受け取ります。 作業は、まだ待機中または実行中である可能性があります。 |
| Completed | 操作が終了し、その結果を依存操作で使用できます。 |
| タイムアウト | ドライバーの待機が終了します。 これは、サービス上での操作が失敗または停止したことを証明するものではありません。 |
順序は重要です。更新は完了したグラデーション計算に依存し、新しい重みからのサンプリングは完了したリフレッシュに依存します。 欠損した結果は、成功した結果でも、値が 0 の測定でもありません。
実装の詳細については、「非同期操作を使用する」を参照してください。
Checkpoints
チェックポイントは、特定の時点でのモデルの状態を記録します。 トレーニング チェックポイントとサンプラー チェックポイントでは、異なる情報が保持されます。
| タイプ | 保存しているもの | 用途 |
|---|---|---|
| トレーニングチェックポイント | アダプターの学習された重みと、以前の更新に関するオプティマイザーのレコード。 | 互換性のあるセッションでの進行状況の回復またはトレーニングの継続。 |
| サンプラー チェックポイント | 応答を生成するためのアダプターの重みのスナップショット。 | トレーニングを再開するために必要な情報を含まない、選択したバージョンのアダプターからのサンプリング。 |
サンプラー更新により、最新のアダプター状態が生成用に準備されます。 これは保存されたトレーニング チェックポイントの代わりではなく、必ずしも永続的な成果物を作成するとは限りません。
ドライバーには、既に使用した例や評価がいつ行われるかなど、保持すべき独自の進行状況があります。 モデルチェックポイントを復元しても、その進捗は自動的には復元されません。
どちらのチェックポイントの種類もアプリケーション エンドポイントではありません。 トレーニング済みのモデルをアプリケーションで使用することは、別のデプロイ タスクです。
コード例については、「トレーニングを保存して再開する」を参照してください。
セッションのライフサイクル
アンロードすると、セッションのアクティブなトレーニング リソースが解放されます。 セッションとその保存された成果物の削除とは異なる目的を果たします。
| アクション | Meaning |
|---|---|
| Inspect | セッションの状態を確認し、保存されているチェックポイントを特定します。 |
| アンロード | アクティブなセッションのコンピューティング リソースを解放します。 これはチェックポイントの削除ではありません。 |
| 削除 | セッションを削除します。 これにより、チェックポイントとサンプリング リソースも削除される場合があります。 |
アンロード要求を送信しても、クリーンアップが完了することを保証しません。 ドライバーのネットワーク接続を閉じることも、セッションをアンロードすることと同じではありません。
完了したトレーニング チェックポイントは、セッションが終了する前に進行状況を保持します。 セッションを削除すると、その保存された状態が削除される可能性があるため、削除はコンピュートの解放と同じものとして扱えません。
実装の詳細については、「リソースを閉じる」を参照してください。
関連するコンテンツ
概念を使用する準備ができたら、次のリソースを確認してください。
- 対話型トレーニングを開始 して、短いトレーニングレシピを実行します。
- コード例と実装の詳細に関する SDK チートシート。
- 完全なトレーニング ワークフローのための、GitHub で提供されている微調整サンプル。