创建 Agent Platform Vizier 研究

本页面介绍如何使用 Python 向 Agent Platform Vizier 发出 API 请求。 如需了解 Agent Platform Vizier 的工作原理,请参阅 Agent Platform Vizier 概览

准备工作

  1. 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 role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Enable the Agent Platform API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  3. 为您的用户账号创建本地身份验证凭证:

    gcloud auth application-default login

    如果返回了身份验证错误,并且您使用的是外部身份提供方 (IdP),请确认您已 使用联合身份登录 gcloud CLI

  4. 安装 Python 版 Agent Platform SDK。

定义常量

如需定义常量,请运行以下命令,将 REGIONPROJECT_ID 替换为您的区域和项目 ID。创建您自己的研究名称或使用建议值。

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)

构建 API 请求

以下命令行 API 请求使用 Python 编写。

创建研究

研究是一系列实验或试验,可帮助您优化超参数或参数。

以下示例的目标是计算 y = x^2 的最大值,其中 x 的范围为 [-10. 10]。此示例只有一个参数,并使用计算函数来帮助演示如何使用 Agent Platform 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],
    }
}

如需使用研究配置创建研究,请通过 VizierServiceClient 发送以下请求。使用返回的 STUDY_NAME 来查询研究。

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

查看您的研究

创建研究后,您可以在 Google Cloud 控制台的 Gemini Enterprise Agent Platform 部分中的 实验页面上找到该研究。

转到“实验”页面

获取研究报告

如需获取研究,请发送以下请求。

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

列出研究

如需列出特定项目和区域中的研究,请发送以下请求:

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

获取建议的试验

如需从 Agent Platform Vizier 获取试验建议,请创建包含 SUGGEST_COUNTCLIENT_ID 的请求。通过发送请求,将此信息传递给 Agent Platform Vizier。

使用以下命令创建请求。将 SUGGEST_COUNT 更改为您希望从每个请求中获得的建议数量。

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

suggest_trials 会启动长时间运行的操作来生成试验。 通过其响应,您可以了解 Agent Platform Vizier 是否正在生成试验建议。

要等待返回的结果,请使用 result() 函数。

suggest_response.result().trials

以下格式显示了示例试验。此试验建议为参数 x 使用值 0.1

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

使用上一个响应中的 TRIAL_ID 获取试验:

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

评估效果

在收到试验建议后,您可以计算每个试验,并将每个结果记录为计算结果

例如,如果您尝试优化的函数为 y = x^2,则使用试验提供的 x 的建议值来计算函数。 使用建议值 0.1,函数的计算结果为 y = 0.1 * 0.1,得数为 0.01

添加计算结果

按照试验建议计算以获得计算结果后,将此计算结果添加到试验中。

使用以下命令存储测量结果并发送请求。在此示例中,将 RESULT 替换为测量值。如果您要优化的函数是 y = x^2,建议的 x 值为 0.1,则结果为 0.01

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

完成试验

在为某个试验添加所有计算结果后,您必须通过发送命令完成试验。

完成试验后,您可以发送一个命令以仅完成试验,也可以发送命令来添加最终计算结果并完成试验。

不添加最终计算结果

如需完成试验且不添加最终计算结果,请发送以下请求。

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

添加最终计算结果

如需完成试验并添加最终计算结果,请使用以下命令,并将 RESULT 替换为最终计算结果。

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

列出试验

如需列出特定研究中的试验,请发送以下请求。

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

完成所有待处理的试验后,您可以调用 suggestTrials 获得更多建议并重复试验计算过程。

列出最优试验

以下示例展示了 list_optimal_trials,它返回了多目标研究的最优试验,或单目标研究的最佳试验:

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

后续步骤

  • 查看相关研究的 REST 参考文档。