このドキュメントでは、データドリブン オプティマイザーを使用して、一連のプロンプトのシステム指示を改善し、プロンプトのパフォーマンスを自動的に最適化する方法について説明します。
データドリブン オプティマイザーを使用すると、システム指示や個々のプロンプトを手動で書き換えることなく、プロンプトを迅速かつ大規模に改善できます。これは、1 つのモデル用に記述されたシステム指示とプロンプトを別のモデルで使用する場合などに便利です。
プロンプトの最適化の例
たとえば、調理に関する質問に回答するためにコンテキスト情報を参照する一連のプロンプトのシステム指示をデータドリブン オプティマイザーで最適化してみましょう。このタスクを完了するため、次のような入力を準備します。
システム指示
You are a professional chef. Your goal is teaching how to cook healthy cooking recipes to your apprentice. Given a question from your apprentice and some context, provide the correct answer to the question. Use the context to return a single and correct answer with some explanation.
プロンプト テンプレート
Question: {input_question} Facts: {input_context}
サンプル プロンプト
input_question |
input_context |
---|---|
健康に悪い化合物の形成を最小限に抑えながら、赤身肉や豚肉の風味と柔らかさを最大限に引き出す調理方法を教えてください。 | 赤身肉と豚肉は、安全を確保するために内部温度を摂氏 63 度(華氏 145 度)にする必要があります。レモン汁や酢などの酸性成分で肉をマリネすると、硬い筋肉繊維が分解され、肉が柔らかくなります。グリルやフライパン焼きなどの高温調理方法では、おいしい焼き色やカラメル化を実現できますが、その場合、有害な化合物が発生する恐れのある焦げ付きを避けることが重要です。 |
添加糖類や人工添加物を使用せずに、プロテイン シェイクに風味と栄養を加える創造的な方法はありますか? | ほうれん草やケールなどの葉物野菜を加えることで、味を大きく変えることなく、シェイクの栄養価を高めることができます。通常の牛乳の代わりに、無糖アーモンドミルクやココナッツ ウォーターを使用すると、それぞれ繊細な甘みと健康的な脂肪や電解質を加えることができます。シェイクを過度に混ぜると、温度が上昇する可能性があることをご存じですか?冷たくてさわやかに保つには、短時間でミキシングし、必要に応じてミキシングを中断します。 |
最適化されたシステム指示
As a highly skilled chef with a passion for healthy cooking, you love sharing your knowledge with aspiring chefs. Today, a culinary intern approaches you with a question about healthy cooking. Given the intern's question and some facts, provide a clear, concise, and informative answer that will help the intern excel in their culinary journey.
最適化の仕組み
データドリブン オプティマイザーは次のパラメータを受け取ります。
- 最適化モード: データドリブン オプティマイザーがシステム指示を最適化するかどうか、システム指示に追加するサンプル プロンプトを少数ショットの例として選択するかどうか、またはその両方を指定します。
- 評価指標: データドリブン オプティマイザーがシステム指示の最適化やサンプル プロンプトの選択に使用する指標。
- ターゲット モデル: データドリブン オプティマイザーがシステム指示を最適化し、サンプル プロンプトを選択する Google モデル。
データドリブン オプティマイザーを実行すると、カスタム トレーニング ジョブが実行され、選択内容に基づいてシステム指示が最適化されます。このジョブでは、サンプル プロンプトが繰り返し評価され、システム指示が書き換えられて、ターゲット モデルの評価スコアが最も高くなるバージョンが特定されます。
ジョブの終了時に、データドリブン オプティマイザーは、最適化されたシステム指示と評価スコアを出力します。
評価指標
データドリブン オプティマイザーは、評価指標を使用してシステム指示を最適化し、サンプル プロンプトを選択します。標準の評価指標を使用するか、独自のカスタム評価指標を定義できます。注: すべての評価指標には、スコアが高いほどパフォーマンスが高いことを示すプロパティが必要です。
一度に複数の指標を使用できます。ただし、カスタム指標は一度に 1 つしか使用できません。標準指標とカスタム指標を一緒に使用する場合は、カスタム指標にできるのは 1 つだけです。残りは標準指標である必要があります。
指標を 1 つずつ指定する方法、または組み合わせて指定する方法については、プロンプト テンプレートとシステム指示を作成するの SDK タブの EVALUATION_METRIC_PARAMETERS をご覧ください。
カスタム評価指標
カスタム指標は、標準指標がアプリケーションに適していない場合に役立ちます。データドリブン オプティマイザーでサポートされるカスタム指標は 1 度に 1 つだけです。
カスタム指標の作成方法については、カスタム指標を作成するをご覧ください。
標準の評価指標
データドリブン オプティマイザーは、カスタム評価指標をサポートしています。また、次の評価指標もサポートしています。
指標タイプ | ユースケース | 指標 | 説明 |
---|---|---|---|
モデルベース | 要約 | summarization_quality |
参照するテキスト本文が与えられたときに、モデルが質問に回答できる能力を説明します。 |
質問応答 | question_answering_correctness * |
質問に正しく答えるモデルの能力を表します。 | |
question_answering_quality |
参照するテキスト本文が与えられたときに、モデルが質問に回答できる能力を説明します。 | ||
一貫性 | coherence |
モデルが一貫したレスポンスを提供できる能力を説明します。生成されたテキストが論理的で、意味のあるものかどうかを測定します。 | |
安全性 | safety |
モデルの安全性レベル(レスポンスに安全でないテキストが含まれているかどうか)を説明します。 | |
流暢さ | fluency |
モデルの言語習熟度を説明します。 | |
根拠性 | groundedness |
入力テキストにのみ含まれる情報を提供または参照できるかどうかをモデルの能力で説明します。 | |
Comet | comet** |
参照に対する翻訳の品質に関するモデルの能力を説明します。 | |
MetricX | metricx** |
翻訳の品質に関するモデルの能力を説明します。 | |
計算ベース | ツールの使用と関数呼び出し | tool_call_valid * |
有効なツール呼び出しを予測するモデルの能力を説明します。 |
tool_name_match * |
正しいツール名でツール呼び出しを予測するモデルの能力を説明します。最初のツール呼び出しのみが検査されます。 | ||
tool_parameter_key_match * |
正しいパラメータ名でツール呼び出しを予測するモデルの能力を説明します。 | ||
tool_parameter_kv_match * |
正しいパラメータ名とキー値でツール呼び出しを予測するモデルの能力を説明します。 | ||
一般的なテキスト生成 | bleu * |
ある自然言語から別の自然言語に翻訳された予測の品質を評価するアルゴリズムの結果を保持します。予測の品質は、予測パラメータとその参照パラメータとの対応と見なされます。 | |
exact_match * |
予測パラメータが参照パラメータと完全に一致するかどうかを計算します。 | ||
rouge_1 * |
指定された予測パラメータを参照パラメータと比較するために使用されます。 | ||
rouge_2 * |
|||
rouge_l * |
|||
rouge_l_sum * |
* question_answering_correctness
または計算ベースの評価を使用してプロンプトを最適化するには、次のいずれかを行う必要があります。
- プロンプトのグラウンド トゥルース レスポンスを表す変数をプロンプト テンプレートに追加します。
- プロンプトのグラウンド トゥルース レスポンスがなく、以前に Google モデルでプロンプトを使用して目標とする結果を達成している場合は、グラウンド トゥルース レスポンスを追加する代わりに、構成に
source_model
パラメータを追加できます。source_model
パラメータが設定されている場合、データドリブン オプティマイザーは、ソースモデルでサンプル プロンプトを実行して、グラウンド トゥルース レスポンスを生成します。
** comet
または metricx
を使用してプロンプトを最適化する場合は、データ内のソーステキストの対応するフィールド名を指定する translation_source_field_name
パラメータを構成に指定する必要があります。また、MetricX の値は、大きいほど良いという特性を尊重するため、0(最悪)~ 25(最良)の範囲に変更されました。
始める前に
プロンプトの最適化に必要な権限を Compute Engine のデフォルト サービス アカウントに付与するには、プロジェクトに対する次の IAM ロールを Compute Engine のデフォルト サービス アカウントに付与するよう管理者に依頼します。
-
Vertex AI ユーザー(
roles/aiplatform.user
) -
Storage オブジェクト管理者(
roles/storage.objectAdmin
) -
Artifact Registry 読み取り(
roles/artifactregistry.reader
) -
カスタム指標を使用する場合:
-
Cloud Run デベロッパー(
roles/run.developer
) -
Cloud Run 起動元 (
roles/run.invoker
)
-
Cloud Run デベロッパー(
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
管理者は、カスタムロールや他の事前定義ロールを使用して、Compute Engine のデフォルトのサービス エージェントに必要な権限を付与することもできます。
プロンプトの最適化
プロンプトは次の方法で最適化できます。
- Vertex AI コンソールの Vertex AI プロンプト オプティマイザーを使用する
- Vertex AI API を使用する
- Vertex AI プロンプト オプティマイザー ノートブックを実行する。
プロンプトを最適化するには、使用するメソッドを選択して、次の手順を完了します(詳細は、以降のセクションで説明します)。
プロンプト テンプレートとシステム指示を作成する
プロンプト テンプレートでは、置換可能な変数を使用してすべてのプロンプトの形式を定義します。プロンプト テンプレートを使用してプロンプトを最適化すると、変数はプロンプト データセットのデータに置き換えられます。
プロンプト テンプレートの変数は、次の要件を満たす必要があります。
- 変数は中括弧で囲む必要があります。
- 変数名にスペースやダッシュを含めることはできません
-
マルチモーダル入力を表す変数の場合、変数の後に
MIME_TYPE
文字列を続ける必要があります。@@@MIME_TYPE
MIME_TYPE
は、ターゲット モデルでサポートされている画像、動画、音声、ドキュメントの MIME タイプに置き換えます。
次のいずれかの方法でプロンプト テンプレートとシステム指示を作成します。
ノートブック
ノートブックでデータドリブン オプティマイザーを実行する場合は、次の手順でシステム指示とプロンプト テンプレートを作成します。
Colab Enterprise で Vertex AI プロンプト オプティマイザー ノートブックを開きます。
[プロンプト テンプレートとシステム指示を作成する] セクションで、次の操作を行います。
[SYSTEM_INSTRUCTION] フィールドにシステム指示を入力します。例:
Based on the following images and articles respond to the questions.'\n' Be concise, and answer \"I don't know\" if the response cannot be found in the provided articles or images.
[PROMPT_TEMPLATE] フィールドにプロンプト テンプレートを入力します。次に例を示します。
Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
question_answering_correctness
または計算ベースの評価を使用してプロンプトを最適化するには、次のいずれかを行う必要があります。
プロンプトのグラウンド トゥルース レスポンスを表す
{target}
変数をプロンプト テンプレートに追加します。次に例を示します。Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
プロンプトのグラウンド トゥルース レスポンスがなく、以前に Google モデルでプロンプトを使用して目標とする結果を達成している場合は、グラウンド トゥルース レスポンスを追加する代わりに、構成に
source_model
パラメータを追加できます。source_model
パラメータが設定されている場合、データドリブン オプティマイザーは、ソースモデルでサンプル プロンプトを実行して、グラウンド トゥルース レスポンスを生成します。
SDK
ノートブックではなく SDK を使用してデータドリブン オプティマイザーを実行する場合は、次の手順でプロンプト テンプレートとシステム指示のテキスト ファイルを作成します。
システム指示のテキスト ファイルを作成します。
テキスト ファイルにシステム指示を定義します。次に例を示します。
Based on the following images and articles respond to the questions.'\n' Be concise, and answer \"I don't know\" if the response cannot be found in the provided articles or images.
プロンプト テンプレートのテキスト ファイルを作成します。
テキスト ファイルで、1 つ以上の変数を含むプロンプト テンプレートを定義します。次に例を示します。
Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
question_answering_correctness
または計算ベースの評価を使用してプロンプトを最適化するには、次のいずれかを行う必要があります。プロンプトのグラウンド トゥルース レスポンスを表す
{target}
変数をプロンプト テンプレートに追加します。次に例を示します。Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
プロンプトのグラウンド トゥルース レスポンスがなく、以前に Google モデルでプロンプトを使用して目標とする結果を達成している場合は、グラウンド トゥルース レスポンスを追加する代わりに、構成に
source_model
パラメータを追加できます。source_model
パラメータが設定されている場合、データドリブン オプティマイザーは、ソースモデルでサンプル プロンプトを実行して、グラウンド トゥルース レスポンスを生成します。
サンプル プロンプトを準備する
データドリブン オプティマイザーで最適な結果を得るには、50 ~ 100 個のサンプル プロンプトを使用します。
- サンプル プロンプトが 5 個程度でも、このツールは効果的です。
- 最適なサンプルにするため、ターゲット モデルのパフォーマンスが低いサンプルと、ターゲット モデルのパフォーマンスが高いサンプルを入れるようにしてください。
サンプル プロンプトには、プロンプト テンプレートの変数に代わるデータが含まれています。JSONL または CSV ファイルを使用して、サンプル プロンプトを保存できます。
JSONL ファイル
- JSONL ファイルを作成します。
JSONL ファイルに、各変数に代わるプロンプト データを追加します。次に例を示します。
{"article_1": "The marine life …", "image_1": "gs://path_to_image", "Question": "What are some most effective ways to reduce ocean pollution?", "target": "The articles and images don't answer this question."} {"article_1": "During the year …", "image_1": "gs://path_to_image", "Question": "Who was the president in 2023?", "target": "Joe Biden"}
CSV ファイル
- CSV ファイルを作成します。
- 最初の行に、プロンプト テンプレートの変数を追加します。
- 次の行に、各変数に代わるサンプルデータを追加します。
- CSV ファイルを Cloud Storage バケットにアップロードします。
省略可: カスタム指標を作成する
次の手順でカスタム指標を作成します。
requirements.txt
という名前のテキスト ファイルを作成します。requirements.txt
ファイルで、カスタム評価指標関数に必要なライブラリを定義します。どの関数にもfunctions-framework
パッケージが必要です。たとえば、ROUGE-L を計算するカスタム指標の
requirements.txt
ファイルは次のようになります。functions-framework==3.* rouge-score
main.py
という名前の Python ファイルを作成します。main.py
ファイルにカスタム評価関数を記述します。この関数は、次のものを受け入れるようにする必要があります。- HTTP POST リクエスト
- LLM の出力である
response
と、プロンプト データセットで指定されている場合はプロンプトのグラウンド トゥルース レスポンスであるreference
を含む JSON 入力。
たとえば、ROUGE-L を計算するカスタム指標の
main.py
ファイルは次のようになります。from typing import Any import json import functions_framework from rouge_score import rouge_scorer # Register an HTTP function with the Functions Framework @functions_framework.http def main(request): request_json = request.get_json(silent=True) if not request_json: raise ValueError('Can not find request json.') """Extract 'response' and 'reference' from the request payload. 'response' represents the model's response, while 'reference' represents the ground truth response.""" response = request_json['response'] reference = request_json['reference'] # Compute ROUGE-L F-measure scorer = rouge_scorer.RougeScorer(['rougeL'], use_stemmer=True) scores = scorer.score(reference, response) final_score = scores['rougeL'].fmeasure # Return the custom score in the response return json.dumps({ # The following key is the CUSTOM_METRIC_NAME that you pass to the job 'custom_accuracy': final_score, # The following key is optional 'explanation': 'ROUGE_L F-measure between reference and response', })
gcloud functions deploy
コマンドを実行して、カスタム評価関数を Cloud Run の関数としてデプロイします。gcloud functions deploy FUNCTION_NAME \ --project PROJECT_ID \ --gen2 \ --memory=2Gb \ --concurrency=6 \ --min-instances 6 \ --region=REGION \ --runtime="python310" \ --source="." \ --entry-point main \ --trigger-http \ --timeout=3600 \ --quiet
次のように置き換えます。
FUNCTION_NAME
: カスタム評価指標の名前。PROJECT_ID
: プロジェクト ID。REGION
: 関数をデプロイするリージョン。ターゲット モデルを使用しているリージョンと同じリージョンにする必要があります。
設定を作成する
データドリブン オプティマイザーの構成では、プロンプト最適化ジョブに設定するパラメータを指定します。
次のいずれかの方法で構成を作成します。
ノートブック
ノートブックでデータドリブン オプティマイザーを実行する場合は、次の手順で構成を作成します。
Colab Enterprise でデータドリブン オプティマイザー ノートブックを開きます。
[Configure project settings] セクションで、次の操作を行います。
- [PROJECT_ID] フィールドにプロジェクト ID を入力します。
- [LOCATION] フィールドに、データドリブン オプティマイザーを実行するロケーションを入力します。
- [OUTPUT_PATH] フィールドに、データドリブン オプティマイザーが最適化されたシステム指示や少数ショットのサンプルを書き込む Cloud Storage バケットの URI を入力します。例:
gs://bucket-name/output-path
- [INPUT_PATH] フィールドに、Cloud Storage バケット内のサンプル プロンプトの URI を入力します。例:
gs://bucket-name/sample-prompts.jsonl
[Configure optimization settings] セクションで、次の操作を行います。
- [TARGET_MODEL] フィールドに、プロンプトを最適化するモデルを入力します。
- [THINKING_BUDGET] フィールドに、プロンプトを最適化するターゲット モデルの思考予算を入力します。デフォルトは -1 です。これは、思考モデル以外のモデルでは思考を行わず、Gemini-2.5 などの思考モデルでは自動思考を行うことを意味します。手動予算設定については、考慮事項をご覧ください。
- [OPTIMIZATION_MODE] に、使用する最適化モードを入力します。
instruction
、demonstration
、instruction_and_demo
のいずれかにする必要があります。 - [EVAL_METRIC] フィールドに、プロンプトの最適化に使用する評価指標を入力します。
- 省略可: [SOURCE_MODEL] フィールドに、システム指示とプロンプトで以前に使用した Google モデルを入力します。
source_model
パラメータが設定されている場合、データドリブン オプティマイザーは、ソースモデルでサンプル プロンプトを実行して、グラウンド トゥルース レスポンスを必要とする評価指標用にグラウンド トゥルース レスポンスを生成します。以前に Google モデルでプロンプトを実行していなかった場合や、目標結果が達成されなかった場合は、代わりにグラウンド トゥルース レスポンスをプロンプトに追加します。詳細については、このドキュメントのプロンプトとシステム指示を作成するをご覧ください。
省略可: [Configure advanced optimization settings] セクションで、任意のパラメータを構成に追加できます。
- [NUM_INST_OPTIMIZATION_STEPS] フィールドに、データドリブン オプティマイザーが指示の最適化モードで使用する反復処理の回数を入力します。この値を増やすと、ランタイムが比例して増加します。
10
~20
の整数を指定してください。設定しなかった場合、デフォルトで10
が使用されます。 - [NUM_DEMO_OPTIMIZATION_STEPS] フィールドに、データドリブン オプティマイザーが評価するデモの数を入力します。
demonstration
とinstruction_and_demo
の最適化モードで使用されます。10
~30
の整数を指定してください。設定しなかった場合、デフォルトで10
が使用されます。 - [NUM_DEMO_PER_PROMPT] フィールドに、プロンプトごとに生成されるデモの数を入力します。
2
~サンプル プロンプトの総数 - 1 の整数にする必要があります。設定しなかった場合、デフォルトで3
が使用されます。 - [TARGET_MODEL_QPS] フィールドに、データドリブン オプティマイザーがターゲット モデルに送信する秒間クエリ数(QPS)を入力します。この値を増やすと、ランタイムが直線的に減少します。
3.0
以上の浮動小数点数で、ターゲット モデルの QPS 割り当てより小さい値にする必要があります。設定しなかった場合、デフォルトで3.0
が使用されます。 - [SOURCE_MODEL_QPS] フィールドに、データドリブン オプティマイザーがソースモデルに送信する秒間クエリ数(QPS)を入力します。
3.0
以上の浮動小数点数で、ソースモデルの QPS 割り当てより小さい値にする必要があります。設定しなかった場合、デフォルトで3.0
が使用されます。 - [EVAL_QPS] フィールドに、データドリブン オプティマイザーが Gen AI 評価サービスまたは Cloud Run 関数に送信する秒間クエリ数(QPS)を入力します。
- モデルベースの指標の場合は、
3.0
以上の浮動小数点数にする必要があります。設定しなかった場合、デフォルトで3.0
が使用されます。 - カスタム指標の場合は、
3.0
以上の浮動小数点数にする必要があります。これにより、データドリブン オプティマイザーがカスタム指標の Cloud Run 関数を呼び出す頻度が決まります。
- モデルベースの指標の場合は、
- 複数の評価指標を使用する場合は、次のようにします。
- [EVAL_METRIC_1] フィールドに、使用する評価指標を入力します。
- [EVAL_METRIC_1_WEIGHT] フィールドに、データドリブン オプティマイザーが最適化の実行時に使用する重みを入力します。
- [EVAL_METRIC_2] フィールドに、使用する評価指標を入力します。
- [EVAL_METRIC_2_WEIGHT] フィールドに、データドリブン オプティマイザーが最適化の実行時に使用する重みを入力します。
- 必要に応じて、[EVAL_METRIC_3] フィールドに使用する評価指標を入力します。
- [EVAL_METRIC_3_WEIGHT] フィールドに、データドリブン オプティマイザーが最適化の実行時に使用する重みを必要に応じて入力します。
- [METRIC_AGGREGATION_TYPE] フィールドに、データドリブン オプティマイザーが最適化の実行時に使用する重みを入力します。
- [PLACEHOLDER_TO_VALUE] フィールドに、システム指示の変数に置き換える情報を入力します。このフラグに含まれる情報は、データドリブン オプティマイザーによって最適化されません。
- [RESPONSE_MIME_TYPE] フィールドに、ターゲット モデルが使用する MIME レスポンス タイプを入力します。
text/plain
、application/json
のいずれかにする必要があります。設定しなかった場合、デフォルトでtext/plain
が使用されます。 - [TARGET_LANGUAGE] フィールドに、システム指示の言語を入力します。設定しなかった場合、デフォルトで英語が使用されます。
SDK
SDK でデータドリブン オプティマイザーを実行する場合は、次の手順で、プロンプトの最適化に使用するパラメータを含む JSON ファイルを作成します。
プロンプトの最適化に使用するパラメータを含む JSON ファイルを作成します。各構成ファイルには、次のパラメータが必要です。
{ "project": "PROJECT_ID", "system_instruction": "SYSTEM_INSTRUCTION", "prompt_template": "PROMPT_TEMPLATE", "target_model": "TARGET_MODEL", "thinking_budget": "THINKING_BUDGET, EVALUATION_METRIC_PARAMETERS, "optimization_mode": "OPTIMIZATION_MODE", "input_data_path": "SAMPLE_PROMPT_URI", "output_path": "OUTPUT_URI" }
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。SYSTEM_INSTRUCTION
: 最適化するシステム指示。PROMPT_TEMPLATE
: プロンプト テンプレート。TARGET_MODEL
: プロンプトを最適化するモデル。THINKING_BUDGET
: プロンプトを最適化するターゲット モデルの思考予算。デフォルトは -1 です。これは、思考モデル以外のモデルでは思考を行わず、Gemini-2.5 などの思考モデルでは自動思考を行うことを意味します。手動予算設定については、考慮事項をご覧ください。EVALUATION_METRIC_PARAMETERS
: 指定するパラメータは、使用する評価指標の数と、指標が標準かカスタムかによって異なります。単一の標準指標
標準評価指標を 1 つだけ使用する場合は、次のパラメータを使用します。
"eval_metric": "EVALUATION_METRIC",
EVALUATION_METRIC
は、プロンプトを最適化する指標に置き換えます。単一のカスタム指標
単一のカスタム評価指標を使用している場合は、次のパラメータを使用します。
"eval_metric": "custom_metric", "custom_metric_name": "CUSTOM_METRIC_NAME", "custom_metric_cloud_function_name": "FUNCTION_NAME",
次のように置き換えます。
CUSTOM_METRIC_NAME
:final_score
に対応するキーで定義された指標名。例:custom_accuracy
FUNCTION_NAME
: 前にデプロイした Cloud Run 関数の名前。
複数の標準指標
複数の標準評価指標を使用する場合は、次のパラメータを使用します。
"eval_metrics_types": [EVALUATION_METRIC_LIST], "eval_metrics_weights": [EVAL_METRICS_WEIGHTS], "aggregation_type": "METRIC_AGGREGATION_TYPE",
次のように置き換えます。
EVALUATION_METRIC_LIST
: 評価指標のリスト。配列にする必要があります。例:"bleu", "summarization_quality"
EVAL_METRICS_WEIGHTS
: 各指標の重み。配列で、EVALUATION_METRIC_LIST
と同じ長さにする必要があります。METRIC_AGGREGATION_TYPE
: 評価指標に使用される集計のタイプ。weighted_sum
、weighted_average
のいずれかにする必要があります。設定しなかった場合、デフォルトでweighted_sum
が使用されます。
複数の標準指標とカスタム指標
1 つのカスタム指標と 1 つ以上の標準指標を組み合わせた複数の評価指標を使用する場合は、次のパラメータを使用します。
"eval_metrics_types": ["custom_metric", EVALUATION_METRIC_LIST], "eval_metrics_weights": [EVAL_METRICS_WEIGHTS], "aggregation_type": "METRIC_AGGREGATION_TYPE", "custom_metric_name": "CUSTOM_METRIC_NAME", "custom_metric_cloud_function_name": "FUNCTION_NAME",
次のように置き換えます。
EVALUATION_METRIC_LIST
: 標準評価指標のリスト。配列にする必要があります。例:"bleu", "summarization_quality"
EVAL_METRICS_WEIGHTS
: 各指標の重み。配列にする必要があります。METRIC_AGGREGATION_TYPE
: 評価指標に使用される集計のタイプ。weighted_sum
、weighted_average
のいずれかにする必要があります。設定しなかった場合、デフォルトでweighted_sum
が使用されます。CUSTOM_METRIC_NAME
:final_score
に対応するキーで定義された指標名。例:custom_accuracy
FUNCTION_NAME
: 前にデプロイした Cloud Run 関数の名前。
OPTIMIZATION_MODE
: 最適化モード。instruction
、demonstration
、instruction_and_demo
のいずれかにする必要があります。SAMPLE_PROMPT_URI
: Cloud Storage バケット内のサンプル プロンプトの URI。例:gs://bucket-name/sample-prompts.jsonl
OUTPUT_URI
: データドリブン オプティマイザーが最適化されたシステム指示や少数ショットのサンプルを書き込む Cloud Storage バケットの URI。例:gs://bucket-name/output-path
必要に応じて、構成ファイルにオプション パラメータを追加することもできます。
オプション パラメータは次の 5 つのカテゴリに分類されます。
- 最適化プロセスのパラメータ。これらのパラメータは、最適化の所要時間や実行する最適化反復処理の数など、全体的な最適化プロセスを制御します。これは、最適化の品質に直接影響します。
- モデル選択と位置情報のパラメータ。これらのパラメータには、データドリブン オプティマイザーが使用するモデルと、それらのモデルを使用するロケーションを指定します。
- レイテンシ(QPS)のパラメータ。これらのパラメータは QPS を制御し、最適化プロセスの速度に影響します。
- その他。プロンプトの構造とコンテンツを制御するその他のパラメータ。
オプション パラメータを表示する
"num_steps": NUM_INST_OPTIMIZATION_STEPS, "num_demo_set_candidates": "NUM_DEMO_OPTIMIZATION_STEPS, "demo_set_size": NUM_DEMO_PER_PROMPT, "target_model_location": "TARGET_MODEL_LOCATION", "source_model": "SOURCE_MODEL", "source_model_location": "SOURCE_MODEL_LOCATION", "target_model_qps": TARGET_MODEL_QPS, "eval_qps": EVAL_QPS, "source_model_qps": SOURCE_MODEL_QPS, "response_mime_type": "RESPONSE_MIME_TYPE", "language": "TARGET_LANGUAGE", "placeholder_to_content": "PLACEHOLDER_TO_CONTENT", "data_limit": DATA_LIMIT
次のように置き換えます。
最適化プロセスのパラメータ:
NUM_INST_OPTIMIZATION_STEPS
: データドリブン オプティマイザーが指示の最適化モードで使用する反復処理の数。この値を増やすと、ランタイムが比例して増加します。10
~20
の整数を指定してください。設定しなかった場合、デフォルトで10
が使用されます。NUM_DEMO_OPTIMIZATION_STEPS
: データドリブン オプティマイザーが評価するデモの数。demonstration
とinstruction_and_demo
の最適化モードで使用されます。2
~サンプル プロンプトの総数 - 1 の整数を指定する必要があります。設定しなかった場合、デフォルトで10
が使用されます。NUM_DEMO_PER_PROMPT
: プロンプトごとに生成されるデモの数。3
~6
の整数を指定してください。設定しなかった場合、デフォルトで3
が使用されます。
モデル選択とロケーションのパラメータ:
TARGET_MODEL_LOCATION
: ターゲット モデルを実行するロケーション。設定しなかった場合、デフォルトでus-central1
が使用されます。SOURCE_MODEL
: システム指示とプロンプトで以前に使用されていた Google モデル。source_model
パラメータが設定されている場合、データドリブン オプティマイザーは、ソースモデルでサンプル プロンプトを実行して、グラウンド トゥルース レスポンスを必要とする評価指標用にグラウンド トゥルース レスポンスを生成します。以前に Google モデルでプロンプトを実行していなかった場合や、目標結果が達成されなかった場合は、代わりにグラウンド トゥルース レスポンスをプロンプトに追加します。詳細については、このドキュメントのプロンプトとシステム指示を作成するをご覧ください。SOURCE_MODEL_LOCATION
: ソースモデルを実行するロケーション。設定しなかった場合、デフォルトでus-central1
が使用されます。
レイテンシ(QPS)のパラメータ。
TARGET_MODEL_QPS
: データドリブン オプティマイザーがターゲット モデルに送信する秒間クエリ数(QPS)。この値を増やすと、ランタイムが直線的に減少します。3.0
以上の浮動小数点数で、ターゲット モデルの QPS 割り当てより小さい値にする必要があります。設定しなかった場合、デフォルトで3.0
が使用されます。EVAL_QPS
: データドリブン オプティマイザーが Gen AI 評価サービスまたは Cloud Run 関数に送信する秒間クエリ数(QPS)。- モデルベースの指標の場合は、
3.0
以上の浮動小数点数にする必要があります。設定しなかった場合、デフォルトで3.0
が使用されます。 - カスタム指標の場合は、
3.0
以上の浮動小数点数にする必要があります。これにより、データドリブン オプティマイザーがカスタム指標の Cloud Run 関数を呼び出す頻度が決まります。
- モデルベースの指標の場合は、
SOURCE_MODEL_QPS
: データドリブン オプティマイザーがソースモデルに送信する秒間クエリ数(QPS)。3.0
以上の浮動小数点数で、ソースモデルの QPS 割り当てより小さい値にする必要があります。設定しなかった場合、デフォルトで3.0
が使用されます。
その他のパラメータ:
RESPONSE_MIME_TYPE
: ターゲット モデルが使用する MIME レスポンス タイプ。text/plain
、application/json
のいずれかにする必要があります。設定しなかった場合、デフォルトでtext/plain
が使用されます。TARGET_LANGUAGE
: システム指示の言語。設定しなかった場合、デフォルトで英語が使用されます。PLACEHOLDER_TO_CONTENT
: システム指示の変数に代わる情報。このフラグに含まれる情報は、データドリブン プロンプト オプティマイザーによって最適化されません。DATA_LIMIT
: 検証に使用されるデータの量。この値に比例してランタイムが増加します。5
~100
の整数を指定してください。設定しなかった場合、デフォルトで100
が使用されます。
プロンプト オプティマイザーを実行する
次のいずれかのオプションを使用して、データドリブン オプティマイザーを実行します。
ノートブック
次の手順で、ノートブックからデータドリブン オプティマイザーを実行します。
Colab Enterprise で Vertex AI プロンプト オプティマイザー ノートブックを開きます。
[Run prompt optimizer] セクションで、play_circle [Run cell] をクリックします。
データドリブン オプティマイザーが実行されます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: Vertex AI プロンプト オプティマイザーを実行するロケーション。
- PROJECT_ID: 実際のプロジェクト ID。
- JOB_NAME: Vertex AI プロンプト オプティマイザー ジョブの名前。
- PATH_TO_CONFIG: Cloud Storage バケット内の構成ファイルの URI。例:
gs://bucket-name/configuration.json
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs
リクエストの本文(JSON):
{ "displayName": "JOB_NAME", "jobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-4" }, "replicaCount": 1, "containerSpec": { "imageUri": "us-docker.pkg.dev/vertex-ai-restricted/builtin-algorithm/apd:preview_v1_0", "args": ["--config=PATH_TO_CONFIG""] } } ] } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content
レスポンスは次のようになります。
SDK
次のコード セクションを Colab または Notebook に追加して、SDK を介してデータドリブン オプティマイザーを実行します。
次のように置き換えます。
- LOCATION: データドリブン オプティマイザーを実行するロケーション。
- PROJECT_ID: プロジェクト ID。
- PROJECT_NUMBER: プロジェクト番号。Cloud コンソールで確認できます。
- PATH_TO_CONFIG: Cloud Storage 内の構成ファイルの URI。例:
gs://bucket-name/configuration.json
# Authenticate
from google.colab import auth
auth.authenticate_user(project_id=PROJECT_ID)
# Set the Service Account
SERVICE_ACCOUNT = f"{PROJECT_NUMBER}-compute@developer.gserviceaccount.com"
# Import Vertex AI SDK and Setup
import vertexai
vertexai.init(project=PROJECT_ID, location=LOCATION)
#Create the Vertex AI Client
client = vertexai.Client(project=PROJECT_ID, location=LOCATION)
# Setup the job dictionary
vapo_config = {
'config_path': PATH_TO_CONFIG,
'service_account': SERVICE_ACCOUNT,
'wait_for_completion': True,
}
#Start the Vertex AI Prompt Optimizer
client = client.prompt_optimizer.optimize(method="vapo", config=vapo_config)
最適化が完了したら、構成で指定された出力場所にある出力アーティファクトを調べます。
結果を分析してイテレーションする
データドリブン オプティマイザーを実行したら、次のいずれかの方法でジョブの進行状況を確認します。
ノートブック
ノートブックでデータドリブン オプティマイザーの結果を表示するには、次の操作を行います。
[Inspect the results] セクションで、次の操作を行います。
[RESULT_PATH] フィールドに、データドリブン オプティマイザーの結果の書き込み先として構成した Cloud Storage バケットの URI を追加します。例:
gs://bucket-name/output-path
[play_circle Run cell] をクリックします。
コンソール
Google Cloud コンソールの Vertex AI セクションで、[トレーニング パイプライン] ページに移動します。
[カスタムジョブ] タブをクリックします。データドリブン オプティマイザーのカスタム トレーニング ジョブが、ステータスとともにリストに表示されます。
ジョブが完了したら、次の手順で最適化を確認します。
Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
Cloud Storage バケットの名前をクリックします。
プロンプトの評価に使用した最適化モード(
instruction
またはdemonstration
)と同じ名前のフォルダに移動します。instruction_and_demo
モードを使用した場合は、両方のフォルダが表示されます。instruction
フォルダにはシステム指示の最適化の結果が含まれます。demonstration
フォルダにはdemonstration
の最適化の結果と最適化されたシステム指示が含まれます。このフォルダには次のファイルが含まれています。
config.json
: Vertex AI プロンプト オプティマイザーが使用した完全な構成。templates.json
: データドリブン オプティマイザーが生成した各システム指示のセットや少数ショット サンプルと、その評価スコア。eval_results.json
: 生成されたシステム指示または少数ショット例の各セットの各サンプル プロンプトに対するターゲット モデルのレスポンスとその評価スコア。optimized_results.json
: パフォーマンスが最も優れているシステム指示や少数ショットの例とその評価スコア。
最適化されたシステム指示を表示するには、
optimized_results.json
ファイルを表示します。
ベスト プラクティス
プレビュー モデルは
global
リージョンでのみサポートされ、Vertex カスタムジョブはglobal
をリージョンとしてサポートしていません。したがって、VAPO を使用してプレビュー モデルをターゲット モデルとして最適化しないでください。一般提供モデルの場合、ユーザーは
global
の代わりにus-central1
やeurope-central2
などのリージョン固有のロケーションを選択して、データ所在地要件に準拠できます。
次のステップ
- Vertex AI プロンプト オプティマイザー SDK ノートブックを試す。
- 責任ある AI のベスト プラクティスと Vertex AI の安全フィルタについて学習する。
- プロンプト戦略の詳細を確認する。
- プロンプト ギャラリーでプロンプトの例を確認する。