次の方法で共有


Azure AI Studio でモデルを微調整する

重要

この記事で説明する機能の一部は、プレビューでのみ使用できる場合があります。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

微調整では、サンプル データを使用して既存の大規模言語モデル (LLM) を再トレーニングします。 その結果は、提供された例に合わせて最適化された新しいカスタム LLM です。

この記事は、微調整がユース ケースに適した解決策であるかどうかを判断するのに役立ちます。 この記事では、Azure AI Studio で微調整のニーズがどのようにサポートされるかについても説明します。

この記事では、微調整は継続的な事前トレーニングまたは人間のフィードバックによる強化学習 (RLHF) ではなく、実際には "教師あり微調整" を意味します。 教師あり微調整とは、特定のデータセットで事前トレーニング済みのモデルを再トレーニングするプロセスです。 通常、その目的は、特定のタスクのモデルのパフォーマンスを向上させたり、基本モデルを最初にトレーニングしたときによく表されなかった情報を導入したりすることです。

微調整の概要

微調整がユース ケースに適した解決策であるかどうかを判断するときは、次の重要な用語を理解しておくと役立ちます。

  • プロンプト エンジニアリングは、自然言語処理モデルのプロンプトの設計を含む手法です。 このプロセスにより、応答の精度と関連性が向上し、モデルのパフォーマンスが最適化されます。
  • 取得拡張生成 (RAG) は、外部ソースからデータを取得し、プロンプトに組み込むことで、LLM のパフォーマンスを向上させます。 RAG を使用すると、企業はデータの関連性を維持し、コストを最適化しながら、カスタマイズされたソリューションを実現しやすくなります。

微調整は、専門知識を適切に使用する必要がある高度な手法です。 以下の質問は、微調整の準備ができているかどうか、およびプロセスをどの程度よく検討したかを評価するのに役立ちます。 これらの質問を使用して、次の手順をガイドしたり、より適切な他のアプローチを特定したりすることができます。

モデルを微調整する理由

以下に該当する場合、微調整の準備ができていると考えられます。

  • 微調整のために特定のユース ケースを明確にし、微調整するモデルを特定することができる。

    微調整に適したユース ケースには、特定のカスタマイズされたスタイル、トーン、または形式でコンテンツを出力するようにモデルを操作することが含まれます。 また、モデルを操作するために必要な情報が長すぎる、または複雑すぎてプロンプト ウィンドウに収まらないシナリオも含まれます。

  • 代替アプローチの課題に対処した方法と、パフォーマンス向上のために可能な解決策としてテストした内容に関する明確な例がある。

  • エッジ ケースでの一貫性のないパフォーマンス、モデルを操作するのに十分なショット プロンプトがコンテキスト ウィンドウに収まらない、待機時間が長いなどの欠点を、基本モデルを使用して特定した。

次に該当する場合、微調整の準備ができていない可能性があります。

  • モデルまたはデータ ソースからの十分な知識がない。
  • モデルに対応する適切なデータを見つけることができない。
  • 微調整のための明確なユース ケースがない場合、または "モデルをより良くしたいと思う" 以外に明確に表現できない場合。

コストが主な動機として認識される場合は、慎重に進めてください。 微調整では、プロンプトを短くしたり、より小さなモデルを使用したりすることで、特定のユース ケースのコストが削減される可能性があります。 ただし、トレーニングに対する先行コストが大きくなり、独自のカスタム モデルをホストするための料金を支払う必要があります。 Azure OpenAI Service での微調整コストの詳細については、価格のページを参照してください。

ドメイン外の知識をモデルに追加する場合は、Azure OpenAI On Your Data埋め込みなどの機能を使用して、RAG から始める必要があります。 RAG をこのように使用することは、多くの場合、ユース ケースとデータに応じて、より低コストで適応性に優れ、効果が高い可能性があるオプションです。

別の方法では何が機能しないのですか?

プロンプト エンジニアリングが不足している場所を理解するには、微調整へのアプローチに関するガイダンスを提供する必要があります。 基本モデルはエッジ ケースまたは例外で失敗しますか? 基本モデルで一貫して正しい形式で出力が提供されていないため、コンテキスト ウィンドウで修正するのに十分な例を入力することができないのですか?

基本モデルとプロンプト エンジニアリングでの失敗の例は、微調整のために収集する必要があるデータと、微調整されたモデルを評価する方法を特定するのに役立ちます。

次に例を示します。あるお客様が、GPT-3.5-Turbo を使用して、自然言語の質問を特定の非標準クエリ言語のクエリに変換したいと考えていました。 お客様はプロンプトでガイダンスを提供し ("常に GQL を返します")、RAG を使用してデータベース スキーマを取得しました。 ただし、構文が常に正しいとは限らず、多くの場合、エッジ ケースでは失敗します。 お客様は、以前にモデルが失敗したケースを含め、データベースに対する自然言語の質問と同等のクエリの例を何千も収集しています。 その後、お客様はそのデータを使用してモデルを微調整します。 新たに微調整されたモデルと、設計されたプロンプトと取得を組み合わせることで、モデル出力の精度が許容できる基準にまで向上します。

