このページでは、Gemini でテキストモデルをファインチューニングするための推奨手順について説明します。このガイドでは、分類、感情分析、抽出のユースケースについて説明します。
制限事項
- Gemini モデルは信頼スコアをサポートしていません。
- Gemini は、感情分析の数値スコアを提供できません。このため、数値のしきい値に基づいて感情を推定する機能が制限されます。
AI モデルの出力の信頼性を高めるには、信頼度スコアリングに自己整合性などの手法を取り入れることを検討してください。この手法では、同じ入力に対してモデルから複数の出力を生成し、過半数投票システムを使用して最も可能性の高い出力を決定します。信頼スコアは、過半数の出力が生成された回数を反映する比率として表すことができます。
感情分析タスクでは、評価者として LLM を使用して、言葉による信頼スコアを提供することを検討してください。モデルに感情を分析するよう指示し、数値スコアではなく、言葉によるスコア(「非常に高い」など)を返します。一般的に、言葉によるスコアは解釈が容易で、LLM のコンテキストではバイアスの影響を受けにくくなります。
Gemini を使用したテキストモデルのチューニング
Gemini で分類、抽出、感情分析用のテキストモデルをチューニングするには、事前トレーニング済みモデルによるプロンプトとカスタム ファインチューニングの 2 つのオプションがあります。
事前トレーニング済みの Gemini モデルによるプロンプト: プロンプトとは、Gemini などの AI モデルが目的の出力を生成できるように、効果的な指示を作成する技術です。そのためには、タスク、希望する形式、関連するコンテキストを明確に伝えるプロンプトを設計する必要があります。Gemini の機能は、最小限の設定で使用できます。次の場合に最適です。
- ラベル付きデータが限られている場合: ラベル付きデータが少ない場合や、長時間のファインチューニング プロセスを実施できない場合。
- 迅速なプロトタイピング: コンセプトをすばやくテストする必要がある場合や、ファインチューニングに多大な投資をせずにベースラインのパフォーマンスを取得する必要がある場合。
Gemini モデルのカスタム ファインチューニング: よりカスタマイズされた結果を得るために、Gemini では特定のデータセットでモデルを微調整できます。特定の分野で優れた AI モデルを作成するには、ファインチューニングを検討してください。これには、独自のラベル付きデータセットでベースモデルを再トレーニングし、その重みをタスクとデータに適応させることが含まれます。Gemini はユースケースに合わせて調整できます。ファインチューニングは、次のような場合に最も効果的です。
- ラベル付きデータがある: トレーニング用の大規模なデータセット(100 個以上のサンプルなど)があり、モデルがタスクの仕様を深く理解できます。
- 複雑なタスクや一意のタスク: 高度なプロンプト戦略では不十分で、データに合わせてチューニングされたモデルが必要なシナリオ。
可能であれば、両方のアプローチを試して、特定のユースケースでどちらが優れた結果をもたらすかを確認します。最適なプロンプトを見つけるには、まずプロンプトの作成から始めることをおすすめします。次に、必要に応じてファインチューニングを行い、パフォーマンスをさらに向上させるか、繰り返し発生するエラーを修正します。
例を追加することは有効ですが、データを追加する前に、モデルがどこで誤りを行っているか評価することが重要です。アプローチに関係なく、高品質で適切にラベル付けされたデータは、優れたパフォーマンスの実現に不可欠であり、量よりも優れています。また、ファインチューニングに使用するデータは、モデルが本番環境で遭遇するデータタイプを反映している必要があります。モデルの開発、デプロイ、管理については、Vertex AI のメイン ドキュメントをご覧ください。
Gemini によるプロンプト
Gemini モデルの言語理解能力を活用するには、プロンプト自体にタスク(分類、抽出、感情分析)の例をいくつか指定します。モデルはこれらの例から学習し、その知識を新しい入力に適用します。
結果を最適化するために使用可能な一般的なプロンプト手法は次のとおりです。
- ゼロショット プロンプト: 特定の例を示すことなく、タスクを実行するようモデルに直接指示します。
- 少数ショット プロンプト: 指示とともにいくつかの例を提示し、モデルの理解を促します。
- Chain-of-Thought プロンプト: 複雑なタスクを小さなステップに分割し、各ステップを順次処理するようにモデルに指示します。
プロンプト設計は柔軟ですが、特定の戦略によってモデルの出力を誘導できます。パフォーマンスを最適化するには、徹底したテストと評価が不可欠です。
大規模言語モデル(LLM)は、膨大なテキストデータでトレーニングされ、言語パターンと関係を学習します。これらのモデルは、高度な予測入力と同様に、プロンプトから最も可能性の高い続きの部分を予測します。したがって、プロンプトを作成する際は、モデルの予測に影響を与える要因を考慮する必要があります。
プロンプト エンジニアリングのプロセスを次の図に示します。
入力データを準備する
使用できるプロンプト手法はいくつかあります。次の例では、少量ショット プロンプト手法を使用しています。
分類
リクエスト
Classify the following as red wine or white wine:Name: Chardonnay Type: White wine Name: Cabernet Type: Red wine Name: Moscato Type: White wine Name: Riesling Type:
レスポンス
White wine
抽出
リクエスト
Extract the technical specifications from the text below in a JSON format.
INPUT: Google Nest Wifi, network speed up to 1200Mpbs, 2.4GHz and 5GHz frequencies, WP3 protocol OUTPUT: { "product":"Google Nest Wifi", "speed":"1200Mpbs", "frequencies": ["2.4GHz", "5GHz"], "protocol":"WP3" } Google Pixel 7, 5G network, 8GB RAM, Tensor G2 processor, 128GB of storage, Lemongrass
レスポンス
{ "product": "Google Pixel 7", "network": "5G", "ram": "8GB", "processor": "Tensor G2", "storage": "128GB", "color": "Lemongrass" }
感情分析
リクエスト
Classify the sentiment of the message. Please only print the category name without anything else.Message: I had to compare two versions of Hamlet for my Shakespeare class and unfortunately I picked this version. Everything from the acting (the actors deliver most of their lines directly to the camera) to the camera shots (all medium or close up shots...no scenery shots and very little back ground in the shots) were absolutely terrible. I watched this over my spring break and it is very safe to say that I feel that I was gypped out of 114 minutes of my vacation. Not recommended by any stretch of the imagination. Category: negative Message: This Charles outing is decent but this is a pretty low-key performance. Marlon Brando stands out. There's a subplot with Mira Sorvino and Donald Sutherland that forgets to develop and it hurts the film a little. I'm still trying to figure out why Charlie want to change his name. Category: negative
Message: My family has watched Arthur Bach stumble and stammer since the movie first came out. We have most lines memorized. I watched it two weeks ago and still get tickled at the simple humor and view-at-life that Dudley Moore portrays. Liza Minelli did a wonderful job as the side kick - though I'm not her biggest fan. This movie makes me just enjoy watching movies. My favorite scene is when Arthur is visiting his fiancée's house. His conversation with the butler and Susan's father is side-spitting. The line from the butler, "Would you care to wait in the Library" followed by Arthur's reply, "Yes I would, the bathroom is out of the question", is my NEWMAIL notification on my computer.
レスポンス
Positive
予測のレスポンスを取得する
分類の Python コード レスポンスの例を次に示します。詳細については、Vertex AI での生成 AI の概要をご覧ください。
from vertexai import generative_models
from vertexai.generative_models import GenerativeModel
model = GenerativeModel(model_name="gemini-1.5-flash-001")
response = model.generate_content(["Classify the following as red wine or white wine:
<examples>
Name: Chardonnay
Type: White wine
Name: Cabernet
Type: Red wine
Name: Moscato
Type: White wine
</examples>
Name: Riesling
Type: "])
Gemini 1.0 Pro によるファインチューニング
ファインチューニングにより、Gemini 1.0 Pro を特定のニーズに合わせてチューニングできます。独自のデータを使用して Gemini 1.0 Pro をファインチューニングする手順は次のとおりです。
トレーニング データを準備する
JSONL ファイル構造を使用する Gemini のファインチューニング形式にトレーニング データを変換します。ファイル内の各行は、単一のトレーニング例を表す必要があります。トレーニングの例は、次の構造に従う必要があります。
{"messages": [{"role": "system", "content": "<system_context>"}, {"role": "user", "content": "<user_input>"}, {"role": "model", "content": "<desired_output>"}]}
2 つのデータポイントを含むエントリの例を以下に示します。
{"messages": [{"role": "system", "content": "You should classify the text into one of the following classes:[business, entertainment]"}, {"role": "user", "content": "Diversify your investment portfolio"}, {"role": "model", "content": "business"}]}
{"messages": [{"role": "system", "content": "You should classify the text into one of the following classes:[business, entertainment]"}, {"role": "user", "content": "Watch a live concert"}, {"role": "model", "content": "entertainment"}]}
詳細な手順とその他の例については、公式の Gemini データセット準備ガイドをご覧ください。
ファインチューニング パイプラインを実行する
Gemini のファインチューニング ジョブを開始するには、ユーザー インターフェース、Python、または REST API を使用して、こちらのステップバイステップ ガイドをご覧ください。設定時に、Gemini モデル バージョンを選択し、ファインチューニング ハイパーパラメータを構成して、全体的な設定を指定します。エポック、学習率乗数、アダプター サイズのさまざまな値を試すことをおすすめします。500~1,000 個のサンプルを含むデータセットの場合は、次の構成から始めることを検討してください。これにより、モデルをよく理解し、タスクに最適なパラメータ設定を見つけることができます。
- epochs=2, learning_rate_multiplier=1, adapter_size=1;
- epochs=4, learning_rate_multiplier=1, adapter_size=1;(デフォルト)
- epochs=6, learning_rate_multiplier=1, adapter_size=4;
- epochs=12, learning_rate_multiplier=4, adapter_size=4、
- epochs=12, learning_rate_multiplier=4, adapter_size=1
1 つまたは 2 つの異なる構成のパフォーマンスを評価することで、パフォーマンスの向上に最も効果的なパラメータと変更を特定できます。目標レベルのパフォーマンスが達成されない場合は、有望な構成をさらにテストします。
評価ツールと手法
パフォーマンスを把握し、情報に基づいて意思決定を行うには、一貫性のある比較可能なモデル評価が不可欠です。モデルを評価する際に覚えておくべき手法とツールを次に示します。
- 評価手法を一貫させる: ファインチューニングされたモデルとプロンプト モデルの両方で同じ評価指標と評価方法を使用します。これにより、直接的で偏りのない比較が可能になります。可能な限り、モデルの開発とデプロイで使用した評価データセットを使用します。これにより、モデルタイプ間で公平な比較が保証され、品質の差異を特定できます。
- 評価ツールと手法 Vertex AI 生成 AI 評価サービス: 小規模なデータバッチに対して低レイテンシの同期評価を提供します。オンデマンドの評価、迅速な反復、テストに適しています。Python SDK を使用して他の Vertex AI サービスと統合します。
- 分類、抽出、感情分析に関する推奨事項: 評価サービスを使用する場合は、
exact_match
指標を含めます。
デプロイ
チューニング済みのモデルをデプロイするには、チューニング済みのモデルをデプロイするをご覧ください。
次のステップ
- モデルのチューニングの詳細: チューニングの概要
- ツールの主な違いについて確認する。AutoML テキスト ユーザー向けの Gemini をご覧ください。