Skip to content

Latest commit

 

History

History
173 lines (123 loc) · 13.9 KB

File metadata and controls

173 lines (123 loc) · 13.9 KB

VS Code用AIツールキットへようこそ

AI Toolkit for VS Codeは、Azure AI StudioカタログやHugging Faceなどの他のカタログからさまざまなモデルを統合しています。このツールキットは、生成AIツールやモデルを使ったAIアプリ開発の一般的な作業を効率化します:

  • モデルの探索とプレイグラウンドでのスタート
  • ローカルの計算リソースを使ったモデルのファインチューニングと推論
  • Azureリソースを使ったリモートでのファインチューニングと推論

VSCode用AIツールキットのインストール

AIToolkit FineTuning

[Private Preview] Azure Container Appsのワンクリックプロビジョニングで、クラウド上でモデルのファインチューニングと推論を実行可能。

それでは、AIアプリ開発を始めましょう:

ローカル開発

準備

  1. ホストにNVIDIAドライバーがインストールされていることを確認してください。
  2. Hugging Faceのデータセットを利用する場合は、huggingface-cli loginを実行してください。
  3. メモリ使用量に影響する設定についてはOliveのキー設定説明を参照してください。

Condaの有効化

WSL環境を使用しており共有されているため、Conda環境を手動で有効化する必要があります。この手順を終えたら、ファインチューニングや推論を実行できます。

conda activate [conda-env-name] 

ベースモデルのファインチューニングのみ

ファインチューニングせずにベースモデルを試したい場合は、Condaを有効化した後に以下のコマンドを実行してください。

cd inference

# 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://0.0.0.0:7860) in a browser after gradio initiates the connections.
python gradio_chat.py --baseonly

モデルのファインチューニングと推論

開発コンテナ内でワークスペースを開いたら、ターミナルを開きます(デフォルトのパスはプロジェクトルートです)。次に、選択したデータセットでLLMをファインチューニングするために以下のコマンドを実行します。

python finetuning/invoke_olive.py 

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

次に、ファインチューニング済みモデルを使って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

VS Codeでprompt flowを使う場合は、こちらのクイックスタートを参照してください。

モデルのファインチューニング

次に、デバイスにGPUがあるかどうかに応じて以下のモデルをダウンロードしてください。

QLoRAを使ったローカルファインチューニングを開始するには、カタログからファインチューニングしたいモデルを選択します。

プラットフォーム GPU利用可否 モデル名 サイズ (GB)
Windows あり Phi-3-mini-4k-directml-int4-awq-block-128-onnx 2.13GB
Linux あり Phi-3-mini-4k-cuda-int4-onnx 2.30GB
Windows
Linux
なし Phi-3-mini-4k-cpu-int4-rtn-block-32-acc-level-4-onnx 2.72GB

注意 モデルのダウンロードにAzureアカウントは不要です。

Phi3-mini (int4)モデルは約2GB〜3GBのサイズです。ネットワーク速度によっては数分かかる場合があります。

まず、プロジェクト名と保存場所を選択します。
次にモデルカタログからモデルを選択すると、プロジェクトテンプレートのダウンロードを促されます。その後、「Configure Project」をクリックして各種設定を調整できます。

Microsoft Olive

Oliveを使って、カタログのPyTorchモデルに対してQLoRAファインチューニングを実行します。すべての設定はメモリ使用を最適化しローカルでのファインチューニングを効率化するためにデフォルト値でプリセットされていますが、必要に応じて調整可能です。

ファインチューニングのサンプルとリソース

[Private Preview] リモート開発

前提条件

  1. リモートのAzure Container App環境でモデルのファインチューニングを実行するには、サブスクリプションに十分なGPU容量があることを確認してください。必要な容量を申請するにはサポートチケットを提出してください。GPU容量の詳細はこちら
  2. HuggingFaceのプライベートデータセットを使用する場合は、HuggingFaceアカウントを持ち、アクセストークンを生成してください。
  3. AI Toolkit for VS Codeでリモートファインチューニングと推論の機能フラグを有効にします。
    1. VS Codeの設定を開く(ファイル -> 設定 -> 設定)。
    2. 拡張機能からAI Toolkitを選択。
    3. "Enable Remote Fine-tuning And Inference" オプションを選択。
    4. VS Codeを再起動して反映させる。