これまでに何を試みましたか?

微調整は高度な機能であり、生成型 AI 体験の開始点ではありません。 LLM の使用の基本については、既に理解している必要があります。 まず、プロンプト エンジニアリングや RAG を使用して基本モデルのパフォーマンスを評価し、パフォーマンスのベースラインを取得する必要があります。

微調整していないときのパフォーマンスのベースラインを取得することは、微調整によってモデルのパフォーマンスが向上しているかどうかを把握するために不可欠です。 不適切なデータを使用して微調整すると、基本モデルが悪化し、ベースラインがないと、回帰を検出するのが困難です。

以下に該当する場合、微調整の準備ができていると考えられます。

  • プロンプト エンジニアリングと RAG ベースのアプローチの証拠と知識を実証できる。
  • ユース ケースで試行した微調整以外の手法を使用して、特定のエクスペリエンスと課題を共有できる。
  • 可能な限り、ベースライン パフォーマンスの定量的評価ができている。

次に該当する場合、微調整の準備ができていない可能性があります。

  • 他の手法をテストしていない。
  • 特に LLM に微調整を適用する方法について十分な知識または理解がない。
  • 微調整を評価するベンチマーク測定がない。

微調整に使用するデータは何ですか?

優れたユース ケースを使用しても、微調整の効果は、提供できるデータの品質と同程度になります。 微調整作業を行うために時間と労力を費やす必要があります。 モデルによって必要なデータ量は異なりますが、多くの場合、かなり大量の高品質のキュレーションされたデータを提供できる必要があります。

もう一つ重要なポイントは、高品質データであっても、データが微調整に必要な形式でない場合は、形式を設定するためにエンジニアリング リソースをコミットする必要があることです。 微調整のためにデータを準備する方法の詳細については、微調整に関するドキュメントを参照してください。

以下に該当する場合、微調整の準備ができていると考えられます。

  • 微調整用のデータセットを特定した。
  • データセットがトレーニングに適した形式になっている。
  • データセットの品質を確保するために、ある程度のキュレーションを採用した。

次に該当する場合、微調整の準備ができていない可能性があります。

  • データセットをまだ特定していない。
  • データセットの形式が、微調整するモデルと一致しない。

微調整されたモデルの品質はどのように測定しますか?

この質問に対する正しい答えは 1 つではありませんが、微調整による成功の目標を明確に定義する必要があります。 理想的には、この取り組みが質的な尺度だけにならないようにします。 それには、ユーザー受け入れテストや、基本モデルに対して微調整されたモデルの A/B テストに加えて、検証に予約データのセットを使用するなど、成功の定量的な尺度を含める必要があります。

Azure AI Studio で微調整するためにサポートされているモデル

どのような場合にユース ケースに微調整を使用するかを把握したら、Azure AI Studio にアクセスして、微調整に使用できるモデルを見つけることができます。 以降のセクションでは、使用可能なモデルについて説明します。

Azure OpenAI のモデル

次の Azure OpenAI モデルは、微調整のために Azure AI Studio でサポートされています。

モデル 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 月

1 GPT-4 ファインチューニングは現在パブリック プレビュー段階です。 詳細については、GPT-4 の微調整に関する安全性評価ガイダンスを参照してください。

Azure OpenAI モデルを微調整するには、サポートされているリージョンがある Azure OpenAI リソースへの接続をプロジェクトに追加する必要があります。

Phi-3 ファミリ モデル

以下の Phi-3 ファミリ モデルでは、Azure AI Studio でのファインチューニングがサポートされています。

  • Phi-3-mini-4k-instruct
  • Phi-3-mini-128k-instruct
  • Phi-3-medium-4k-instruct
  • Phi-3-medium-128k-instruct

現在、Phi-3 モデルのファインチューニングは米国東部 2 内にあるプロジェクトでサポートされています。

Meta Llama 2 ファミリ モデル

次の Llama 2 ファミリ モデルは、微調整のために Azure AI Studio でサポートされています:

  • Meta-Llama-2-70b
  • Meta-Llama-2-7b
  • Meta-Llama-2-13b

現在、Llama 2 モデルのファインチューニングは米国西部 3 にあるプロジェクトでサポートされています。

Meta Llama 3.1 ファミリ モデル

以下の Llama 3.1 ファミリ モデルは、Azure AI Studio でのファインチューニングがサポートされています。

  • Meta-Llama-3.1-70b-Instruct
  • Meta-Llama-3.1-8b-Instruct

現在、Llama 3.1 モデルのファインチューニングは米国西部 3 にあるプロジェクトでサポートされています。