Este documento descreve como usar o otimizador de comandos da Vertex AI para otimizar automaticamente a performance de comandos melhorando as instruções do sistema para um conjunto de comandos.
O otimizador de comandos da Vertex AI 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.
O otimizador de comandos da Vertex AI ajuda a melhorar os comandos avaliando a resposta do modelo em relação a comandos de amostra com métricas de avaliação especificadas. Para usar o otimizador de comandos da Vertex AI, você precisa ter o seguinte:
- Um conjunto de comandos de exemplo
- Instruções do sistema usadas por todos os seus comandos de exemplo
- Um modelo de comando que faz referência aos comandos de exemplo
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 de comandos da Vertex AI. 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. |
Como a otimização funciona
Depois de preparar as entradas, escolha um modo de otimização, uma métrica de avaliação e um modelo de destino.
- Modo de otimização: especifica se o otimizador de comandos da Vertex AI otimiza as instruções do sistema, seleciona comandos de exemplo para adicionar às instruções do sistema como alguns exemplos de fotos ou ambos.
- Métrica de avaliação: a métrica que o otimizador de comandos da Vertex AI usa para otimizar as instruções do sistema e/ou selecionar comandos de exemplo.
- Modelo de destino: o modelo do Google com que o otimizador de comandos da Vertex AI otimiza as instruções do sistema e/ou seleciona comandos de exemplo para uso.
Quando você executa o otimizador de comandos da Vertex AI, ele otimiza as instruções do sistema com base nas suas seleções executando um job de treinamento personalizado em que ele avalia iterativamente seus 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 de comandos da Vertex AI gera as instruções do sistema otimizadas com a pontuação de avaliação.
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.
Modelos compatíveis
É possível otimizar as instruções do sistema para uso com os seguintes modelos:
Métricas de avaliação com suporte
O otimizador de comandos da Vertex AI oferece suporte a métricas de avaliação personalizadas e também às seguintes métricas de avaliação:
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. | |
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, a Vertex AI executa seus comandos de exemplo no modelo de origem para gerar as respostas de informações empíricas para você.
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
) -
Storage Object Admin (
roles/storage.objectAdmin
) -
Leitor do Artifact Registry (
roles/artifactregistry.reader
)
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.
-
Usuário da Vertex AI (
A tabela a seguir inclui os modelos que exigem a cota de consultas por minuto (QPM) e a QPM recomendada para cada modelo. Se você tiver uma cota do QPM menor do que a recomendada, o otimizador de comandos da Vertex AI poderá ser executado mais lentamente do que o esperado. Se você configurar o otimizador de comandos da Vertex AI com um QPM maior do que o que você tem acesso, o job vai falhar. Se você não tiver cota suficiente para executar o otimizador de comandos da Vertex AI, solicite um aumento de cota.
Modelo Descrição Cota mínima do QPM Cota recomendada do QPM Modelo de destino O modelo em que você quer otimizar os comandos. 200 QPM 500+ QPM gemini-1.5-pro-001
O modelo que o otimizador de comandos da Vertex AI usa para reescrever e avaliar comandos. 200 QPM 500+ QPM
Otimizar comandos
É possível otimizar comandos executando o notebook do otimizador de comandos da Vertex AI ou usando a API Vertex AI. Para otimizar comandos, escolha qual método você quer usar para executar o otimizador de comandos da Vertex AI 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
- Escolher uma métrica de avaliação
- 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
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 de comandos da Vertex AI 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 de comandos da Vertex AI 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 de comandos da Vertex AI 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 de comandos da Vertex AI 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 de comandos da Vertex AI, 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.
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 amostra.
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.
Escolher uma métrica de avaliação
O otimizador de comandos da Vertex AI usa métricas de avaliação para otimizar instruções do sistema e selecionar comandos de exemplo.
Escolha uma das métricas de avaliação compatíveis ou defina sua própria métrica de avaliação personalizada. As métricas personalizadas são úteis quando as métricas padrão
não se encaixam no seu aplicativo. É possível otimizar comandos usando várias métricas.
No entanto, o otimizador de comandos da Vertex AI oferece suporte a apenas uma métrica personalizada
por vez. Por exemplo, é possível executar o otimizador de comandos da Vertex AI
usando uma métrica personalizada e a métrica bleu
ou com as métricas bleu
, rouge
e
summarization_quality
, mas não é possível executar o otimizador de comandos da Vertex AI
com várias métricas personalizadas ao mesmo tempo.
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 POST HTTP
- Entrada JSON que contém o
response
, que é a saída do LLM, e otarget
, que é a resposta verdadeira para o comando.
Por exemplo, o arquivo
main.py
de uma métrica personalizada que calcula o ROUGE-L seria semelhante ao 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 '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', })
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.
Criar uma configuração
A configuração do otimizador de comandos da Vertex AI especifica os parâmetros que você quer definir para o job de otimização de comandos, incluindo:
- Modo de otimização: especifica se o otimizador de comandos da Vertex AI otimiza as instruções do sistema, seleciona comandos de exemplo para adicionar às instruções do sistema como alguns exemplos de fotos ou ambos.
- Métrica de avaliação: a métrica que o otimizador de comandos da Vertex AI usa para otimizar as instruções do sistema e/ou selecionar comandos de exemplo.
- Modelo de destino: o modelo do Google que o otimizador de comandos da Vertex AI otimiza as instruções do sistema e/ou seleciona comandos de exemplo para uso.
Crie uma configuração usando uma das seguintes opções:
Notebook
Se você quiser executar o otimizador de comandos da Vertex AI no notebook, crie uma configuração do seguinte modo:
No Colab Enterprise, abra o notebook do otimizador de comandos da Vertex AI.
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 de comandos da Vertex AI.
- No campo OUTPUT_PATH, insira o URI do bucket do Cloud Storage
em que você quer que o otimizador de comandos da Vertex AI
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 que você quer otimizar para uso.
- 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 a 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 de comandos da Vertex AI 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 de comando da Vertex AI 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_TEMPLATES_PER_STEP, insira o número de instruções
do sistema que o otimizador de comandos da Vertex AI gera
e avalia. Usado com o modo de otimização
instruction
einstruction_and_demo
. É preciso que seja um número inteiro entre1
e4
. Se não for definido, o padrão será2
. - No campo NUM_DEMO_OPTIMIZATION_STEPS, insira o número de
demonstrações que o otimizador de comandos da Vertex AI 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. É preciso que seja um número inteiro entre
3
e6
Se não for definido, o padrão será3
. - No campo TARGET_MODEL_QPS, insira as consultas por segundo (QPS) que o otimizador de comandos da
Vertex AI 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 de comandos do Vertex AI 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 de comandos da Vertex AI envia para o modelo de avaliação,
gemini-1.5-pro
.- Para métricas baseadas em modelo, precisa ser um número flutuante de
3.0
ou mais, mas menor que a cota que você tem paragemini-1.5-pro
. Se não for definido, o padrão será3.0
. - Para métricas personalizadas, precisa ser um número flutuante de
3.0
ou mais. Isso determina a taxa em que o otimizador de comandos da Vertex AI chama suas funções do Cloud Run de métrica personalizada.
- Para métricas baseadas em modelo, precisa ser um número flutuante de
- 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 de comandos da Vertex AI 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 de comandos da Vertex AI use ao executar a otimização.
- No campo EVAL_METRIC_3, insira uma métrica de avaliação que você quer usar.
- Como opção, no campo EVAL_METRIC_3_WEIGHT, insira
- No campo METRIC_AGGREGATION_TYPE, insira o peso que você quer que o otimizador de comandos da Vertex AI 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 de comando da Vertex AI.
- 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á o inglês.
SDK
Se você quiser executar o otimizador de comandos da Vertex AI 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_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" }
Substitua:
PROJECT_ID
: o ID do projeto.SYSTEM_INSTRUCTION_PATH
: o URI das instruções do sistema no bucket do Cloud Storage. Por exemplo,gs://bucket-name/system-instruction.txt
.PROMPT_TEMPLATE
: o URI do modelo de comando no bucket do Cloud Storage. Por exemplo,gs://bucket-name/prompt-template.txt
TARGET_MODEL
: o modelo que você quer otimizar com os comandos.EVALUATION_METRIC_PARAMETERS
: os parâmetros que você especifica dependem de quantas métricas de avaliação você está usando e se elas são padrão ou personalizadas:Uma métrica padrão
Se você estiver usando uma única métrica de avaliação com suporte, use o seguinte parâmetro:
"eval_metric": "EVALUATION_METRIC",
Substitua
EVALUATION_METRIC
pela métrica de avaliação que você quer otimizar para os comandos.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 afinal_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 com suporte, 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. É 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
.
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 métrica personalizada e 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 afinal_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 de comandos da Vertex AI 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 de comandos da Vertex AI 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.
Conferir parâmetros opcionais
"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
Substitua:
Parâmetros do processo de otimização:
NUM_INST_OPTIMIZATION_STEPS
: o número de iterações que o otimizador de comandos da Vertex AI 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_TEMPLATES_PER_STEP
: o número de instruções do sistema que o otimizador de comandos da Vertex AI gera e avalia. Usado com o modo de otimizaçãoinstruction
einstruction_and_demo
. É preciso que seja um número inteiro entre1
e4
. Se não for definido, o padrão será2
.NUM_DEMO_OPTIMIZATION_STEPS
: o número de demonstrações que o otimizador de comandos da Vertex AI avalia. Usado com o modo de otimizaçãodemonstration
einstruction_and_demo
. É preciso que seja um número inteiro entre10
e30
. 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, a Vertex AI 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 de comandos da Vertex AI 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 de comandos da Vertex AI envia para o modelo de avaliação,gemini-1.5-pro
.- Para métricas baseadas em modelo, precisa ser um número flutuante de
3.0
ou mais, mas menor que a cota que você tem paragemini-1.5-pro
. Se não for definido, o padrão será3.0
. - Para métricas personalizadas, precisa ser um número flutuante de
3.0
ou mais. Isso determina a taxa em que o otimizador de comandos da Vertex AI chama suas funções do Cloud Run de métrica personalizada.
- Para métricas baseadas em modelo, precisa ser um número flutuante de
SOURCE_MODEL_QPS
: as consultas por segundo (QPS) que o otimizador de comandos da Vertex AI 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á o 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 da Vertex AI.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 de comandos da Vertex AI usando uma das seguintes opções:
Notebook
Execute o otimizador de comandos da Vertex AI no notebook, seguindo estas etapas:
No Colab Enterprise, abra o notebook do otimizador de comandos do Vertex AI.
Na seção Executar otimizador de comando, clique em play_circle Executar célula.
O otimizador de comandos da Vertex AI é 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:
Python
Antes de testar esse exemplo, siga as instruções de configuração para Python no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Python.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Analisar resultados e iterar
Depois de executar o otimizador de comandos da Vertex AI, analise o progresso do job usando uma das seguintes opções:
Notebook
Se você quiser conferir os resultados do otimizador de comandos da Vertex AI 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 de comandos da Vertex AI para gravar resultados. Por exemplo,
gs://bucket-name/output-path
.Clique em play_circle Executar célula.
Console
No Console do 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 de comandos da Vertex AI é exibido na lista com o status dele.
Quando o job for concluído, revise as otimizações fazendo o seguinte:
No Console do 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 de comandos da Vertex AI 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
.
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.