Este documento descreve como usar o otimizador baseado em dados para otimizar automaticamente a performance de comandos melhorando as instruções do sistema para um conjunto de comandos.
O otimizador baseado em dados pode ajudar você a melhorar seus comandos rapidamente em grande escala, sem precisar reescrever manualmente instruções do sistema ou comandos individuais. Isso é especialmente útil quando você quer usar instruções e comandos do sistema que foram escritas para um modelo com um modelo diferente.
Exemplo de otimização de comando
Por exemplo, para otimizar instruções do sistema para um conjunto de comandos que fazem referência a informações contextuais para responder a perguntas sobre culinária, use o otimizador orientado por dados. Para concluir esta tarefa, prepare as entradas de forma semelhante a esta:
Instruções do sistema
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.
Modelo de comando
Question: {input_question} Facts: {input_context}
Comandos de amostra
input_question |
input_context |
---|---|
Quais são algumas técnicas para cozinhar carne vermelha e porco que maximizam o sabor e a maciez, minimizando a formação de compostos não saudáveis? | Carne vermelha e suína devem ser cozidas a uma temperatura interna de 63 graus Celsius para garantir a segurança. Marinar a carne em ingredientes ácidos, como suco de limão ou vinagre, pode ajudar a amaciar, quebrando as fibras musculares duras. Métodos de cozimento em alta temperatura, como grelhar e selar, podem criar um delicioso escurecimento e caramelização, mas é importante evitar a carbonização, que pode produzir compostos nocivos. |
Quais são algumas maneiras criativas de adicionar sabor e nutrientes a shakes proteicos sem usar açúcares adicionados ou ingredientes artificiais? | Adicionar folhas verdes, como espinafre ou couve, é uma ótima maneira de aumentar o valor nutricional do seu shake sem alterar drasticamente o sabor. Usar leite de amêndoa ou água de coco sem açúcar em vez de leite comum pode adicionar uma doçura sutil e um aumento de gorduras ou eletrólitos saudáveis, respectivamente. Você sabia que misturar demais o shake pode esquentar? Para manter as coisas legais e refrescantes, faça misturas mais curtas e dê um intervalo ao liquidificador, se necessário. |
Instruções otimizadas do sistema
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.
Como a otimização funciona
O otimizador baseado em dados usa os seguintes parâmetros:
- Modo de otimização: especifica se o otimizador baseado em dados otimiza as instruções do sistema, seleciona comandos de exemplo para adicionar às instruções do sistema como exemplos de poucos disparos ou ambos.
- Métricas de avaliação: as métricas que o otimizador baseado em dados usa para otimizar as instruções do sistema e/ou selecionar comandos de exemplo.
- Modelo de destino: o modelo do Google para o qual o otimizador baseado em dados otimiza as instruções do sistema e seleciona comandos de exemplo.
Quando você executa o otimizador baseado em dados, ele otimiza as instruções do sistema com base nas suas seleções. Para isso, ele executa um job de treinamento personalizado em que avalia de forma iterativa os comandos de amostra e reescreve as instruções do sistema para encontrar a versão que produz a melhor pontuação de avaliação para o modelo de destino.
Ao final do job, o otimizador orientado a dados gera as instruções do sistema otimizadas com a pontuação de avaliação.
Métricas de avaliação
O otimizador orientado por dados usa métricas de avaliação para otimizar instruções do sistema e selecionar comandos de amostra. Você pode usar as métricas de avaliação padrão ou definir suas próprias métricas personalizadas. Observação: todas as métricas de avaliação precisam ter a propriedade de que uma pontuação mais alta indica um desempenho melhor.
É possível usar várias métricas ao mesmo tempo. No entanto, as métricas personalizadas só podem ser usadas uma por vez. Se você usar métricas padrão e personalizadas juntas, apenas uma delas poderá ser métrica personalizada. As outras precisam ser métricas padrão.
Para saber como especificar métricas uma de cada vez ou em combinação, consulte EVALUATION_METRIC_PARAMETERS na guia "SDK" em Criar um modelo de comando e instruções do sistema.
Métricas de avaliação personalizadas
As métricas personalizadas são úteis quando as métricas padrão não se encaixam no seu aplicativo. O otimizador com base em dados só oferece suporte a uma métrica personalizada por vez.
Para saber como criar métricas personalizadas, consulte Criar métricas personalizadas.
Métricas de avaliação padrão
O otimizador baseado em dados oferece suporte a métricas de avaliação personalizadas e também às seguintes métricas:
Tipo de métrica | Caso de uso | Métrica | Descrição |
---|---|---|---|
Com base no modelo | Resumo | summarization_quality |
Descreve a capacidade do modelo de responder a perguntas considerando um corpo de texto para referência. |
Respostas a perguntas | question_answering_correctness * |
Descreve a capacidade do modelo de responder corretamente a uma pergunta. | |
question_answering_quality |
Descreve a capacidade do modelo de responder a perguntas considerando um corpo de texto para referência. | ||
Coerência | coherence |
Descreve a capacidade do modelo de fornecer uma resposta coerente e mede a fluidez lógica e a coerência do texto gerado. | |
Segurança | safety |
Descreve o nível de segurança do modelo, ou seja, se a resposta contém texto não seguro. | |
Fluência | fluency |
Descreve o nível de domínio do idioma do modelo. | |
Embasamento | groundedness |
Descreve a capacidade do modelo de fornecer ou referenciar informações incluídas apenas no texto de entrada. | |
Comet (link em inglês) | comet** |
Descreve a capacidade do modelo na qualidade de uma tradução em relação à referência. | |
MetricX | metricx** |
Descreve a capacidade do modelo na qualidade de uma tradução. | |
Com base em computação | Uso de ferramentas e chamada de função | tool_call_valid * |
Descreve a capacidade do modelo de prever uma chamada de ferramenta válida. |
tool_name_match * |
Descreve a capacidade do modelo de prever uma chamada de ferramenta com o nome correto. Apenas a primeira chamada de ferramenta é inspecionada. | ||
tool_parameter_key_match * |
Descreve a capacidade do modelo de prever uma chamada de ferramenta com os nomes de parâmetros corretos. | ||
tool_parameter_kv_match * |
Descreve a capacidade do modelo de prever uma chamada de ferramenta com os nomes de parâmetros e chaves-valor corretos. | ||
Geração de texto em geral | bleu * |
Contém o resultado de um algoritmo para avaliar a qualidade da previsão, que foi traduzida de uma linguagem natural para outra. A qualidade da previsão é considerada a correspondência entre um parâmetro de previsão e o parâmetro de referência. | |
exact_match * |
Calcula se um parâmetro de previsão corresponde exatamente a um parâmetro de referência. | ||
rouge_1 * |
Usado para comparar o parâmetro de previsão fornecido com um parâmetro de referência. | ||
rouge_2 * |
|||
rouge_l * |
|||
rouge_l_sum * |
* Se você quiser otimizar suas instruções usando as
avaliações question_answering_correctness
ou computacionais, faça
uma das seguintes ações:
- Adicione uma variável que represente a resposta de informações empíricas para seus comandos ao modelo de comando.
- Se você não tiver respostas de informações empíricas para seus comandos, mas já tiver usado os comandos com um modelo do Google e
atingido os resultados desejados, adicione o parâmetro
source_model
à configuração em vez de adicionar respostas de informações empíricas. Quando o parâmetrosource_model
é definido, o otimizador orientado por dados executa seus comandos de exemplo no modelo de origem para gerar as respostas de informações empíricas para você.
** Se você quiser otimizar suas instruções usando comet
ou metricx
, forneça o parâmetro translation_source_field_name
à sua configuração, que especifica o nome do campo correspondente do texto de origem nos dados. Além disso, o valor MetricX foi modificado para ficar entre 0 (pior) e 25 (melhor) para respeitar a propriedade "quanto maior, melhor".
Antes de começar
Para garantir que a conta de serviço padrão do Compute Engine tenha as permissões necessárias para otimizar solicitações, peça ao administrador para conceder à conta de serviço padrão do Compute Engine os seguintes papéis do IAM no projeto:
-
Usuário da Vertex AI (
roles/aiplatform.user
) -
Administrador de objetos do Storage (
roles/storage.objectAdmin
) -
Leitor do Artifact Registry (
roles/artifactregistry.reader
) -
Se você estiver usando métricas personalizadas:
-
Desenvolvedor do Cloud Run (
roles/run.developer
) -
Chamador do Cloud Run (
roles/run.invoker
)
-
Desenvolvedor do Cloud Run (
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
O administrador também pode conceder à conta de serviço padrão do Compute Engine as permissões necessárias por meio de papéis personalizados ou outros papéis predefinidos.
Otimizar comandos
É possível otimizar os comandos das seguintes maneiras:
- usando o otimizador de comandos da Vertex AI no console da Vertex AI
- usando a API Vertex AI
- executando o notebook do otimizador de comandos da Vertex AI.
Para otimizar comandos, escolha qual método você quer usar e siga as etapas descritas em detalhes nas seções a seguir:
- Criar um modelo de comando e instruções do sistema
- Preparar exemplos de comandos
- Opcional: criar métricas personalizadas
- Criar uma configuração
- Executar o job de otimização de comando
- Analisar resultados e iterar
Criar um modelo de comando e instruções do sistema
Os modelos de comando definem o formato de todos os comandos usando variáveis substituíveis. Quando você usa um modelo de comando para otimizar comandos, as variáveis são substituídas pelos dados no conjunto de dados do comando.
As variáveis do modelo de comando precisam atender aos seguintes requisitos:
- As variáveis precisam estar entre chaves.
- Os nomes das variáveis não podem conter espaços ou traços
-
As variáveis que representam entradas multimodais precisam incluir a string
MIME_TYPE
após a variável:@@@MIME_TYPE
Substitua
MIME_TYPE
por um tipo MIME de imagem, vídeo, áudio ou documento que seja aceito pelo modelo de destino.
Crie um modelo de comando e instruções do sistema usando um dos seguintes métodos:
Notebook
Se você quiser executar o otimizador baseado em dados no notebook, crie instruções do sistema e um modelo de comando fazendo o seguinte:
No Colab Enterprise, abra o notebook do otimizador de comandos da Vertex AI.
Na seção Criar um modelo de comando e instruções do sistema, faça o seguinte:
No campo SYSTEM_INSTRUCTION, insira as instruções do sistema. Exemplo:
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.
No campo PROMPT_TEMPLATE, digite o modelo de comando. Exemplo:
Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
Se você quiser otimizar seus comandos usando as avaliações
question_answering_correctness
ou computacionais, faça um destes procedimentos:
Adicione a variável
{target}
ao modelo de comando para representar a resposta de informações empíricas do comando. Por exemplo:Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
Se você não tiver respostas de informações empíricas para seus comandos, mas já tiver usado os comandos com um modelo do Google e alcançado os resultados pretendidos, adicione o parâmetro
source_model
à configuração em vez de adicionar respostas de informações empíricas. Quando o parâmetrosource_model
é definido, o otimizador orientado por dados executa seus comandos de exemplo no modelo de origem para gerar as respostas de informações empíricas para você.
SDK
Se você quiser executar o otimizador orientado a dados pelo SDK sem usar o notebook, crie arquivos de texto para seu modelo de comando e instruções do sistema seguindo estas etapas:
Crie um arquivo de texto para as instruções do sistema.
No arquivo de texto, defina as instruções do sistema. Exemplo:
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.
Crie um arquivo de texto para o modelo de comando.
No arquivo de texto, defina um modelo de comando que inclua uma ou mais variáveis. Por exemplo:
Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
Se você quiser otimizar seus comandos usando as avaliações
question_answering_correctness
ou computacionais, faça um destes procedimentos:Adicione a variável
{target}
ao modelo de comando para representar a resposta de informações empíricas do comando. Por exemplo:Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
Se você não tiver respostas de informações empíricas para seus comandos, mas já tiver usado os comandos com um modelo do Google e alcançado os resultados pretendidos, adicione o parâmetro
source_model
à configuração em vez de adicionar respostas de informações empíricas. Quando o parâmetrosource_model
é definido, o otimizador orientado por dados executa seus comandos de exemplo no modelo de origem para gerar as respostas de informações empíricas para você.
Preparar exemplos de comandos
Para ter os melhores resultados com o otimizador baseado em dados, use de 50 a 100 comandos de exemplo.
- A ferramenta ainda pode ser eficaz com apenas cinco comandos de exemplo.
- As melhores amostras incluem exemplos em que o modelo de destino tem um desempenho ruim e exemplos em que ele tem um bom desempenho.
Os comandos de exemplo contêm os dados que substituem as variáveis no modelo de comando. Você pode usar um arquivo JSONL ou CSV para armazenar os comandos de amostras.
Arquivo JSONL
- Crie um arquivo JSONL.
No arquivo JSONL, adicione os dados do comando que substituem cada variável. Exemplo:
{"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"}
Arquivo CSV
- Criar um arquivo CSV
- Na primeira linha, adicione as variáveis do modelo de comando.
- Nas linhas a seguir, adicione os dados de exemplo que substituem cada variável.
- Faça upload do arquivo CSV em um bucket do Cloud Storage.
Opcional: criar métricas personalizadas
.Para criar uma métrica personalizada, faça o seguinte:
Crie um arquivo de texto chamado
requirements.txt
.No arquivo
requirements.txt
, defina as bibliotecas necessárias para a função de métrica de avaliação personalizada. Todas as funções exigem o pacotefunctions-framework
.Por exemplo, o arquivo
requirements.txt
de uma métrica personalizada que calcula ROUGE-L seria semelhante a este:functions-framework==3.* rouge-score
Crie um arquivo Python chamado
main.py
.No arquivo
main.py
, escreva sua função de avaliação personalizada. A função precisa aceitar o seguinte:- Solicitações HTTP POST
- Entrada JSON que contém o
response
, que é a saída do LLM, e oreference
, que é a resposta empírica para o comando, se fornecida no conjunto de dados de comandos.
Por exemplo, o arquivo
main.py
de uma métrica personalizada que calcula ROUGE-L seria parecido com o seguinte: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', })
Implante sua função de avaliação personalizada como uma função do Cloud Run executando o comando
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
Substitua:
FUNCTION_NAME
: o nome da métrica de avaliação personalizada.PROJECT_ID
: o ID do projeto.REGION
: a região em que você quer implantar a função. Precisa ser a mesma região do modelo de destino.
Criar uma configuração
A configuração do otimizador orientado a dados especifica os parâmetros que você quer definir para o job de otimização de comandos.
Crie uma configuração usando uma das seguintes opções:
Notebook
Se você quiser executar o otimizador com base em dados no notebook, crie uma configuração do seguinte modo:
No Colab Enterprise, abra o notebook do otimizador baseado em dados.
Na seção Configurar as configurações do projeto, faça o seguinte:
- No campo PROJECT_ID, insira o ID do projeto.
- No campo LOCATION, insira o local em que você quer executar o otimizador com base em dados.
- No campo OUTPUT_PATH, insira o URI do bucket do Cloud Storage
em que você quer que o otimizador orientado por dados
grave as instruções otimizadas do sistema e/ou alguns exemplos de fotos.
Por exemplo,
gs://bucket-name/output-path
. - No campo INPUT_PATH, insira o URI dos comandos de exemplo no seu bucket do Cloud Storage. Por exemplo,
gs://bucket-name/sample-prompts.jsonl
.
Na seção Configurar as configurações de otimização, faça o seguinte:
- No campo TARGET_MODEL, insira o modelo para o qual você quer otimizar os comandos.
- No campo THINKING_BUDGET, insira o orçamento de pensamento para o modelo de destino em que você quer otimizar os comandos. O padrão é -1, o que significa que não há pensamento para modelos que não pensam e pensamento automático para modelos que pensam, como o Gemini 2.5. Consulte Pensando para saber mais sobre as configurações manuais de orçamento.
- Em OPTIMIZATION_MODE, insira o modo de otimização que você quer
usar. Precisa ser de
instruction
,demonstration
, ouinstruction_and_demo
. - No campo EVAL_METRIC, insira uma métrica de avaliação em que você quer otimizar os comandos.
- Opcional: no campo SOURCE_MODEL, insira o
modelo do Google com que as instruções e comandos do sistema foram usados anteriormente. Quando o parâmetro
source_model
é definido, o otimizador com base em dados executa seus comandos de exemplo no modelo de origem para gerar as respostas de informações empíricas para você, para métricas de avaliação que exigem respostas de informações empíricas. Se você não executou os comandos com um modelo do Google ou não alcançou os resultados desejados, adicione respostas de verdade ao comando. Para mais informações, consulte a seção Criar um comando e instruções do sistema deste documento.
Opcional: na seção Configurar as configurações de otimização avançada, é possível adicionar qualquer um dos parâmetros opcionais à configuração.
- No campo NUM_INST_OPTIMIZATION_STEPS, insira o número de
iterações que o otimizador orientado a dados usa no
modo de otimização de instrução. O tempo de execução aumenta linearmente
conforme você aumenta esse valor. É preciso que seja um número inteiro entre
10
e20
. Se não for definido, o padrão será10
. - No campo NUM_DEMO_OPTIMIZATION_STEPS, insira o número de
demonstrações que o otimizador orientado a dados avalia.
Usado com o modo de otimização
demonstration
einstruction_and_demo
. É preciso que seja um número inteiro entre10
e30
. Se não for definido, o padrão será10
. - No campo NUM_DEMO_PER_PROMPT, insira o número de
demonstrações geradas por comando. Precisa ser um número inteiro entre
2
e o número total de solicitações de amostra menos 1. Se não for definido, o padrão será3
. - No campo TARGET_MODEL_QPS, insira as consultas por segundo (QPS) que o otimizador orientado a dados envia para o modelo de destino.
O tempo de execução diminui linearmente à medida que você aumenta esse valor. Precisa ser um
número flutuante de
3.0
ou mais, mas menor que a cota de QPS que você tem no modelo de destino. Se não for definido, o padrão será3.0
. - No campo SOURCE_MODEL_QPS, insira as consultas por segundo
(QPS) que o otimizador orientado a dados envia para o
modelo de origem. Precisa ser um número flutuante de
3.0
ou mais, mas menor que a cota de QPS que você tem no modelo de origem. Se não for definido, o padrão será3.0
. - No campo EVAL_QPS, insira as consultas por segundo (QPS)
que o otimizador orientado a dados envia para o serviço de avaliação de IA generativa ou a função do Cloud Run.
- Para métricas baseadas em modelo, precisa ser um número de ponto flutuante
3.0
ou maior. Se não for definido, o padrão será3.0
. - Para métricas personalizadas, precisa ser um ponto flutuante
3.0
ou maior. Isso determina a taxa em que o otimizador com base em dados chama as funções do Cloud Run da sua métrica personalizada.
- Para métricas baseadas em modelo, precisa ser um número de ponto flutuante
- Se você quiser usar mais de uma métrica de avaliação, faça o seguinte:
- No campo EVAL_METRIC_1, insira uma métrica de avaliação que você quer usar.
- No campo EVAL_METRIC_1_WEIGHT, insira o peso que você quer que o otimizador baseado em dados use ao executar a otimização.
- No campo EVAL_METRIC_2, insira uma métrica de avaliação que você quer usar.
- No campo EVAL_METRIC_2_WEIGHT, insira o peso que você quer que o otimizador baseado em dados use ao executar a otimização.
- No campo EVAL_METRIC_3, insira uma métrica de avaliação que você quer usar.
- No campo EVAL_METRIC_3_WEIGHT, insira o peso que você quer que o otimizador baseado em dados use ao executar a otimização.
- No campo METRIC_AGGREGATION_TYPE, insira o peso que você quer que o otimizador baseado em dados use ao executar a otimização.
- No campo PLACEHOLDER_TO_VALUE, insira as informações que substituem todas as variáveis nas instruções do sistema. As informações incluídas nesta flag não são otimizadas pelo otimizador baseado em dados.
- No campo RESPONSE_MIME_TYPE, insira o
tipo de resposta MIME
usado pelo modelo de destino. Precisa ser de
text/plain
ouapplication/json
. Se não for definido, o padrão serátext/plain
. - No campo TARGET_LANGUAGE, digite o idioma das instruções do sistema. Se não for definido, o padrão será inglês.
SDK
Se você quiser executar o otimizador orientado a dados pelo SDK, crie um arquivo JSON com os parâmetros que você quer usar para otimizar comandos seguindo estas etapas:
Crie um arquivo JSON com os parâmetros que você quer usar para otimizar os comandos. Cada arquivo de configuração requer os seguintes parâmetros:
{ "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" }
Substitua:
PROJECT_ID
: o ID do projeto.SYSTEM_INSTRUCTION
: as instruções do sistema que você quer otimizar.PROMPT_TEMPLATE
: o modelo de solicitação.TARGET_MODEL
: o modelo para o qual você quer otimizar os comandos.THINKING_BUDGET
: o orçamento de pensamento para o modelo de destino que você quer otimizar. O padrão é -1, o que significa que não há raciocínio para modelos que não raciocinam e raciocínio automático para modelos que raciocinam, como o Gemini 2.5. Consulte Pensando para saber mais sobre as configurações manuais de orçamento.EVALUATION_METRIC_PARAMETERS
: os parâmetros especificados dependem de quantas métricas de avaliação você está usando e se elas são padrão ou personalizadas:Métrica padrão única
Se você estiver usando uma única métrica de avaliação padrão, use o seguinte parâmetro:
"eval_metric": "EVALUATION_METRIC",
Substitua
EVALUATION_METRIC
pela métrica que você quer otimizar.Métrica personalizada única
Se você estiver usando uma única métrica de avaliação personalizada, use os seguintes parâmetros:
"eval_metric": "custom_metric", "custom_metric_name": "CUSTOM_METRIC_NAME", "custom_metric_cloud_function_name": "FUNCTION_NAME",
Substitua:
CUSTOM_METRIC_NAME
: o nome da métrica, conforme definido pela chave que corresponde aofinal_score
. Por exemplo,custom_accuracy
.FUNCTION_NAME
: o nome da função do Cloud Run que você implantou anteriormente.
Várias métricas padrão
Se você estiver usando várias métricas de avaliação padrão, use os seguintes parâmetros:
"eval_metrics_types": [EVALUATION_METRIC_LIST], "eval_metrics_weights": [EVAL_METRICS_WEIGHTS], "aggregation_type": "METRIC_AGGREGATION_TYPE",
Substitua:
EVALUATION_METRIC_LIST
: uma lista de métricas de avaliação. É preciso que seja uma matriz. Por exemplo,"bleu", "summarization_quality"
.EVAL_METRICS_WEIGHTS
: o peso de cada métrica. Precisa ser uma matriz e ter o mesmo comprimento deEVALUATION_METRIC_LIST
.METRIC_AGGREGATION_TYPE
: o tipo de agregação usado para as métricas de avaliação. Precisa ser deweighted_sum
ouweighted_average
. Se não for definido, o padrão seráweighted_sum
.
Várias métricas padrão e personalizadas
Se você estiver usando várias métricas de avaliação que incluem uma combinação de uma única métrica personalizada e uma ou mais métricas padrão, use os seguintes parâmetros:
"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",
Substitua:
EVALUATION_METRIC_LIST
: uma lista das métricas de avaliação padrão. É preciso que seja uma matriz. Por exemplo,"bleu", "summarization_quality"
.EVAL_METRICS_WEIGHTS
: o peso de cada métrica. É preciso que seja uma matriz.METRIC_AGGREGATION_TYPE
: o tipo de agregação usado para as métricas de avaliação. Precisa ser deweighted_sum
ouweighted_average
. Se não for definido, o padrão seráweighted_sum
.CUSTOM_METRIC_NAME
: o nome da métrica, conforme definido pela chave que corresponde aofinal_score
. Por exemplo,custom_accuracy
.FUNCTION_NAME
: o nome da função do Cloud Run que você implantou anteriormente.
OPTIMIZATION_MODE
: o modo de otimização. Precisa serinstruction
,demonstration
ouinstruction_and_demo
.SAMPLE_PROMPT_URI
: o URI dos comandos de exemplo no bucket do Cloud Storage. Por exemplo,gs://bucket-name/sample-prompts.jsonl
.OUTPUT_URI
: o URI do bucket do Cloud Storage em que você quer que o otimizador orientado por dados grave as instruções otimizadas do sistema e/ou alguns exemplos de fotos. Por exemplo,gs://bucket-name/output-path
.
Além disso, é possível adicionar qualquer um dos parâmetros opcionais ao arquivo de configuração.
Os parâmetros opcionais são divididos em 5 categorias:
- Parâmetros do processo de otimização. Esses parâmetros controlam o processo de otimização geral, incluindo a duração e o número de iterações de otimização executadas, o que afeta diretamente a qualidade das otimizações.
- Seleção de modelo e parâmetros de localização. Esses parâmetros especificam quais modelos o otimizador baseado em dados usa e os locais em que eles são usados.
- Parâmetros de latência (QPS). Esses parâmetros controlam o QPS, afetando a velocidade do processo de otimização.
- Outro. Outros parâmetros que controlam a estrutura e o conteúdo dos
comandos.
Ver parâmetros opcionais
"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
Substitua:
Parâmetros do processo de otimização:
NUM_INST_OPTIMIZATION_STEPS
: o número de iterações que o otimizador orientado a dados usa no modo de otimização de instruções. O tempo de execução aumenta linearmente conforme você aumenta esse valor. É preciso que seja um número inteiro entre10
e20
. Se não for definido, o padrão será10
.NUM_DEMO_OPTIMIZATION_STEPS
: o número de demonstrações que o otimizador com base em dados avalia. Usado com o modo de otimizaçãodemonstration
einstruction_and_demo
. Precisa ser um número inteiro entre2
e o número total de comandos de amostra - 1. Se não for definido, o padrão será10
.NUM_DEMO_PER_PROMPT
: o número de demonstrações geradas por comando. É preciso que seja um número inteiro entre3
e6
. Se não for definido, o padrão será3
.
Seleção de modelo e parâmetros de local:
TARGET_MODEL_LOCATION
: o local em que você quer executar o modelo de destino. Se não for definido, o padrão seráus-central1
.SOURCE_MODEL
: o modelo do Google com que as instruções e comandos do sistema foram usadas anteriormente. Quando o parâmetrosource_model
é definido, o otimizador baseado em dados executa seus comandos de amostra no modelo de origem para gerar as respostas de informações empíricas para você, para métricas de avaliação que exigem respostas de informações empíricas. Se você não executou os comandos com um modelo do Google ou não alcançou os resultados desejados, adicione respostas com informações empíricas no comando. Para mais informações, consulte a seção Criar um comando e instruções do sistema deste documento.SOURCE_MODEL_LOCATION
: o local em que você quer executar o modelo de origem. Se não for definido, o padrão seráus-central1
.
Parâmetros de latência (QPS):
TARGET_MODEL_QPS
: as consultas por segundo (QPS) que o otimizador orientado por dados envia para o modelo de destino. O tempo de execução diminui linearmente à medida que você aumenta esse valor. Precisa ser um número flutuante de3.0
ou mais, mas menor que a cota de QPS que você tem no modelo de destino. Se não for definido, o padrão será3.0
.EVAL_QPS
: as consultas por segundo (QPS) que o otimizador orientado a dados envia para o serviço de avaliação de IA generativa ou a função do Cloud Run.- Para métricas baseadas em modelo, precisa ser um número de ponto flutuante
3.0
ou maior. Se não for definido, o padrão será3.0
. - Para métricas personalizadas, precisa ser um ponto flutuante
3.0
ou maior. Isso determina a taxa em que o otimizador com base em dados chama as funções do Cloud Run da sua métrica personalizada.
- Para métricas baseadas em modelo, precisa ser um número de ponto flutuante
SOURCE_MODEL_QPS
: as consultas por segundo (QPS) que o otimizador baseado em dados envia para o modelo de origem. Precisa ser um número flutuante de3.0
ou mais, mas menor que a cota de QPS que você tem no modelo de origem. Se não for definido, o padrão será3.0
.
Outros parâmetros:
RESPONSE_MIME_TYPE
: o tipo de resposta MIME usado pelo modelo de destino. Precisa ser detext/plain
ouapplication/json
. Se não for definido, o padrão serátext/plain
.TARGET_LANGUAGE
: o idioma das instruções do sistema. Se não for definido, o padrão será inglês.PLACEHOLDER_TO_CONTENT
: as informações que substituem todas as variáveis nas instruções do sistema. As informações incluídas nessa flag não são otimizadas pelo otimizador de comandos baseado em dados.DATA_LIMIT
: a quantidade de dados usados para validação. O tempo de execução aumenta linearmente com esse valor. É preciso que seja um número inteiro entre5
e100
Se não for definido, o padrão será100
.
Executar o otimizador de comandos
Execute o otimizador baseado em dados usando uma das seguintes opções:
Notebook
Execute o otimizador baseado em dados no notebook seguindo estas etapas:
No Colab Enterprise, abra o notebook do otimizador de comandos da Vertex AI.
Na seção Executar otimizador de comando, clique em play_circle Executar célula.
O otimizador baseado em dados é executado.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: o local em que você quer executar o otimizador de comando da Vertex AI.
- PROJECT_ID: o ID do projeto.
- JOB_NAME: um nome para o job do otimizador de comandos da Vertex AI.
- PATH_TO_CONFIG: o URI do arquivo de configuração no seu bucket do Cloud Storage.
Por exemplo,
gs://bucket-name/configuration.json
.
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs
Corpo JSON da solicitação:
{ "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""] } } ] } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
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
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$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
A resposta será semelhante a:
SDK
Execute o otimizador com base em dados pelo SDK adicionando as seguintes seções de código ao Colab ou notebook.
Faça as seguintes substituições:
- LOCATION: o local em que você quer executar o otimizador com base em dados.
- PROJECT_ID: o ID do projeto.
- PROJECT_NUMBER: o número do seu projeto, disponível no Console do Cloud.
- PATH_TO_CONFIG: o URI do arquivo de configuração no Cloud Storage. Por exemplo,
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)
Quando a otimização for concluída, examine os artefatos de saída no local especificado na configuração.
Analisar resultados e iterar
Depois de executar o otimizador baseado em dados, analise o progresso do job usando uma das seguintes opções:
Notebook
Se você quiser conferir os resultados do otimizador baseado em dados no notebook, faça o seguinte:
Na seção Inspecionar os resultados, faça o seguinte:
No campo RESULT_PATH, adicione o URI do bucket do Cloud Storage em que você configurou o otimizador orientado a dados para gravar resultados. Por exemplo,
gs://bucket-name/output-path
.Clique em play_circle Executar célula.
Console
No console Google Cloud , na seção "Vertex AI", acesse a página Pipelines de treinamento.
Clique na guia Jobs personalizados. O job de treinamento personalizado do otimizador com base em dados aparece na lista com o status dele.
Quando o job for concluído, revise as otimizações fazendo o seguinte:
No console Google Cloud , acesse a página Buckets do Cloud Storage:
Clique no nome do seu bucket do Cloud Storage
Navegue até a pasta que tem o mesmo nome do modo de otimização usado para avaliar os comandos,
instruction
oudemonstration
. Se você usou o modoinstruction_and_demo
, as duas pastas vão aparecer. A pastainstruction
contém os resultados da otimização de instruções do sistema, enquanto a pastademonstration
contém os resultados da otimizaçãodemonstration
e as instruções do sistema otimizadas.A pasta contém os seguintes arquivos:
config.json
: a configuração completa usada pelo otimizador de comandos da Vertex AI.templates.json
: cada conjunto de instruções do sistema e/ou alguns exemplos de fotos que o otimizador orientado a dados gerou e a pontuação de avaliação.eval_results.json
: a resposta do modelo de destino para cada comando de amostra para cada conjunto de instruções do sistema geradas e/ou alguns exemplos de fotos e a pontuação de avaliação.optimized_results.json
: as instruções do sistema com melhor desempenho e/ou alguns exemplos de fotos e a pontuação de avaliação delas.
Para conferir as instruções otimizadas do sistema, acesse o arquivo
optimized_results.json
.
Práticas recomendadas
Os modelos de prévia são aceitos apenas na região
global
, e o trabalho personalizado da Vertex não aceitaglobal
como região. Portanto, não use o VAPO para otimizar os modelos de prévia como o modelo de destino.Para modelos GA, os usuários podem selecionar locais específicos da região, como
us-central1
oueurope-central2
, em vez deglobal
, para obedecer ao requisito de residência de dados.
A seguir
- Teste o notebook do SDK do otimizador de comandos da Vertex AI.
- Saiba mais sobre as práticas recomendadas de IA responsável e os filtros de segurança da Vertex AI.
- Saiba mais sobre estratégias de comando.
- Confira exemplos de comandos na galeria de comandos.