次の方法で共有


AI Toolkit for VS Code を使用してモデルを微調整する

AI Toolkit for VS Code (AI Toolkit) は、AI モデルをダウンロード、テスト、微調整し、アプリまたはクラウドにデプロイできるようにする、VS Code の拡張機能です。 詳細については、「AI Toolkit overview (AI ツールキットの概要)」を参照してください。

この記事では、次の方法について学習します。

  • ローカル環境を設定して微調整します。
  • 微調整ジョブを実行します。

前提条件

  • Visual Studio Code 用の AI Toolkit の概要」を完了すること。
  • Windows コンピューターを使用して微調整する場合は、インストール Windows Subsystem for Linux (WSL) します。 「WSL を使用して Windows に Linux をインストールする方法」を参照して、WSL と既定の Linux ディストリビューションをインストールします。 AI Toolkit for VS Code を使用する前に、WSL Ubuntu ディストリビューション 18.04 以降をインストールし、既定のディストリビューションに設定する必要があります。 既定のディストリビューションを変更する方法について説明します。
  • Linux コンピューターを使用している場合は、Ubuntu ディストリビューション 18.04 以降である必要があります。
  • AI Toolkit for VS Code のプレビュー期間中は、微調整用に NVIDIA GPU のみがサポートされます。

ヒント

お使いのコンピュータに最新の NVIDIA ドライバーがインストールされていることも確認します。 ゲーム対応ドライバーまたは Studio ドライバーのどちらかを選択できる場合は、Studio ドライバーをダウンロードします。

正しいドライバーをダウンロードするには、GPU のモデルを知っている必要があります。 使用している GPU を確認するには、「How to check your GPU and why it matters(GPU をチェックする方法とそれが重要な理由)」を参照してください。

環境を設定する

ローカル デバイスまたはクラウド VM で微調整ジョブを実行するために必要なすべての前提条件があるかどうかをチェックするには、コマンド パレット (Shift+Control+P) を開き、AI Toolkit: 環境の前提条件を検証します。

ローカル デバイスが検証チェックに合格すると、[Setup WSL Environment] (WSL 環境のセットアップ) ボタンが有効になり、選択できるようになります。 これにより、微調整ジョブを実行するために必要なすべての依存関係がインストールされます。

クラウド VM

ローカル コンピューターに Nvidia GPU デバイスがない場合、(クォータがある場合) Nvidia GPU を使用して、クラウド VM (Windows と Linux の両方) で微調整できます。 Azure では、次の VM シリーズを使用して微調整ができます。

  • NCasT4_v3 シリーズ
  • NC_A100_v4 シリーズ
  • ND A100 v4-シリーズ
  • NCads H100 v5 シリーズ
  • NCv3 シリーズ
  • NVadsA10 v5 シリーズ

ヒント

VS Code を使用して、クラウド VM にリモート接続できます。 この機能に慣れていない場合は、SSH 経由でのリモート開発に関する チュートリアルを参照してください

モデルの微調整

AI Toolkit では QLoRA という方法を使用して、量子化と低ランク適応 (LoRA) を組み合わせて、独自のデータでモデルを微調整します。 QLoRA: 量子化された LLM の効率的な微調整で QLoRA について詳しく学習します。

手順 1: プロジェクトを構成する

QLoRA を使用して新しい微調整セッションを開始するには、AI Toolkit のモデルの微調整項目を選択します。

  1. 最初に、一意のプロジェクト名プロジェクトの場所を入力します。 指定したプロジェクト名が付いた新しいフォルダーが、プロジェクト ファイルを格納するために選択した場所に作成されます。

  2. 次に、モデル カタログからモデル (Phi-3-mini-4k-instruct など) を選択し、[Configure Project] (プロジェクトの構成) を選択します。

    微調整プロジェクトの設定

  3. その後、微調整プロジェクトの設定を構成するように求められます。 [ローカルで微調整] チェックボックスがオンになっていることを確認します (将来的には、VS Code 拡張機能を使用して、微調整をクラウドにオフロードできます)。

    設定を微調整する

モデル推論の設定

モデル推論セクションでは、次の ふたつの設定を使用できます。

設定 説明
Conda 環境名 微調整プロセスでアクティブ化および使用する Conda 環境の名前。 この名前は、conda インストールで一意であることが必要です。
推論プロンプト テンプレート 推論時に使用するプロンプト テンプレート。 これが微調整されたバージョンと一致していることを確認します。

データ設定

データセット情報を構成するには、データ セクションで次の設定を使用できます。

設定 説明
データセット名 モデルの微調整に使用するデータセットの名前。
トレーニングの分割 データセット用のトレーニングの分割名。
データセットの型 使用するデータセットの型。
テキスト列 トレーニング プロンプトを入力するためのデータセット内の列の名前。
テキスト テンプレート モデルの微調整に使用するプロンプト テンプレート。 テキスト列の置換トークンが使用されます。
コーパス戦略 サンプルを結合するか、一行ずつ処理するかを示します。
ソースの最大長 トレーニング サンプルあたりのトークンの最大数。
最大長への埋め込み トークンの最大数まで PAD トークンをトレーニング サンプルに追加します。

設定を微調整する

