どのような場合に言語モデルを微調整するべきかを理解する

完了

モデルの微調整を開始する前に、微調整とは何か、どのような場合にこれを使用するべきかを明確に理解しておく必要があります。

Azure AI Foundry を使用してチャット アプリケーションを開発する場合は、プロンプト フローを使用して、応答を生成する言語モデルと統合されたチャット アプリケーションを作成できます。 モデルが生成する応答の品質を向上させるために、さまざまな戦略を試すことができます。 最も簡単な戦略は、プロンプト エンジニアリングを適用することです。 質問の形式化の方法を変更することもできますが、プロンプトと共に言語モデルに送信されるシステム メッセージを更新することもできます。

プロンプト エンジニアリングは、"モデルがどのように動作するのか" と "モデルが何を知る必要があるのか" を迅速かつ簡単に修正できる方法です。 モデルの品質をさらに向上させたい場合は、以下の 2 つの一般的な手法が使用されます。

  • 検索拡張生成 (RAG):応答を生成する前にまずデータ ソースからコンテキストを取得することで、データのグラウンディングを行います。
  • 微調整:アプリケーションへの統合の前に、基本言語モデルをデータセットに対してトレーニングします。

モデルのパフォーマンスを最適化するためのさまざまな戦略を示す図。

RAG が最も一般的に適用されるのは、モデルの応答を事実に基づかせ特定のデータに "グラウンディング" する必要がある場合です。 たとえば、自分が旅行予約カタログ内で提供しているホテルに関する質問を顧客に行わせる必要がある場合です。 一方、モデルにある特定の振る舞いをさせたい場合は、微調整が目標を達成するのに役立ちます。 また、RAG "と" 微調整されたモデルのように、最適化戦略を組み合わせて使用することで、言語アプリケーションを改善することもできます。

モデルがどのように振る舞う必要があるかはほとんどの場合、モデルによって生成される応答のスタイル、形式、トーンに関係する話です。 応答時にモデルを特定のスタイルと形式に従わせたい場合は、プロンプト エンジニアリングを通してモデルにその振る舞いを指示することもできます。 ただし、プロンプト エンジニアリングは一貫した結果をもたらさない場合があります。 モデルがあなたの指示を "無視" して異なる振る舞いをするということもあり得ます。

プロンプト エンジニアリングにおいて、特定の形式で出力を生成することをモデルに "強制する" ために使用される手法は、望ましい出力がどのようなものなのかの様々な例をモデルに提供することで、これは one-shot (1 つの例) や few-shot (いくつかの例) とも呼ばれます。 それでも、モデルが常に指定されたスタイルと形式で出力を生成しないということが起こり得ます。

モデルの振る舞いの整合性を最大化するには、独自のトレーニング データを使用して基本モデルを微調整することができます。