Azure AI Foundry を使用してモデルを微調整する
重要
この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
微調整とは、パフォーマンスの向上、スキルの追加、または精度の向上のために、特定のタスクまたは新しいデータセットに追加のトレーニングを実施して、事前トレーニング済みの生成 AI モデルをカスタマイズすることを指します。 その成果として、提供された例に基づいて最適化された新しいカスタム GenAI モデルが作成されます。
GenAI モデルの微調整は、次のような目的のために検討します。
- 特定のエンタープライズ ニーズに合わせてスケーリングおよび調整する
- 誤検知を減らす (調整されたモデルでは不正確な応答や無関係な応答を生成する可能性が低くなるため)
- ドメイン固有のタスクに対するモデルの精度を向上させる
- より高速でより正確な結果を得て、時間とリソースを節約する
- 関連性の高いコンテキストに対応した結果を得る (モデルが特定のユース ケースに合わせて微調整されるため)
Azure AI Foundry では、さまざまなモデル プロバイダーのモデルが複数提供されており、市場にある最新かつ最高の機能にアクセスできます。 モデル カタログから微調整がサポートされているモデルを見つけるには、微調整タスク フィルターを使用してモデル カードを選択し、各モデルの詳細情報を確認します。 特定のモデルには、リージョンの制約が適用される場合があります。詳細については、この一覧を参照してください。
この記事では、微調整のユース ケースと、これが GenAI でのユーザー体験にどのように役立つかについて説明します。
微調整の概要
生成 AI のユーザー体験を開始するときは、基本モデルとその機能を理解するために、プロンプト エンジニアリングと RAG から始めることをお勧めします。
- プロンプト エンジニアリングは、自然言語処理モデルのトーンとスタイルの詳細、応答の例、意図マッピングを使用してプロンプトを設計する手法です。 このプロセスにより、応答の精度と関連性が向上し、モデルのパフォーマンスが最適化されます。
- 取得拡張生成 (RAG) は、外部ソースからデータを取得し、プロンプトに組み込むことで、LLM のパフォーマンスを向上させます。 RAG を使用すると、企業はデータの関連性を維持し、コストを最適化しながら、カスタマイズされたソリューションを実現しやすくなります。
概念を理解し、ソリューションの構築を始めるにあたり、プロンプト エンジニアリングでは足りない部分を理解することが重要です。そうすることで、微調整を試みる必要があるかどうかがわかります。
- 基本モデルはエッジ ケースまたは例外で失敗しますか?
- 基本モデルは、出力を正しい形式で一貫して提供しませんか?
- モデルを操作するのに十分な例をコンテキスト ウィンドウに収めることが難しいですか?
- 待機時間が長いですか?
基本モデルとプロンプト エンジニアリングでの失敗の例は、微調整のために収集するデータを特定し、微調整されたモデルを評価および比較できるパフォーマンス ベースラインを確立するのに役立ちます。 微調整していないときのパフォーマンスのベースラインを取得することは、微調整によってモデルのパフォーマンスが向上しているかどうかを把握するために不可欠です。
次に例を示します。
あるお客様が、GPT-3.5-Turbo を使用して、自然言語の質問を特定の非標準クエリ言語のクエリに変換したいと考えています。 お客様はプロンプトでガイダンスを提供し ("常に GQL を返します")、RAG を使用してデータベース スキーマを取得しました。 ただし、構文が常に正しいとは限らず、多くの場合、エッジ ケースでは失敗します。 お客様は、以前にモデルが失敗したケースを含め、データベースに対する自然言語の質問と同等のクエリの例を何千も収集しています。 その後、お客様はそのデータを使用してモデルを微調整します。 新たに微調整されたモデルと、設計されたプロンプトと取得を組み合わせることで、モデル出力の精度が許容できる基準にまで向上します。
ユース ケース
基本モデルは既に膨大な量のデータで事前トレーニングされていますが、ほとんどの場合、求めている質の高い応答を得るために、プロンプトに指示や例を追加することになります。このプロセスを、"少数ショット学習" と呼びます。 微調整を行うと、特定のユース ケースに合わせて調整できる多くの例を追加で使用してモデルをトレーニングできるため、少数ショット学習の効果が高まります。 こうすることで、プロンプト内のトークン数を減らし、コストの削減と要求の待機時間の短縮につながる可能性があります。
自然言語をクエリ言語に変換することは、モデルの動作を "語らずに示す" ユース ケースの 1 つに過ぎません。 その他のユース ケースを次に示します。
- 取得したデータに対するモデルの処理を改善する
- 特定のスタイル、トーン、または形式でコンテンツを出力するようにモデルを操作する
- 情報を検索するときの精度を向上させる
- プロンプトの長さを短くする
- 新しいスキルを教える (つまり、自然言語からコードへ)
コストが主な動機として認識される場合は、慎重に進めてください。 微調整では、プロンプトを短くしたり、より小さなモデルを使用したりすることで、特定のユース ケースのコストが削減される可能性があります。 ただし、トレーニングに対する先行コストが大きくなる可能性があり、独自のカスタム モデルをホストするための料金を支払う必要があります。
モデルを微調整する手順
モデルを微調整する一般的な手順を次に示します。
- ユース ケースに基づいて、タスクをサポートするモデルを選択します
- トレーニング データを準備してアップロードする
- (省略可能) 検証データを準備してアップロードします
- (省略可能) タスク パラメーターを構成します
- モデルをトレーニングします。
- 完了したら、メトリックを確認し、モデルを評価します。 結果がベンチマークに満たない場合は、手順 2 に戻ります。
- 微調整されたモデルを使用します
微調整は、提供できるデータの品質に大きく依存していることに注意することが重要です。 正常に完了して目的の結果を得るためには、数千ではないにしても数百のトレーニング例を提供することをお勧めします。
微調整でサポートされているモデル
どのような場合にユース ケースに微調整を使用するかを把握したら、Azure AI Foundry にアクセスして、微調整に使用できるモデルを見つけることができます。 モデル カタログ内の一部のモデルでは、サーバーレス API またはマネージド コンピューティング (プレビュー)、またはその両方を使用して微調整を行うことができます。
サーバーレス API 経由でデプロイされる一部のモデルについては、特定の Azure リージョンで微調整が可能です。 このようなモデルを微調整するには、モデルの微調整が可能なリージョンにハブやプロジェクトを配置することが必要です。 詳細については、「サーバーレス API エンドポイントでのモデルのリージョンごとの利用可能性」を参照してください。
マネージド コンピューティング (プレビュー) を使用した微調整の詳細については、「マネージド コンピューティングを使用してモデルを微調整する (プレビュー)」を参照してください。
微調整に使用できる Azure OpenAI モデルの詳細については、「Azure OpenAI Service モデルのドキュメント」を参照するか、このガイドの後半にある Azure OpenAI モデルのテーブルを参照してください。
微調整できる Azure OpenAI Service モデルの場合、微調整でサポートされているリージョンには、米国中北部、スウェーデン中部などが含まれます。
Azure OpenAI モデルの微調整
Note
gpt-35-turbo
- このモデルの微調整はリージョンのサブセットに限定され、基本モデルが使用可能なすべてのリージョンで使用できるわけではありません。
Azure OpenAI モデルを Azure AI Foundry プロジェクトで使用するか、プロジェクトの外部で使用するかによって、微調整をサポートするリージョンは異なります。
モデル ID | 微調整リージョン | 最大要求 (トークン) | トレーニング データ (最大) |
---|---|---|---|
babbage-002 |
米国中北部 スウェーデン中部 スイス西部 |
16,384 | 2021 年 9 月 |
davinci-002 |
米国中北部 スウェーデン中部 スイス西部 |
16,384 | 2021 年 9 月 |
gpt-35-turbo (0613) |
米国東部 2 米国中北部 スウェーデン中部 スイス西部 |
4,096 | 2021 年 9 月 |
gpt-35-turbo (1106) |
米国東部 2 米国中北部 スウェーデン中部 スイス西部 |
入力: 16,385 出力: 4,096 |
2021 年 9 月 |
gpt-35-turbo (0125) |
米国東部 2 米国中北部 スウェーデン中部 スイス西部 |
16,385 | 2021 年 9 月 |
gpt-4 (0613) 1 |
米国中北部 スウェーデン中部 |
8192 | 2021 年 9 月 |
gpt-4o-mini (2024-07-18) |
米国中北部 スウェーデン中部 |
入力: 128,000 出力: 16,384 トレーニング例のコンテキスト長: 64,536 |
2023年10月 |
gpt-4o (2024-08-06) |
米国東部 2 米国中北部 スウェーデン中部 |
入力: 128,000 出力: 16,384 トレーニング例のコンテキスト長: 64,536 |
2023年10月 |
1 GPT-4 は現在パブリック プレビューの段階です。