Crie estudos do Vertex AI Vizier

Esta página descreve como fazer pedidos de API ao Vertex AI Vizier através do Python. Para informações sobre o funcionamento do Vertex AI Vizier, consulte o artigo Vista geral do Vertex AI Vizier.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  6. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  7. Instale o SDK Vertex AI para Python.
  8. Defina constantes

    Para definir constantes, execute os seguintes comandos, substituindo REGION e PROJECT_ID pela sua região e ID do projeto. Crie o seu próprio nome do estudo ou use os valores sugeridos.

    import json
    import datetime
    from google.cloud import aiplatform
    
    REGION = "REGION"
    PROJECT_ID = "PROJECT_ID"
    
    # The following placeholder variables are automatically filled in.
    STUDY_DISPLAY_NAME = '{}_study_{}'.format(PROJECT_ID.replace('-', ''), datetime.datetime.now().strftime('%Y%m%d_%H%M%S')) #@param {type: 'string'}
    ENDPOINT = REGION + '-aiplatform.googleapis.com'
    PARENT = 'projects/{}/locations/{}'.format(PROJECT_ID, REGION)
    

    Construa pedidos de API

    Os seguintes pedidos de API de linha de comandos são escritos em Python.

    Crie um estudo

    Um estudo é uma série de experiências ou testes que ajudam a otimizar os hiperparâmetros ou os parâmetros.

    No exemplo seguinte, o objetivo é maximizar y = x^2 com x no intervalo de [-10. 10]. Este exemplo tem apenas um parâmetro e usa uma função calculada para ajudar a demonstrar como usar o Vertex AI Vizier.

    param_x = {
        'parameter_id': 'x',
        'double_value_spec': {
            'min_value': -10.0,
            'max_value': 10.0
        }
    }
    
    metric_y = {
        'metric_id': 'y',
        'goal': 'MAXIMIZE'
    }
    
    study = {
        'display_name': STUDY_DISPLAY_NAME,
        'study_spec': {
          'algorithm': 'RANDOM_SEARCH',
          'parameters': [param_x],
          'metrics': [metric_y],
        }
    }
    

    Para criar o estudo através da configuração do estudo, envie o seguinte pedido através da VizierServiceClient. Use o STUDY_NAME devolvido para consultar o estudo.

    vizier_client = aiplatform.gapic.VizierServiceClient(client_options=dict(api_endpoint=ENDPOINT))
    study = vizier_client.create_study(parent=PARENT, study=study)
    STUDY_NAME = study.name
    

    Veja o seu estudo

    Depois de criar o estudo, pode encontrá-lo na Google Cloud consola, na secção Vertex AI, na página Experiências.

    Aceda à página Experiências

    Faça um estudo

    Para obter um estudo, envie o seguinte pedido.

    vizier_client.get_study({'name': STUDY_NAME})
    

    Apresentar estudos

    Para listar estudos num projeto e numa região específicos, envie o seguinte pedido:

    vizier_client.list_studies({'parent': PARENT})
    

    Receba avaliações sugeridas

    Para receber uma sugestão de avaliação do Vertex AI Vizier, crie um pedido que contenha um SUGGEST_COUNT e um CLIENT_ID. Transmita estas informações ao Vertex AI Vizier enviando o pedido.

    Crie o pedido com os seguintes comandos. Altere SUGGEST_COUNT para o número de sugestões que quer receber de cada pedido.

    suggest_response = vizier_client.suggest_trials({
        'parent': STUDY_NAME,
        'suggestion_count': SUGGEST_COUNT,
        'client_id': CLIENT_ID
        })
    

    suggest_trials inicia uma operação de longa duração para gerar a avaliação. A resposta indica que o Vertex AI Vizier está a trabalhar nas sugestões de testes.

    Para aguardar o resultado devolvido, use a função result() .

    suggest_response.result().trials
    

    O formato seguinte mostra um exemplo de um teste. Este teste sugere a utilização do valor 0.1 para o parâmetro x.

    name: "TRIAL_ID"
    state: ACTIVE
    parameters {
      parameter_id: "x"
      value {
        number_value: 0.1
      }
    }
    start_time {
      seconds: 1618011215
    }
    

    Use o TRIAL_ID da resposta anterior para obter a avaliação:

    vizier_client.get_trial({
            'name': TRIAL_ID
          })
    

    Avalie os resultados

    Depois de receber as sugestões de testes, avalie cada teste e registe cada resultado como uma medição.

    Por exemplo, se a função que está a tentar otimizar for y = x^2, então avalia a função usando o valor sugerido do teste de x. Usando um valor sugerido de 0.1, a função é avaliada como y = 0.1 * 0.1, o que resulta em 0.01.

    Adicione uma medição

    Depois de avaliar a sugestão de avaliação para obter uma medição, adicione esta medição à sua avaliação.

    Use os seguintes comandos para armazenar a medição e enviar o pedido. Neste exemplo, substitua RESULT pela medição. Se a função que está a otimizar for y = x^2 e o valor sugerido de x for 0.1, o resultado é 0.01.

    vizier_client.add_trial_measurement({
            'trial_name': TRIAL_ID,
            'measurement': {
                'metrics': [{'metric_id': 'y', 'value':RESULT }]
            }
        })
    

    Conclua uma avaliação

    Depois de adicionar todas as medições para um teste, tem de concluir o teste enviando um comando.

    Quando concluir a avaliação, pode enviar um comando para concluir apenas a avaliação ou enviar um comando para adicionar uma medição final e concluir a avaliação.

    Sem medição final

    Para concluir uma avaliação sem adicionar uma medição final, envie o seguinte pedido:

    vizier_client.complete_trial({
          'name': TRIAL_ID
      })
    
    

    Com a medição final

    Para concluir um teste e incluir uma medição final, use os seguintes comandos, substituindo RESULT pela medição final.

    vizier_client.complete_trial({
          'name': TRIAL_ID
          'final_measurement': {
            'metrics': [{'metric_id': 'y', 'value': RESULT}]
          }
      })
    
    

    Listar avaliações

    Para listar as avaliações num estudo específico, envie o seguinte pedido:

    vizier_client.list_trials({
        'parent': STUDY_NAME
    })
    

    Depois de concluir todas as avaliações pendentes, pode chamar o método suggestTrials para ver mais sugestões e repetir o processo de avaliação de avaliação.

    Liste as avaliações ideais

    O exemplo seguinte mostra list_optimal_trials, que devolve as tentativas ideais de Pareto para um estudo com vários objetivos ou as tentativas ideais para um estudo com um único objetivo:

    vizier_client.list_optimal_trials({
        'parent': STUDY_NAME
    })
    

    O que se segue?

    • Consulte a referência REST para studies.