Crear estudios de Vertex AI Vizier

En esta página se describe cómo hacer solicitudes a la API Vertex AI Vizier mediante Python. Para obtener información sobre cómo funciona Vertex AI Vizier, consulta la información general sobre Vertex AI Vizier.

Antes de empezar

  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. Instala el SDK de Vertex AI para Python.
  8. Definir constantes

    Para definir constantes, ejecuta los siguientes comandos y sustituye REGION y PROJECT_ID por tu región y el ID de tu proyecto. Crea el nombre del estudio o usa los 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)
    

    Crear solicitudes a la API

    Las siguientes solicitudes de API de línea de comandos están escritas en Python.

    Crear un estudio

    Un estudio es una serie de experimentos o pruebas que te ayudan a optimizar tus hiperparámetros o parámetros.

    En el siguiente ejemplo, el objetivo es maximizar y = x^2 con x en el intervalo [-10. 10]. Este ejemplo solo tiene un parámetro y usa una función calculada para mostrar cómo usar 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 crear el estudio con la configuración que has definido, envía la siguiente solicitud a través de VizierServiceClient. Usa el STUDY_NAME devuelto para consultar el estudio.

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

    Ver tu estudio

    Una vez que hayas creado el estudio, podrás encontrarlo en la consola, en la sección Vertex AI, en la página Experimentos.Google Cloud

    Ir a la página Experimentos

    Ver un estudio

    Para obtener un estudio, envía la siguiente solicitud.

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

    Mostrar estudios

    Para enumerar los estudios de un proyecto y una región concretos, envía la siguiente solicitud:

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

    Obtener pruebas sugeridas

    Para obtener una sugerencia de prueba de Vertex AI Vizier, crea una solicitud que contenga un SUGGEST_COUNT y un CLIENT_ID. Envía esta información a Vertex AI Vizier enviando la solicitud.

    Crea la solicitud con los siguientes comandos. Cambia SUGGEST_COUNT por el número de sugerencias que quieras obtener de cada solicitud.

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

    suggest_trials inicia una operación de larga duración para generar la prueba. La respuesta te indica que Vertex AI Vizier está trabajando en las sugerencias de prueba.

    Para esperar el resultado devuelto, usa la función result() .

    suggest_response.result().trials
    

    En el siguiente formato se muestra un ejemplo de prueba. Esta prueba sugiere usar el valor 0.1 para el parámetro x.

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

    Usa el TRIAL_ID de la respuesta anterior para obtener la prueba:

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

    Evaluar los resultados

    Después de recibir las sugerencias de pruebas, evalúa cada prueba y registra cada resultado como una medición.

    Por ejemplo, si la función que quiere optimizar es y = x^2, evalúe la función con el valor sugerido de x de la prueba. Si se usa el valor sugerido 0.1, la función da como resultado y = 0.1 * 0.1, lo que da como resultado 0.01.

    Añadir una medición

    Después de evaluar la sugerencia de prueba para obtener una medición, añádela a tu prueba.

    Usa los siguientes comandos para almacenar la medición y enviar la solicitud. En este ejemplo, sustituya RESULT por la medición. Si la función que estás optimizando es y = x^2 y el valor sugerido de x es 0.1, el resultado es 0.01.

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

    Completar una prueba

    Una vez que hayas añadido todas las mediciones de una prueba, debes completarla enviando un comando.

    Cuando finalices la prueba, puedes enviar un comando para completarla o para añadir una medición final y completarla.

    Sin medición final

    Para completar una prueba sin añadir una medición final, envía la siguiente solicitud:

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

    Con la medición final

    Para completar una prueba e incluir una medición final, usa los siguientes comandos y sustituye RESULT por la medición final.

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

    Mostrar pruebas

    Para enumerar las pruebas de un estudio específico, envíe la siguiente solicitud:

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

    Cuando hayas completado todas las pruebas pendientes, puedes llamar a suggestTrials para obtener más sugerencias y repetir el proceso de evaluación de la prueba.

    Mostrar pruebas óptimas

    En el siguiente ejemplo se muestra list_optimal_trials, que devuelve las pruebas óptimas de Pareto de un estudio con varios objetivos o las pruebas óptimas de un estudio con un solo objetivo:

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

    Siguientes pasos

    • Consulta la referencia de REST para estudios.