リモート開発プロジェクトのセットアップ

  1. コマンドパレットでAI Toolkit: Focus on Resource Viewを実行。
  2. Model Fine-tuningに移動し、モデルカタログにアクセス。プロジェクト名と保存場所を指定し、Configure Projectボタンを押す。
  3. プロジェクト設定
    1. "Fine-tune locally" オプションは有効にしないでください。
    2. Oliveの設定画面が表示され、デフォルト値がプリセットされています。必要に応じて設定を調整してください。
    3. Generate Projectに進みます。ここではWSLを利用し、新しいConda環境をセットアップします。将来的にはDev Containersもサポート予定です。
  4. "Relaunch Window In Workspace" をクリックしてリモート開発プロジェクトを開きます。

注意: このプロジェクトはAI Toolkit for VS Code内でローカルまたはリモートのいずれかで動作します。プロジェクト作成時に "Fine-tune locally" を選択するとWSL内のみで動作し、リモート開発はできません。一方、"Fine-tune locally" を有効にしなければ、リモートのAzure Container App環境でのみ動作します。

Azureリソースのプロビジョニング

リモートファインチューニングを始めるには、コマンドパレットからAI Toolkit: Provision Azure Container Apps job for fine-tuningを実行してAzureリソースをプロビジョニングしてください。

進捗は出力チャネルに表示されるリンクで確認できます。

[オプション] HuggingfaceトークンをAzure Container Appのシークレットに追加

プライベートなHuggingFaceデータセットを使う場合、HuggingFaceトークンを環境変数として設定すると、Hugging Face Hubへの手動ログインが不要になります。
AI Toolkit: Add Azure Container Apps Job secret for fine-tuningコマンドを使い、シークレット名をHF_TOKENに設定し、Hugging Faceトークンをシークレット値として登録してください。

ファインチューニングの実行

リモートファインチューニングジョブを開始するには、AI Toolkit: Run fine-tuningコマンドを実行します。

システムやコンソールのログは、出力パネルのリンクからAzureポータルで確認できます(詳細はAzureでのログの表示とクエリを参照)。
または、VSCodeの出力パネルでAI Toolkit: Show the running fine-tuning job streaming logsコマンドを実行して直接コンソールログを確認できます。

注意: リソース不足によりジョブがキューに入る場合があります。ログが表示されない場合は、AI Toolkit: Show the running fine-tuning job streaming logsを実行し、しばらく待ってから再度実行してストリーミングログに再接続してください。

このプロセスではQLoRAを使ってファインチューニングを行い、推論時に使うLoRAアダプターをモデルに作成します。
ファインチューニングの結果はAzure Filesに保存されます。

推論エンドポイントのプロビジョニング

リモート環境でアダプターがトレーニングされた後、シンプルなGradioアプリケーションを使ってモデルと対話します。
ファインチューニングと同様に、コマンドパレットからAI Toolkit: Provision Azure Container Apps for inferenceを実行してリモート推論用のAzureリソースをセットアップしてください。

デフォルトでは、推論用のサブスクリプションとリソースグループはファインチューニングで使ったものと同じに設定されます。推論は同じAzure Container App環境を使い、ファインチューニング時に生成されたAzure Files内のモデルとモデルアダプターにアクセスします。

推論エンドポイントのデプロイ

推論コードの修正やモデルの再読み込みを行いたい場合は、AI Toolkit: Deploy for inferenceコマンドを実行してください。これにより最新のコードがAzure Container Appに同期され、レプリカが再起動されます。

デプロイが成功すると、VSCodeの通知に表示される「Go to Inference Endpoint」ボタンから推論APIにアクセスできます。
また、Web APIエンドポイントは./infra/inference.config.jsonACA_APP_ENDPOINTや出力パネルで確認可能です。これでモデルの評価が可能になります。

高度な使い方

AI Toolkitを使ったリモート開発の詳細は、リモートでのモデルファインチューニングおよびファインチューニング済みモデルでの推論のドキュメントを参照してください。

免責事項
本書類はAI翻訳サービス「Co-op Translator」を使用して翻訳されました。正確性の向上に努めておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。原文の言語によるオリジナル文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や誤訳についても、当方は責任を負いかねます。