Ce document explique comment utiliser l'optimiseur de requêtes Vertex AI pour optimiser automatiquement les performances des requêtes en améliorant les instructions système d'un ensemble de requêtes.
L'optimiseur de requêtes Vertex AI peut vous aider à améliorer vos requêtes rapidement à grande échelle, sans réécrire manuellement les instructions système ni les requêtes individuelles. Cela est particulièrement utile lorsque vous souhaitez utiliser des instructions et des invites système écrites pour un modèle avec un autre modèle.
L'optimiseur d'invites Vertex AI permet d'améliorer les invites en évaluant la réponse du modèle à des exemples d'invites par rapport aux métriques d'évaluation spécifiées. Pour utiliser l'optimiseur d'invites Vertex AI, vous devez disposer des éléments suivants:
- Ensemble d'exemples de requêtes
- Instructions système utilisées par tous vos exemples de requêtes
- Un modèle d'invite qui fait référence à vos exemples d'invites
Exemple d'optimisation de requêtes
Par exemple, pour optimiser les instructions système d'un ensemble d'invites qui font référence à des informations contextuelles pour répondre à des questions sur la cuisine, vous pouvez utiliser l'optimiseur d'invites Vertex AI. Pour effectuer cette tâche, vous devez préparer des entrées semblables aux suivantes:
Instructions système
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.
Modèle d'invite
Question: {input_question} Facts: {input_context}
Exemples de requêtes
input_question |
input_context |
---|---|
Quelles sont les techniques de cuisson de la viande rouge et du porc qui maximisent la saveur et la tendreté tout en minimisant la formation de composés malsains ? | Pour des raisons de sécurité, la viande rouge et le porc doivent être cuits à une température interne de 63 °C. Marinader de la viande dans des ingrédients acides comme du jus de citron ou de l' vinaigre peut l'attendrir en décomposant les fibres musculaires dures. Les méthodes de cuisson à haute température, comme le grillage et la saisie, peuvent créer un brunissement et une caramélisation délicieux, mais il est important d'éviter la carbonisation, qui peut produire des composés nocifs. |
Quelles sont les façons créatives d'ajouter de la saveur et de la nutrition aux shakes protéinés sans utiliser de sucres ajoutés ni d'ingrédients artificiels ? | Ajouter des légumes à feuilles comme des épinards ou du chou frisé est un excellent moyen d'augmenter la valeur nutritionnelle de votre smoothie sans en modifier radicalement la saveur. Utiliser du lait d'amande non sucré ou de l'eau de coco au lieu du lait ordinaire peut ajouter une touche de douceur et une dose de graisses saines ou d'électrolytes, respectivement. Saviez-vous que mixer trop votre smoothie peut le faire chauffer ? Pour que votre préparation reste fraîche et rafraîchissante, mixez pendant de courtes périodes et faites une pause si nécessaire. |
Fonctionnement de l'optimisation
Après avoir préparé vos entrées, vous choisissez un mode d'optimisation, une métrique d'évaluation et un modèle cible.
- Mode d'optimisation: indique si l'optimiseur de requêtes Vertex AI optimise les instructions système, sélectionne des exemples de requêtes à ajouter aux instructions système en tant qu'exemples de prises de vue limitées ou les deux.
- Métrique d'évaluation: métrique utilisée par l'optimiseur de requêtes Vertex AI pour optimiser les instructions système et/ou sélectionner des exemples de requêtes.
- Modèle cible: modèle Google avec lequel l'optimiseur de requêtes Vertex AI optimise les instructions système et/ou sélectionne des exemples de requêtes.
Lorsque vous exécutez l'optimiseur de requêtes Vertex AI, il optimise les instructions système en fonction de vos sélections en exécutant une tâche d'entraînement personnalisée dans laquelle il évalue de manière itérative vos exemples de requêtes et réécrit vos instructions système pour trouver la version qui produit le meilleur score d'évaluation pour le modèle cible.
À la fin de la tâche, l'optimiseur d'invite Vertex AI génère les instructions système optimisées avec leur score d'évaluation.
Instructions système optimisées
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.
Modèles compatibles
Vous pouvez optimiser les instructions système pour les utiliser avec les modèles suivants:
Métriques d'évaluation acceptées
L'optimiseur de requête Vertex AI est compatible avec les métriques d'évaluation personnalisées, ainsi qu'avec les métriques d'évaluation suivantes:
Type de métrique | Cas d'utilisation | Métrique | Description |
---|---|---|---|
Basé sur un modèle | Synthèse | summarization_quality |
Décrit la capacité du modèle à répondre aux questions en fonction d'un corps de texte à référencer. |
Systèmes de questions-réponses | question_answering_correctness * |
Décrit la capacité du modèle à répondre correctement à une question. | |
question_answering_quality |
Décrit la capacité du modèle à répondre aux questions en fonction d'un corps de texte à référencer. | ||
Cohérence | coherence |
Décrit la capacité du modèle à fournir une réponse cohérente et mesure la fluidité logique et la pertinence du texte généré. | |
Sécurité | safety |
Décrit le niveau de sécurité du modèle, c'est-à-dire si la réponse contient du texte non sécurisé. | |
Niveau de langage | fluency |
Décrit la maîtrise du langage du modèle. | |
Ancrage | groundedness |
Décrit la capacité du modèle à fournir ou à référencer des informations incluses uniquement dans le texte d'entrée. | |
Basée sur le calcul | Utilisation de l'outil et appel de fonction | tool_call_valid * |
Décrit la capacité du modèle à prédire un appel d'outil valide. |
tool_name_match * |
Décrit la capacité du modèle à prédire un appel d'outil avec le nom d'outil correct. Seul le premier appel d'outil est inspecté. | ||
tool_parameter_key_match * |
Décrit la capacité du modèle à prédire un appel d'outil avec les noms de paramètres corrects. | ||
tool_parameter_kv_match * |
Décrit la capacité du modèle à prédire un appel d'outil avec les noms de paramètres et les clé-valeurs corrects. | ||
Génération de textes d'ordre général | bleu * |
Contient le résultat d'un algorithme permettant d'évaluer la qualité de la prédiction, qui a été traduite d'un langage naturel à un autre. La qualité de la prédiction est considérée comme la correspondance entre un paramètre de prédiction et son paramètre de référence. | |
exact_match * |
Détermine si un paramètre de prédiction correspond exactement à un paramètre de référence. | ||
rouge_1 * |
Permet de comparer le paramètre de prédiction fourni à un paramètre de référence. | ||
rouge_2 * |
|||
rouge_l * |
|||
rouge_l_sum * |
* Si vous souhaitez optimiser vos requêtes à l'aide des évaluations question_answering_correctness
ou basées sur le calcul, vous devez effectuer l'une des opérations suivantes:
- Ajoutez une variable qui représente la réponse de vérité terrain pour vos requêtes à votre modèle de requête.
- Si vous ne disposez pas de réponses de vérité terrain pour vos requêtes, mais que vous les avez déjà utilisées avec un modèle Google et obtenu vos résultats ciblés, vous pouvez ajouter le paramètre
source_model
à votre configuration au lieu d'ajouter des réponses de vérité terrain. Lorsque le paramètresource_model
est défini, Vertex AI exécute vos exemples d'invites sur le modèle source pour générer les réponses de vérité terrain à votre place.
Avant de commencer
-
Pour vous assurer que le compte de service Compute Engine par défaut dispose des autorisations nécessaires pour optimiser les requêtes, demandez à votre administrateur d'accorder au compte de service Compute Engine par défaut les rôles IAM suivants sur le projet:
-
Utilisateur Vertex AI (
roles/aiplatform.user
) -
Administrateur des objets de l'espace de stockage (
roles/storage.objectAdmin
) -
Lecteur Artifact Registry (
roles/artifactregistry.reader
)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Votre administrateur peut également attribuer au compte de service par défaut Compute Engine les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
-
Utilisateur Vertex AI (
Le tableau suivant inclut les modèles qui nécessitent un quota de requêtes par minute (RPM) et le RPM recommandé pour chaque modèle. Si votre quota de RPM est inférieur à celui recommandé, l'optimiseur d'invite Vertex AI peut s'exécuter plus lentement que prévu. Si vous configurez l'optimiseur de requêtes Vertex AI avec un RPM supérieur au RPM auquel vous avez accès, la tâche échouera. Si vous ne disposez pas d'un quota suffisant pour exécuter l'optimiseur de requêtes Vertex AI, vous pouvez demander une augmentation de quota.
Modèle Description Quota de RPM minimal Quota de RPM recommandé Modèle cible Modèle pour lequel vous souhaitez optimiser les requêtes. 200 RPM Plus de 500 RPM gemini-1.5-pro-001
Modèle utilisé par l'optimiseur de requêtes Vertex AI pour réécrire et évaluer les requêtes. 200 RPM Plus de 500 RPM
Optimiser les requêtes
Vous pouvez optimiser les requêtes en exécutant le notebook de l'optimiseur de requêtes Vertex AI ou en utilisant l'API Vertex AI. Pour optimiser les requêtes, choisissez la méthode que vous souhaitez utiliser pour exécuter l'optimiseur de requêtes Vertex AI, puis suivez les étapes décrites en détail dans les sections suivantes:
- Créer un modèle de requêtes et des instructions système
- Préparer des exemples de requêtes
- Choisir une métrique d'évaluation
- Créer une configuration
- Exécuter la tâche d'optimisation des requêtes
- Analyser les résultats et itérer
Créer un modèle d'invite et des instructions système
Les modèles de requêtes définissent le format de toutes vos requêtes à l'aide de variables remplaçables. Lorsque vous utilisez un modèle de requête pour optimiser les requêtes, les variables sont remplacées par les données de l'ensemble de données de requête.
Les variables de modèle de requêtes doivent respecter les conditions suivantes :
- Les variables doivent être placées entre accolades.
- Les noms de variables ne doivent pas contenir d'espaces
Les variables qui représentent des entrées multimodales doivent inclure la chaîne
MIME_TYPE
après la variable:@@@MIME_TYPE
Remplacez
MIME_TYPE
par un type MIME image, vidéo, audio ou document compatible avec le modèle cible.
Créez un modèle de requêtes et des instructions système à l'aide de l'une des méthodes suivantes:
Notebook
Si vous souhaitez exécuter l'optimiseur de requêtes Vertex AI via le notebook, créez des instructions système et un modèle de requête en procédant comme suit:
Dans Colab Enterprise, ouvrez le notebook de l'optimiseur d'invite Vertex AI.
Dans la section Créer un modèle de requêtes et des instructions système, procédez comme suit:
Dans le champ SYSTEM_INSTRUCTION, saisissez vos instructions système. Exemple :
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.
Dans le champ PROMPT_TEMPLATE, saisissez votre modèle de requête. Exemple :
Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
Si vous souhaitez optimiser vos requêtes à l'aide des évaluations
question_answering_correctness
ou basées sur le calcul, vous devez effectuer l'une des opérations suivantes:
Ajoutez la variable
{target}
au modèle de requête pour représenter la réponse de vérité terrain de la requête. Exemple :Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
Si vous ne disposez pas de réponses de référence pour vos invites, mais que vous les avez déjà utilisées avec un modèle Google et que vous avez obtenu les résultats ciblés, vous pouvez ajouter le paramètre
source_model
à votre configuration au lieu d'ajouter des réponses de référence. Lorsque le paramètresource_model
est défini, l'optimiseur de requêtes Vertex AI exécute vos exemples de requêtes sur le modèle source pour générer les réponses de vérité terrain à votre place.
SDK
Si vous souhaitez exécuter l'optimiseur de requêtes Vertex AI via le SDK sans utiliser le notebook, créez des fichiers texte pour votre modèle de requête et les instructions système en procédant comme suit:
Créez un fichier texte pour vos instructions système.
Dans le fichier texte, définissez vos instructions système. Exemple :
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.
Créez un fichier texte pour votre modèle de requête.
Dans le fichier texte, définissez un modèle de requête qui inclut une ou plusieurs variables. Exemple :
Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
Si vous souhaitez optimiser vos requêtes à l'aide des évaluations
question_answering_correctness
ou basées sur le calcul, vous devez effectuer l'une des opérations suivantes:Ajoutez la variable
{target}
au modèle de requête pour représenter la réponse de vérité terrain de la requête. Exemple :Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
Si vous ne disposez pas de réponses de référence pour vos invites, mais que vous les avez déjà utilisées avec un modèle Google et que vous avez obtenu les résultats ciblés, vous pouvez ajouter le paramètre
source_model
à votre configuration au lieu d'ajouter des réponses de référence. Lorsque le paramètresource_model
est défini, l'optimiseur de requêtes Vertex AI exécute vos exemples de requêtes sur le modèle source pour générer les réponses de vérité terrain à votre place.
Préparer des exemples de requêtes
Pour obtenir les meilleurs résultats de l'optimiseur de requêtes Vertex AI, utilisez entre 50 et 100 exemples de requêtes.
- L'outil peut être efficace avec seulement cinq exemples d'invites.
- Les meilleurs exemples incluent des exemples où le modèle cible présente de mauvaises performances.
Les exemples de requêtes contiennent les données qui remplacent les variables dans le modèle de requêtes. Vous pouvez utiliser un fichier JSONL ou CSV pour stocker vos exemples d'invites.
Fichier JSONL
- Créez un fichier JSONL.
Dans le fichier JSONL, ajoutez les données de requête qui remplacent chaque variable. Exemple :
{"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"}
Fichier CSV
- Créez un fichier CSV.
- Dans la première ligne, ajoutez les variables de votre modèle de requête.
- Dans les lignes suivantes, ajoutez les données d'exemple qui remplacent chaque variable.
- Importez le fichier CSV dans un bucket Cloud Storage.
Choisir une métrique d'évaluation
L'optimiseur de requêtes Vertex AI utilise des métriques d'évaluation pour optimiser les instructions système et sélectionner des exemples de requêtes.
Choisissez l'une des métriques d'évaluation compatibles ou définissez votre propre métrique d'évaluation personnalisée. Les métriques personnalisées sont utiles lorsque les métriques standards ne conviennent pas à votre application. Vous pouvez optimiser les requêtes à l'aide de plusieurs métriques.
Toutefois, l'optimiseur de requêtes Vertex AI n'accepte qu'une seule métrique personnalisée à la fois. Par exemple, vous pouvez exécuter l'optimiseur de requêtes Vertex AI à l'aide d'une métrique personnalisée et de la métrique bleu
, ou avec les métriques bleu
, rouge
et summarization_quality
. Toutefois, vous ne pouvez pas exécuter l'optimiseur de requêtes Vertex AI avec plusieurs métriques personnalisées à la fois.
Pour créer une métrique personnalisée, procédez comme suit:
Créez un fichier texte nommé
requirements.txt
.Dans le fichier
requirements.txt
, définissez les bibliothèques requises pour la fonction de métrique d'évaluation personnalisée. Toutes les fonctions nécessitent le packagefunctions-framework
.Par exemple, le fichier
requirements.txt
d'une métrique personnalisée qui calcule ROUGE-L ressemble à ceci:functions-framework==3.* rouge-score
Créez un fichier Python nommé
main.py
.Dans le fichier
main.py
, écrivez votre fonction d'évaluation personnalisée. La fonction doit accepter les éléments suivants:- Requêtes POST HTTP
- Entrée JSON contenant le
response
, qui est la sortie du LLM, et letarget
, qui est la réponse de vérité terrain pour l'invite.
Par exemple, le fichier
main.py
d'une métrique personnalisée qui calcule ROUGE-L se présente comme suit: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 'target' from the request payload. 'response' represents the model's response, while 'target' represents the ground truth response.""" response = request_json['response'] reference = request_json['target'] # 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', })
Déployez votre fonction d'évaluation personnalisée en tant que fonction Cloud Run en exécutant la commande
gcloud functions deploy
: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
Remplacez les éléments suivants :
FUNCTION_NAME
: nom de la métrique d'évaluation personnalisée.PROJECT_ID
: ID de votre projet.REGION
: région dans laquelle vous souhaitez déployer la fonction.
Créer une configuration
La configuration de l'optimiseur de requêtes Vertex AI spécifie les paramètres que vous souhaitez définir pour votre tâche d'optimisation de requêtes, y compris les suivants:
- Mode d'optimisation: indique si l'optimiseur de requêtes Vertex AI optimise les instructions système, sélectionne des exemples de requêtes à ajouter aux instructions système en tant qu'exemples de prises de vue limitées ou les deux.
- Métrique d'évaluation: métrique utilisée par l'optimiseur de requêtes Vertex AI pour optimiser les instructions système et/ou sélectionner des exemples de requêtes.
- Modèle cible: modèle Google avec lequel l'optimiseur de requêtes Vertex AI optimise les instructions système et/ou sélectionne des exemples de requêtes.
Créez une configuration à l'aide de l'une des options suivantes:
Notebook
Si vous souhaitez exécuter l'optimiseur d'invite Vertex AI via le notebook, créez une configuration en procédant comme suit:
Dans Colab Enterprise, ouvrez le notebook de l'optimiseur d'invite Vertex AI.
Dans la section Configurer les paramètres du projet, procédez comme suit:
- Dans le champ PROJECT_ID, saisissez l'ID de votre projet.
- Dans le champ LOCATION (EMPLACEMENT), saisissez l'emplacement où vous souhaitez exécuter l'optimiseur de requêtes Vertex AI.
- Dans le champ OUTPUT_PATH, saisissez l'URI du bucket Cloud Storage dans lequel vous souhaitez que l'optimiseur d'invites Vertex AI écrive les instructions système optimisées et/ou les exemples de quelques prises.
Exemple :
gs://bucket-name/output-path
- Dans le champ INPUT_PATH, saisissez l'URI des exemples d'invites dans votre bucket Cloud Storage. Exemple :
gs://bucket-name/sample-prompts.jsonl
.
Dans la section Configurer les paramètres d'optimisation, procédez comme suit:
- Dans le champ TARGET_MODEL, saisissez le modèle avec lequel vous souhaitez optimiser les requêtes.
- Dans OPTIMIZATION_MODE, saisissez le mode d'optimisation que vous souhaitez utiliser. Doit être défini sur
instruction
,demonstration
ouinstruction_and_demo
. - Dans le champ EVAL_METRIC, saisissez la métrique d'évaluation pour laquelle vous souhaitez optimiser vos requêtes.
- Facultatif: Dans le champ SOURCE_MODEL, saisissez le modèle Google avec lequel les instructions et les invites du système étaient utilisées précédemment. Lorsque le paramètre
source_model
est défini, l'optimiseur de requêtes Vertex AI exécute vos exemples de requêtes sur le modèle source pour générer les réponses de vérité terrain à votre place, pour les métriques d'évaluation qui nécessitent des réponses de vérité terrain. Si vous n'avez pas exécuté vos requêtes avec un modèle Google auparavant ou si vous n'avez pas atteint vos résultats cibles, ajoutez plutôt des réponses de référence à votre requête. Pour en savoir plus, consultez la section Créer une invite et des instructions système de ce document.
Facultatif: Dans la section Configurer les paramètres d'optimisation avancés, vous pouvez également ajouter l'un des paramètres facultatifs à votre configuration.
- Dans le champ NUM_INST_OPTIMIZATION_STEPS, saisissez le nombre d'itérations que l'optimiseur de requêtes Vertex AI utilise en mode optimisation des instructions. Le temps d'exécution augmente linéairement à mesure que vous augmentez cette valeur. Doit être un nombre entier compris entre
10
et20
. Si cette valeur n'est pas définie, la valeur par défaut est10
. - Dans le champ NUM_TEMPLATES_PER_STEP, saisissez le nombre d'instructions système que l'optimiseur de requêtes Vertex AI génère et évalue. Utilisé avec le mode d'optimisation
instruction
etinstruction_and_demo
. Doit être un nombre entier compris entre1
et4
. Si cette valeur n'est pas définie, la valeur par défaut est2
. - Dans le champ NUM_DEMO_OPTIMIZATION_STEPS, saisissez le nombre de démonstrations que l'optimiseur de requêtes Vertex AI évalue.
Utilisé avec le mode d'optimisation
demonstration
etinstruction_and_demo
. Doit être un nombre entier compris entre10
et30
. Si cette valeur n'est pas définie, la valeur par défaut est10
. - Dans le champ NUM_DEMO_PER_PROMPT, saisissez le nombre de démonstrations générées par requête. Doit être un nombre entier compris entre
3
et6
. Si cette valeur n'est pas définie, la valeur par défaut est3
. - Dans le champ TARGET_MODEL_QPS, saisissez le nombre de requêtes par seconde (RPS) que l'optimiseur d'invites Vertex AI envoie au modèle cible.
Le temps d'exécution diminue linéairement à mesure que vous augmentez cette valeur. Doit être un nombre à virgule flottante supérieur ou égal à
3.0
, mais inférieur au quota de RPS que vous avez défini pour le modèle cible. Si cette valeur n'est pas définie, la valeur par défaut est3.0
. - Dans le champ SOURCE_MODEL_QPS, saisissez le nombre de requêtes par seconde (RPS) que l'optimiseur d'invites Vertex AI envoie au modèle source. Doit être un nombre à virgule flottante supérieur ou égal à
3.0
, mais inférieur au quota de RPS que vous disposez sur le modèle source. Si cette valeur n'est pas définie, la valeur par défaut est3.0
. - Dans le champ EVAL_QPS, saisissez le nombre de requêtes par seconde (RPS) que l'optimiseur d'invite Vertex AI envoie au modèle d'évaluation,
gemini-1.5-pro
.- Pour les métriques basées sur un modèle, doit être un nombre à virgule flottante supérieur ou égal à
3.0
, mais inférieur au quota dont vous disposez pourgemini-1.5-pro
. Si cette valeur n'est pas définie, la valeur par défaut est3.0
. - Pour les métriques personnalisées, doit être une valeur flottante supérieure ou égale à
3.0
. Cela détermine la fréquence à laquelle l'optimiseur d'invite Vertex AI appelle vos fonctions Cloud Run de métrique personnalisée.
- Pour les métriques basées sur un modèle, doit être un nombre à virgule flottante supérieur ou égal à
- Si vous souhaitez utiliser plusieurs métriques d'évaluation, procédez comme suit :
- Dans le champ EVAL_METRIC_1, saisissez une métrique d'évaluation que vous souhaitez utiliser.
- Dans le champ EVAL_METRIC_1_WEIGHT, saisissez la pondération que vous souhaitez que l'optimiseur d'invite Vertex AI utilise lors de l'exécution de l'optimisation.
- Dans le champ EVAL_METRIC_2, saisissez une métrique d'évaluation que vous souhaitez utiliser.
- Dans le champ EVAL_METRIC_2_WEIGHT, saisissez le poids que vous souhaitez que l'optimiseur d'invite Vertex AI utilise lors de l'optimisation.
- Dans le champ EVAL_METRIC_3, saisissez éventuellement une métrique d'évaluation que vous souhaitez utiliser.
- Dans le champ EVAL_METRIC_3_WEIGHT, saisissez éventuellement
- Dans le champ METRIC_AGGREGATION_TYPE, saisissez le poids que vous souhaitez que l'optimiseur de requête Vertex AI utilise lors de l'exécution de l'optimisation.
- Dans le champ PLACEHOLDER_TO_VALUE, saisissez les informations qui remplacent les variables dans les instructions système. Les informations incluses dans cet indicateur ne sont pas optimisées par l'optimiseur d'invite Vertex AI.
- Dans le champ RESPONSE_MIME_TYPE, saisissez le type de réponse MIME utilisé par le modèle cible. Doit être défini sur
text/plain
ouapplication/json
. Si cette valeur n'est pas définie, la valeur par défaut esttext/plain
. - Dans le champ TARGET_LANGUAGE, saisissez la langue des instructions système. Si cette valeur n'est pas définie, la valeur par défaut est l'anglais.
SDK
Si vous souhaitez exécuter l'optimiseur de requêtes Vertex AI via le SDK, créez un fichier JSON avec les paramètres que vous souhaitez utiliser pour optimiser les requêtes en procédant comme suit:
Créez un fichier JSON avec les paramètres que vous souhaitez utiliser pour optimiser vos requêtes. Chaque fichier de configuration nécessite les paramètres suivants:
{ "project": "PROJECT_ID", "system_instruction_path": "SYSTEM_INSTRUCTION_PATH", "prompt_template_path": "PROMPT_TEMPLATE_PATH", "target_model": "TARGET_MODEL", EVALUATION_METRIC_PARAMETERS, "optimization_mode": "OPTIMIZATION_MODE", "input_data_path": "SAMPLE_PROMPT_URI", "output_path": "OUTPUT_URI" }
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.SYSTEM_INSTRUCTION_PATH
: URI des instructions système dans votre bucket Cloud Storage. Exemple :gs://bucket-name/system-instruction.txt
.PROMPT_TEMPLATE
: URI du modèle d'invite dans votre bucket Cloud Storage. Par exemple,gs://bucket-name/prompt-template.txt
.TARGET_MODEL
: modèle avec lequel vous souhaitez optimiser les requêtes.EVALUATION_METRIC_PARAMETERS
: le ou les paramètres que vous spécifiez dépendent du nombre de métriques d'évaluation que vous utilisez et si vos métriques sont standards ou personnalisées:Métrique standard unique
Si vous utilisez une seule métrique d'évaluation compatible, utilisez le paramètre suivant:
"eval_metric": "EVALUATION_METRIC",
Remplacez
EVALUATION_METRIC
par la métrique d'évaluation pour laquelle vous souhaitez optimiser vos requêtes.Métrique personnalisée unique
Si vous n'utilisez qu'une seule métrique d'évaluation personnalisée, utilisez les paramètres suivants:
"eval_metric": "custom_metric", "custom_metric_name": "CUSTOM_METRIC_NAME", "custom_metric_cloud_function_name": "FUNCTION_NAME",
Remplacez les éléments suivants :
CUSTOM_METRIC_NAME
: nom de la métrique, tel que défini par la clé correspondant àfinal_score
. Exemple :custom_accuracy
.FUNCTION_NAME
: nom de la fonction Cloud Run que vous avez précédemment déployée.
Plusieurs métriques standards
Si vous utilisez plusieurs métriques d'évaluation compatibles, utilisez les paramètres suivants:
"eval_metrics_types": [EVALUATION_METRIC_LIST], "eval_metrics_weights": [EVAL_METRICS_WEIGHTS], "aggregation_type": "METRIC_AGGREGATION_TYPE",
Remplacez les éléments suivants :
EVALUATION_METRIC_LIST
: liste des métriques d'évaluation. Doit être un tableau. Exemple :"bleu", "summarization_quality"
.EVAL_METRICS_WEIGHTS
: pondération de chaque métrique. Doit être un tableau.METRIC_AGGREGATION_TYPE
: type d'agrégation utilisé pour les métriques d'évaluation. Doit être défini surweighted_sum
ouweighted_average
. Si cette valeur n'est pas définie, la valeur par défaut estweighted_sum
.
Plusieurs métriques standards et personnalisées
Si vous utilisez plusieurs métriques d'évaluation qui incluent un mélange de métrique personnalisée et de métriques standards, utilisez les paramètres suivants:
"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",
Remplacez les éléments suivants :
EVALUATION_METRIC_LIST
: liste des métriques d'évaluation standards. Doit être un tableau. Exemple :"bleu", "summarization_quality"
.EVAL_METRICS_WEIGHTS
: pondération de chaque métrique. Doit être un tableau.METRIC_AGGREGATION_TYPE
: type d'agrégation utilisé pour les métriques d'évaluation. Doit être défini surweighted_sum
ouweighted_average
. Si cette valeur n'est pas définie, la valeur par défaut estweighted_sum
.CUSTOM_METRIC_NAME
: nom de la métrique, tel que défini par la clé correspondant àfinal_score
. Par exemple,custom_accuracy
.FUNCTION_NAME
: nom de la fonction Cloud Run que vous avez précédemment déployée.
OPTIMIZATION_MODE
: mode d'optimisation. Doit être défini surinstruction
,demonstration
ouinstruction_and_demo
.SAMPLE_PROMPT_URI
: URI des requêtes d'exemple dans votre bucket Cloud Storage. Exemple :gs://bucket-name/sample-prompts.jsonl
.OUTPUT_URI
: URI du bucket Cloud Storage dans lequel vous souhaitez que l'optimiseur d'invite Vertex AI écrive les instructions système optimisées et/ou les exemples à quelques clichés. Exemple :gs://bucket-name/output-path
Vous pouvez également ajouter l'un des paramètres facultatifs à votre fichier de configuration.
Les paramètres facultatifs sont répartis en cinq catégories:
- Paramètres du processus d'optimisation. Ces paramètres contrôlent le processus d'optimisation global, y compris sa durée et le nombre d'itérations d'optimisation qu'il exécute, ce qui a un impact direct sur la qualité des optimisations.
- Sélection du modèle et paramètres de localisation Ces paramètres spécifient les modèles utilisés par l'optimiseur de requêtes Vertex AI et les emplacements où il les utilise.
- Paramètres de latence (RPS). Ces paramètres contrôlent le débit de requêtes par seconde, ce qui a un impact sur la vitesse du processus d'optimisation.
- Autre Autres paramètres qui contrôlent la structure et le contenu des requêtes.
Afficher les paramètres facultatifs
"num_steps": NUM_INST_OPTIMIZATION_STEPS, "num_template_eval_per_step": NUM_TEMPLATES_PER_STEP, "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
Remplacez les éléments suivants :
Paramètres du processus d'optimisation:
NUM_INST_OPTIMIZATION_STEPS
: nombre d'itérations utilisées par l'optimiseur de requêtes Vertex AI en mode d'optimisation des instructions. Le temps d'exécution augmente linéairement à mesure que vous augmentez cette valeur. Doit être un nombre entier compris entre10
et20
. Si cette valeur n'est pas définie, la valeur par défaut est10
.NUM_TEMPLATES_PER_STEP
: nombre d'instructions système générées et évaluées par l'optimiseur d'invite Vertex AI. Utilisé avec le mode d'optimisationinstruction
etinstruction_and_demo
. Doit être un nombre entier compris entre1
et4
. Si cette valeur n'est pas définie, la valeur par défaut est2
.NUM_DEMO_OPTIMIZATION_STEPS
: nombre de démonstrations évaluées par l'optimiseur d'invite Vertex AI. Utilisé avec le mode d'optimisationdemonstration
etinstruction_and_demo
. Doit être un nombre entier compris entre10
et30
. Si cette valeur n'est pas définie, la valeur par défaut est10
.NUM_DEMO_PER_PROMPT
: nombre de démonstrations générées par requête. Doit être un nombre entier compris entre3
et6
. Si cette valeur n'est pas définie, la valeur par défaut est3
.
Sélection de modèle et paramètres d'emplacement:
TARGET_MODEL_LOCATION
: emplacement dans lequel vous souhaitez exécuter le modèle cible. Si cette valeur n'est pas définie, la valeur par défaut estus-central1
.SOURCE_MODEL
: modèle Google avec lequel les instructions et les invites du système étaient auparavant utilisées. Lorsque le paramètresource_model
est défini, Vertex AI exécute vos exemples de requêtes sur le modèle source pour générer les réponses de vérité terrain à votre place, pour les métriques d'évaluation qui nécessitent des réponses de vérité terrain. Si vous n'avez pas exécuté vos requêtes avec un modèle Google auparavant ou si vous n'avez pas atteint vos résultats cibles, ajoutez plutôt des réponses de vérité terrain à votre requête. Pour en savoir plus, consultez la section Créer une invite et des instructions système de ce document.SOURCE_MODEL_LOCATION
: emplacement dans lequel vous souhaitez exécuter le modèle source. Si cette valeur n'est pas définie, la valeur par défaut estus-central1
.
Paramètres de latence (RPS) :
TARGET_MODEL_QPS
: requêtes par seconde (QPS) que l'optimiseur de requêtes Vertex AI envoie au modèle cible. Le temps d'exécution diminue linéairement à mesure que vous augmentez cette valeur. Doit être un nombre à virgule flottante supérieur ou égal à3.0
, mais inférieur au quota de requêtes par seconde que vous disposez pour le modèle cible. Si cette valeur n'est pas définie, la valeur par défaut est3.0
.EVAL_QPS
: requêtes par seconde (QPS) que l'optimiseur d'invite Vertex AI envoie au modèle d'évaluation,gemini-1.5-pro
.- Pour les métriques basées sur un modèle, doit être un nombre à virgule flottante supérieur ou égal à
3.0
, mais inférieur au quota dont vous disposez pourgemini-1.5-pro
. Si cette valeur n'est pas définie, la valeur par défaut est3.0
. - Pour les métriques personnalisées, doit être une valeur flottante supérieure ou égale à
3.0
. Il détermine la fréquence à laquelle l'optimiseur d'invite Vertex AI appelle vos fonctions Cloud Run de métrique personnalisée.
- Pour les métriques basées sur un modèle, doit être un nombre à virgule flottante supérieur ou égal à
SOURCE_MODEL_QPS
: requêtes par seconde (QPS) que l'optimiseur de requêtes Vertex AI envoie au modèle source. Doit être un nombre à virgule flottante supérieur ou égal à3.0
, mais inférieur au quota de RPS que vous disposez sur le modèle source. Si cette valeur n'est pas définie, la valeur par défaut est3.0
.
Autres paramètres:
RESPONSE_MIME_TYPE
: type de réponse MIME utilisé par le modèle cible. Doit être défini surtext/plain
ouapplication/json
. Si cette valeur n'est pas définie, la valeur par défaut esttext/plain
.TARGET_LANGUAGE
: langue des instructions système. Si cette valeur n'est pas définie, la valeur par défaut est l'anglais.PLACEHOLDER_TO_CONTENT
: informations qui remplacent les variables dans les instructions système. Les informations incluses dans cet indicateur ne sont pas optimisées par l'optimiseur d'invite Vertex AI.DATA_LIMIT
: quantité de données utilisées pour la validation. Le temps d'exécution augmente linéairement avec cette valeur. Doit être un entier compris entre5
et100
. Si cette valeur n'est pas définie, la valeur par défaut est100
.
Exécuter l'optimiseur de requêtes
Exécutez l'optimiseur de requêtes Vertex AI à l'aide de l'une des options suivantes:
Notebook
Exécutez l'optimiseur de requêtes Vertex AI via le notebook en procédant comme suit:
Dans Colab Enterprise, ouvrez le notebook de l'optimiseur de requêtes Vertex AI.
Dans la section Optimiseur d'invite d'exécution, cliquez sur play_circle Exécuter la cellule.
L'optimiseur de requêtes Vertex AI s'exécute.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION: emplacement où vous souhaitez exécuter l'optimiseur d'invite Vertex AI.
- PROJECT_ID : l'ID de votre projet.
- JOB_NAME: nom du job d'optimisation des requêtes Vertex AI.
- PATH_TO_CONFIG: URI du fichier de configuration dans votre bucket Cloud Storage.
Exemple :
gs://bucket-name/configuration.json
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs
Corps JSON de la requête :
{ "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""] } } ] } }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$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
La sortie ressemble à ceci :
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Python.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Analyser les résultats et itérer
Après avoir exécuté l'optimiseur de requêtes Vertex AI, vérifiez la progression de la tâche à l'aide de l'une des options suivantes:
Notebook
Si vous souhaitez afficher les résultats de l'optimiseur de requêtes Vertex AI via le notebook, procédez comme suit:
Ouvrez le notebook de l'optimiseur d'invite Vertex AI.
Dans la section Inspecter les résultats, procédez comme suit:
Dans le champ RESULT_PATH, ajoutez l'URI du bucket Cloud Storage dans lequel vous avez configuré l'optimiseur d'invite Vertex AI pour écrire les résultats. Exemple :
gs://bucket-name/output-path
Cliquez sur play_circle Run cell (Exécuter la cellule).
Console
Dans la console Google Cloud, accédez à la section Vertex AI, accédez à la page Entraînement des pipelines.
Cliquez sur l'onglet Tâches personnalisées. La tâche d'entraînement personnalisée de l'optimiseur de requêtes Vertex AI s'affiche dans la liste, avec son état.
Une fois la tâche terminée, examinez les optimisations en procédant comme suit:
Dans la console Google Cloud, accédez à la page Buckets Cloud Storage:
Cliquez sur le nom de votre bucket Cloud Storage.
Accédez au dossier portant le même nom que le mode d'optimisation que vous avez utilisé pour évaluer les invites, soit
instruction
, soitdemonstration
. Si vous avez utilisé le modeinstruction_and_demo
, les deux dossiers s'affichent. Le dossierinstruction
contient les résultats de l'optimisation des instructions système, tandis que le dossierdemonstration
contient les résultats de l'optimisationdemonstration
et les instructions système optimisées.Le dossier contient les fichiers suivants:
config.json
: configuration complète utilisée par l'optimiseur de requêtes Vertex AI.templates.json
: chaque ensemble d'instructions système et/ou d'exemples de quelques prises que l'optimiseur d'invites Vertex AI a générés, ainsi que leur score d'évaluation.eval_results.json
: la réponse du modèle cible pour chaque requête d'exemple pour chaque ensemble d'instructions système générées et/ou d'exemples à quelques clichés, ainsi que leur score d'évaluation.optimized_results.json
: les instructions système et/ou les exemples à quelques clichés les plus performants, ainsi que leur score d'évaluation.
Pour afficher les instructions du système optimisé, consultez le fichier
optimized_results.json
.
Étape suivante
- Essayez le notebook du SDK Vertex AI Prompt Optimizer.
- Découvrez les bonnes pratiques d'IA responsable et les filtres de sécurité de Vertex AI.
- En savoir plus sur les stratégies de requêtes.
- Découvrez des exemples de requêtes dans la galerie de requêtes.