Microsoft Foundry のプログラム型トレーニング (プレビュー) を使い始める

Important

この記事でプレビューとしてマークされているアイテムは、現在プレビュー段階です。 このプレビューはサービス レベル アグリーメント(SLA)なしで提供されており、Microsoft はこれを運用ワークロードでの使用に推奨していません。 特定の機能がサポートされていないか、機能が制限されている可能性があります。 詳細については、「 Microsoft Azure プレビューの追加使用条件」を参照してください。

Important

Programmed Training には、明示的なアクセス承認が必要です。 プレビュー サインアップ フォームを使用してアクセスを要求し、トレーニング セッションを作成する前に承認を待ちます。

このクイック スタートでは、サンプル リポジトリを複製し、GSM8K 数学の問題に対して強化学習 (RL) レシピを実行します。 レシピは応答を生成し、その正確性をスコア付けし、Microsoft Foundry の Qwen3.8-27B 用のローランク適応 (LoRA) アダプターを更新します。

Python ドライバーをローカルで実行します。Foundry はモデルの操作を実行します。 この短い実行では、トレーニング、評価、チェックポイントの保存作業が確認されます。 これはモデル品質ベンチマークではなく、ローカル GPU は必要ありません。

Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください。

Prerequisites

  • 承認済みのProgrammed Trainingプレビュー アクセスとの容量を備えたQwen/Qwen3.8-27B。 サポートされているモデルとリージョンを確認します。
  • トレーニングには Foundry ユーザー ロール、または微調整されたモデルもデプロイする場合は Foundry 所有者 ロールが必要です。 Microsoft Foundry のロールベースのアクセス制御を参照してください。
  • Python 3.11 以降、Git、および書き込み可能なローカル ディレクトリ。
  • 以下のサインイン コマンドには、Azure CLI を使用します。
  • Python パッケージ、パブリック データセット、およびモデルのトークナイザーをダウンロードするためのネットワーク アクセス。
  • モデルの読み込み、トレーニング、サンプリング、評価のための承認された予算。

サンプル リポジトリを複製する

microsoft-foundry/fine-tuning をクローンし、そのプログラム型トレーニングのクックブックを開きます:

git clone https://github.com/microsoft-foundry/fine-tuning.git
cd fine-tuning/interactive_training

残りのコマンドについては、このディレクトリを開いたままにしておきます。 これには、クックブックのpyproject.toml と Python パッケージが含まれています。

クックブックをインストールする

仮想環境を作成し、クックブックをインストールします。 Linux コマンドと Windows コマンドは、ドライバ側の依存関係に対して CPU Torch パッケージ インデックスを使用します。

python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e . \
    --index-url https://pypi.org/simple \
    --extra-index-url https://download.pytorch.org/whl/cpu

リファレンス: Cookbook のインストール。

リモート セッションを作成せずにインストールを確認する。

python -m pip check
python -m interactive_training.recipes.math_rl.train_azure --help

壊れた依存関係は発生せず、レシピ ヘルプには project_endpoint、max_steps、および max_train_examples が一覧表示されます。

プロジェクトを設定してサインイン

プロジェクトに対して承認された ID でサインインし、そのサブスクリプションを選択します。

az login
az account set --subscription "<subscription-id>"

リファレンス: Azure CLIを使用してサインインします。

Foundry プロジェクトからプロジェクト エンドポイントをコピーします。 モデル デプロイ URL やアカウントのホスト名だけではなく、プロジェクト URL を使用します。 <account>と<project>をプロジェクトの値に置き換えてください:

export AZURE_AI_PROJECT_ENDPOINT=\
"https://<account>.services.ai.azure.com/api/projects/<project>"

レシピでは、が設定されている場合を除き、AZURE_AI_API_KEY が使用されます。 CLI 認証情報の前に、他の構成済み認証情報を選択できます。 キー変数が設定されている場合は、その設定が Azure CLI でのサインインよりも優先されます。

レシピを実行する

2 つのトレーニング イテレーション、16 個のトレーニング例、8 つのホールドアウトした評価用例を使用して、GSM8K レシピを実行します。 レシピはセッションを作成し、応答をサンプリングし、報酬を計算し、アダプターを更新し、チェックポイントを保存します。

Warning

このコマンドにより、リモート トレーニング セッションが作成され、料金が発生する可能性があります。 max_steps=2 は、モデルの読み込み時間、評価呼び出し、合計トークン、コストではなく、トレーニングイテレーションを制限します。 承認された予算でのみ続行してください。

