Azure AI Studio でモデルを微調整する
重要
この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
微調整では、サンプル データを使用して既存の大規模言語モデル (LLM) を再トレーニングします。 その結果は、提供された例に合わせて最適化された新しいカスタム LLM です。
この記事は、微調整がユース ケースに適した解決策であるかどうかを判断するのに役立ちます。 この記事では、Azure AI Studio で微調整のニーズがどのようにサポートされるかについても説明します。
この記事では、微調整は継続的な事前トレーニングまたは人間のフィードバックによる強化学習 (RLHF) ではなく、実際には 教師あり微調整 を意味します。 教師あり微調整とは、特定のデータセットで事前トレーニング済みのモデルを再トレーニングするプロセスです。 通常、その目的は、特定のタスクのモデルのパフォーマンスを向上させたり、基本モデルを最初にトレーニングしたときによく表されなかった情報を導入したりすることです。
微調整の概要
微調整がユース ケースに適した解決策であるかどうかを判断するときは、次の重要な用語を理解しておくと役立ちます。
- プロンプト エンジニアリングは、自然言語処理モデルのプロンプトの設計を含む手法です。 このプロセスにより、応答の精度と関連性が向上し、モデルのパフォーマンスが最適化されます。
- 取得拡張生成 (RAG) は、外部ソースからデータを取得し、プロンプトに組み込むことで、LLM のパフォーマンスを向上させます。 RAG を使用すると、企業はデータの関連性を維持し、コストを最適化しながら、カスタマイズされたソリューションを実現しやすくなります。
微調整は、専門知識を適切に使用する必要がある高度な手法です。 以下の質問は、微調整の準備ができているかどうか、およびプロセスをどの程度よく検討したかを評価するのに役立ちます。 これらの質問を使用して、次の手順をガイドしたり、より適切な他のアプローチを特定したりすることができます。
モデルを微調整する理由
以下に該当する場合、微調整の準備ができていると考えられます。
微調整のために特定のユース ケースを明確にし、微調整するモデルを特定することができる。
微調整に適したユース ケースには、特定のカスタマイズされたスタイル、トーン、または形式でコンテンツを出力するようにモデルを操作することが含まれます。 また、モデルを操作するために必要な情報が長すぎる、または複雑すぎてプロンプト ウィンドウに収まらないシナリオも含まれます。
代替アプローチの課題に対処した方法と、パフォーマンス向上のために可能な解決策としてテストした内容に関する明確な例がある。
エッジ ケースでの一貫性のないパフォーマンス、モデルを操作するのに十分なショット プロンプトがコンテキスト ウィンドウに収まらない、待機時間が長いなどの欠点を、基本モデルを使用して特定した。
次に該当する場合、微調整の準備ができていない可能性があります。
- モデルまたはデータ ソースからの十分な知識がない。
- モデルに対応する適切なデータを見つけることができない。
- 微調整のための明確なユース ケースがない場合、または "モデルをより良くしたいと思う" 以外に明確に表現できない場合。
コストが主な動機として認識される場合は、慎重に進めてください。 微調整では、プロンプトを短くしたり、より小さなモデルを使用したりすることで、特定のユース ケースのコストが削減される可能性があります。 ただし、通常、トレーニングに対する先行コストが大きくなり、独自のカスタム モデルをホストするための料金を支払う必要があります。
別の方法では何が機能しないのですか?
プロンプト エンジニアリングが不足している場所を理解するには、微調整へのアプローチに関するガイダンスを提供する必要があります。 基本モデルはエッジ ケースまたは例外で失敗しますか? 基本モデルで一貫して正しい形式で出力が提供されていないため、コンテキスト ウィンドウで修正するのに十分な例を入力することができないのですか?
基本モデルとプロンプト エンジニアリングでの失敗の例は、微調整のために収集する必要があるデータと、微調整されたモデルを評価する方法を特定するのに役立ちます。
次に例を示します。あるお客様が、GPT-3.5-Turbo を使用して、自然言語の質問を特定の非標準クエリ言語のクエリに変換したいと考えていました。 お客様はプロンプトでガイダンスを提供し ("常に GQL を返します")、RAG を使用してデータベース スキーマを取得しました。 ただし、構文が常に正しいとは限らず、多くの場合、エッジ ケースでは失敗します。 お客様は、以前にモデルが失敗したケースを含め、データベースに対する自然言語の質問と同等のクエリの例を何千も収集しています。 その後、お客様はそのデータを使用してモデルを微調整します。 新たに微調整されたモデルと、設計されたプロンプトと取得を組み合わせることで、モデル出力の精度が許容できる基準にまで向上します。
これまでに何を試みましたか?
微調整は高度な機能であり、生成型 AI 体験の開始点ではありません。 LLM の使用の基本については、既に理解している必要があります。 まず、プロンプト エンジニアリングや RAG を使用して基本モデルのパフォーマンスを評価し、パフォーマンスのベースラインを取得する必要があります。
微調整していないときのパフォーマンスのベースラインを取得することは、微調整によってモデルのパフォーマンスが向上しているかどうかを把握するために不可欠です。 不適切なデータを使用して微調整すると、基本モデルが悪化し、ベースラインがないと、回帰を検出するのが困難です。
以下に該当する場合、微調整の準備ができていると考えられます。
- プロンプト エンジニアリングと RAG ベースのアプローチの証拠と知識を実証できる。
- ユース ケースで試行した微調整以外の手法を使用して、特定のエクスペリエンスと課題を共有できる。
- 可能な限り、ベースライン パフォーマンスの定量的評価ができている。
次に該当する場合、微調整の準備ができていない可能性があります。
- 他の手法をテストしていない。
- 特に LLM に微調整を適用する方法について十分な知識または理解がない。
- 微調整を評価するベンチマーク測定がない。
微調整に使用するデータは何ですか?
優れたユース ケースを使用しても、微調整の効果は、提供できるデータの品質と同程度になります。 微調整作業を行うために時間と労力を費やす必要があります。 モデルによって必要なデータ量は異なりますが、多くの場合、かなり大量の高品質のキュレーションされたデータを提供できる必要があります。
もう一つ重要なポイントは、高品質データであっても、データが微調整に必要な形式でない場合は、形式を設定するためにエンジニアリング リソースをコミットする必要があることです。
以下に該当する場合、微調整の準備ができていると考えられます。
- 微調整用のデータセットを特定した。
- データセットがトレーニングに適した形式になっている。
- データセットの品質を確保するために、ある程度のキュレーションを採用した。
次に該当する場合、微調整の準備ができていない可能性があります。
- 適切なデータセットが識別されていません。
- データセットの形式が、微調整するモデルと一致しない。
微調整されたモデルの品質はどのように測定できますか?
この質問に対する正しい答えは 1 つではありませんが、微調整による成功の目標を明確に定義する必要があります。 理想的には、この取り組みが質的な尺度だけにならないようにします。 それには、ユーザー受け入れテストや、基本モデルに対して微調整されたモデルの A/B テストに加えて、検証に予約データのセットを使用するなど、成功の定量的な尺度を含める必要があります。
Azure AI Studio で微調整するためにサポートされているモデル
どのような場合にユース ケースに微調整を使用するかを把握したら、Azure AI Studio にアクセスして、微調整に使用できるモデルを見つけることができます。 次のテーブルでは、Azure AI Studio で微調整できるモデルと、それらを微調整できるリージョンについて説明します。
モデル ファミリ | モデル ID | 微調整リージョン |
---|---|---|
Azure OpenAI のモデル | 微調整できる Azure OpenAI Service モデルには、gpt-4 や gpt-4o-mini などがあります。微調整に使用できる Azure OpenAI モデルの詳細については、「Azure OpenAI Service モデルのドキュメント」を参照するか、このガイドの後半にある Azure OpenAI モデルのテーブルを参照してください。 |
微調整できる Azure OpenAI Service モデルには、米国中北部やスウェーデン中部などがあります。 サポートされるリージョンは、AI Studio プロジェクトで Azure OpenAI モデルを使用する場合とプロジェクト外で使用する場合とでは異なる場合があります。 リージョンの微調整の詳細については、「Azure OpenAI Service モデルのドキュメント」を参照してください。 |
Phi-3 ファミリ モデル | Phi-3-mini-4k-instruct Phi-3-mini-128k-instruct Phi-3-medium-4k-instruct Phi-3-medium-128k-instruct |
米国東部 2 |
Meta Llama 2 ファミリ モデル | Meta-Llama-2-70b Meta-Llama-2-7b Meta-Llama-2-13b Llama-2-7B-chat Llama-2-70B-chat |
West US3 |
Meta Llama 3.1 ファミリ モデル | Meta-Llama-3.1-70b-Instruct Meta-Llama-3.1-8b-Instruct |
West US3 |
次のテーブルでは、微調整をサポートする Azure OpenAI Service モデルと、微調整が利用可能なリージョンの詳細を示します。
Azure OpenAI モデルの微調整
Note
gpt-35-turbo
- このモデルの微調整はリージョンのサブセットに限定され、基本モデルが使用可能なすべてのリージョンで使用できるわけではありません。
微調整でサポートされるリージョンは、AI Studio プロジェクトで Azure OpenAI モデルを使用する場合とプロジェクト外で使用する場合とでは異なる場合があります。
モデル 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 1 (2024-07-18) |
米国中北部 スウェーデン中部 |
入力: 128,000 出力: 16,384 トレーニング例のコンテキスト長: 64,536 |
2023年10月 |
gpt-4o 1 (2024-08-06) |
米国東部 2 米国中北部 スウェーデン中部 |
入力: 128,000 出力: 16,384 トレーニング例のコンテキスト長: 64,536 |
2023年10月 |
1 GPT-4 は現在パブリック プレビューの段階です。