微調整のセクションで次の設定を使用すると、微調整プロセスをさらに構成できます。

設定 データの種類 規定値 説明
Compute Dtype String bfloat16 モデルの重みとアダプターの重みのデータ型。 4 ビット量子化モデルの場合、量子化モジュールの評価データ型でもあります。 有効な値: bfloat16、float16、または float32。
Quant 型 String nf4 使用する量子化データ型。 有効な値: fp4 または nf4。
Double quant Boolean はい 最初の量子化からの量子化定数が再び量子化される、入れ子になった量子化を使用するかどうか。
Lora r Integer 64 Lora アテンション ディメンション。
Lora alpha Float 16 Lora スケーリングのアルファ パラメーター。
Lora dropout Float 0.1 Lora レイヤのドロップアウトの確率。
Eval データセット サイズ Float 1024 検証データセットのサイズ。
種苗 Integer 0 初期化用のランダム シード。
データ シード Integer 42 データ サンプラーで使用するランダム シード。
デバイスごとのトレーニング バッチ サイズ Integer 1 トレーニング用の GPU あたりのバッチ サイズ。
デバイスごとの Eval バッチ サイズ Integer 1 評価用の GPU あたりのバッチ サイズ。
Gradient Accumulation のステップ Integer 4 後方/更新パスを実行する前に、勾配を累積するための更新ステップの数。
勾配チェックポイントを有効にする Boolean はい 勾配チェックポイントを使用します。 メモリを保存する場合にお勧めします。
Learning rate (学習率) Float 0.0002 AdamW の初期の学習率。
最大ステップ数 Integer -1 正の数に設定されている場合、実行するトレーニング ステップの合計数。 これにより、num_train_epochs がオーバーライドされます。 有限の反復データセットを使用する場合、すべてのデータが使い果たされたときに、設定されたステップ数に達する前にトレーニングが停止することがあります。

手順 2: プロジェクトの生成

すべてのパラメーターを設定した後に、[プロジェクトの生成] をクリックします。 以下の処理が実行されます。

  • モデルのダウンロードを開始します。
  • すべての前提条件および依存関係をインストールします。
  • VS Codeワークスペースの作成

モデルがダウンロードされ、環境が準備できたら、[Step 3 - Generating project] (ステップ 3 - プロジェクトの生成) ページで [Relaunch Window in Workspace] (ワークスペースの再起動ウィンドウ) を選択して、AI Toolkit からプロジェクトを起動できます。 これによって、環境に接続された新しいインスタンス VS Code が起動されます。

Note

VS Codeのプロンプト フロー の WSL インスタンスに 用プロンプト フローなどの追加の拡張機能をインストールするように求められる場合があります。 最適な微調整環境を実現するには、それらをインストールして続行します。

再起動されたウィンドウのワークスペースには、以下のフォルダーがあります。

フォルダー名 説明
データセット (dataset) このフォルダーには、テンプレートのデータセット (dataset-classification.jsonフレーズとトーンなど JSON 行ファイル) が含まれています。 ローカル ファイルまたは Hugging Face データセットを使用するようにプロジェクトを設定した場合には、このフォルダーは無視してかまいません。
微調整 微調整ジョブを実行するための Olive 構成ファイル。 Olive は、モデルの圧縮、最適化、コンパイルに関して業界をリードする手法を構成する、使いやすいハードウェア対応モデル最適化ツールです。 モデルと対象となるハードウェアを考えると、Olive は、精度や待機時間などの一連の制約を考慮しながら、クラウドまたはエッジで推論するための最も効率的なモデルを出力する最適化手法を作成します。
読み込む 微調整されたモデルを使用する推論のコード サンプル。
インフラストラクチャ Azure Container App Service を使用して微調整と推論を行う場合には (近日公開予定)。 このフォルダーには、Azure Container App Service をプロビジョニングするための Bicep ファイルと構成ファイルが含まれています。
セットアップ conda 環境のセットアップに使用するファイル。 たとえば、pip の要件

ステップ3 微調整ジョブの実行

次を使用してモデルの微調整ができるようになりました。

# replace {conda-env-name} with the name of the environment you set
conda activate {conda-env-name}
python finetuning/invoke_olive.py 

重要

微調整にかかる時間は、GPU の種類、GPU の数、ステップ数、エポックの数により異なります。 これには時間がかかる場合があります (たとえば、数時間かかる場合があります)。

クイック テストのみを実行する場合は、ファイル内の最大ステップ数を減らすことを検討してくださいolive-config.json。 チェックポイント処理が使用されるために、次の微調整の実行は最後のチェックポイントから続行されます。

チェックポイントと最終的なモデルは、プロジェクトの models フォルダーに保存されます。

手順 4: 微調整されたモデルをアプリの統合

次に、チャットを介して微調整されたモデルを使用して、推論を consoleweb browser または prompt flow で実行します。

cd inference

# Console interface.
python console_chat.py

# Web browser interface allows to adjust a few parameters like max new token length, temperature and so on.
# User has to manually open the link (e.g. http://127.0.0.1:7860) in a browser after gradio initiates the connections.
python gradio_chat.py

ヒント

手順は、プロジェクト フォルダーにある README.md ページでも使用できます。