python -m interactive_training.recipes.math_rl.train_azure \
    project_endpoint="$AZURE_AI_PROJECT_ENDPOINT" \
    model_name="Qwen/Qwen3.8-27B" renderer_name=qwen3_8_low_reasoning \
    env=gsm8k learning_rate=2e-5 temperature=1.0 max_tokens=1200 \
    lora_rank=32 group_size=4 groups_per_batch=8 \
    loss_fn=importance_sampling seed=42 \
    max_steps=2 max_train_examples=16 max_test_examples=8 \
    eval_every=1 save_every=1 \
    log_path=./runs/first-math-check behavior_if_log_dir_exists=raise

リファレンス: Math RL レシピ クイックスタート。

レシピでは、key=valueではなく、--key value引数が使用されます。 実行が完了するまで、ターミナルとネットワーク接続を開いたままにしておきます。

各イテレーションでは、プロンプトごとに 4 つの応答を含む 8 つのプロンプトが使用されます。 max_tokens=1200 は、推論と最終回答のための完了用の予算を提供します。応答は途中で切り捨てられる可能性があります。

結果は、runs 配下の first-math-check ディレクトリに保存されます。 このコマンドは、既存のディレクトリを上書きしません。 別の独立した実行用に新しい log_path を選択します。エラーを回避するために結果を削除しないでください。

成功した内容を確認する

クックブック ディレクトリを基準にして、 ./runs/first-math-check/を調べます。

段階 Evidence これでわかること
ランチャーのセットアップ run_meta.json が書き込まれます。セッション ID は最初は null の場合があります。 ローカル セットアップが開始されますが、Azure がセッションを許可するわけではありません。
モデルが読み込まれました コンソール Session ready: session_id=...; azure.session_id が更新されます。 セッションの作成が完了しました。
ループ実行中 config.json、 metrics.jsonl、トレーニング メトリック、および軌道 HTML。 サンプリング、等級分け、更新処理が進行中です。
保存された状態 checkpoints.jsonl は、 state_path/sampler_path エントリを保存しました。 保存操作が完了しました。保存が完了する前に表示されたチェックポイント名に依存しないでください。
正常完了 トレーニング済みバッチ、最終的な保留の指標、および正常なプロセス終了の後に表示される final 台帳行。 制限付きのワークフローが完了します。警告を確認し、クリーンアップを個別に確認します。

この新規の同期 GSM8K 実行では、最初の更新の前に初期評価が行われます。最終評価は最後の保存後に行われます。 test/env/all/correct と test/env/all/total_episodes を確認し、評価が省略されたという警告がないか確認します。 ゼロ スコアは、インフラストラクチャが動作している場合でも、書式設定の不備やトークン予算不足による実際の失敗である可能性があります。 欠落しているメトリックは0点ではありません。

この 2 段階のチェックに 必要な精度の向上や保証された実行時間はありません。 改善を求めるには、固定の保留セットと評価ガイドを使用します。

ローカル成果物を表示:

python dashboard_server.py --root ./runs
# Open http://127.0.0.1:8000/

参照: ダッシュボードの実行。

認証がなく、プロンプトと応答を表示できるため、ダッシュボードは既定のループバック アドレスのままにします。 ダッシュボード ターミナルで Ctrl キーを押しながら C キーを押すとそれを停止できます。これによってリモート トレーニング セッションはアンロードされません。

リソースをクリーンアップする

レシピは、ループが終了したときにトレーニング セッションを閉じようとします。 クリーンアップの警告を確認します。出力された Session closed メッセージだけでは、リモートのコンピュート リソースが解放されたことを確認できません。

セッションを調べるには、記録されたセッション ID と サンプル セッション管理ガイド を使用します。 アクティブな状態のままの場合は、必要なチェックポイントを保持し、所有しているセッションのみをアンロードしてください。

復旧のために構成、メトリック、チェックポイント参照を保持します。 ローカル ファイルを削除しても、リモート コンピューティング リソースは解放されません。 このレシピでは、サービング デプロイメントは作成されません。

他のレシピを試す

このクイック スタートを完了したら、微調整サンプル リポジトリ内の他のレシピを試してください。 Programmed Training クックブックには、教師あり微調整、選好最適化、蒸留、およびその他の RL タスクの例が含まれています。

各レシピのセットアップとデータセットの手順に従います。 別の実行を開始する前に、モデル アクセスと承認された予算を確認してください。