为了使用在线预测,您可以使用全球端点 (ml.googleapis.com
) 或某一区域端点 (REGION-ml.googleapis.com
) 与 AI Platform Training and Prediction API 进行交互。使用区域端点进行在线预测可以为您的模型提供额外的保护,使其免受其他区域服务中断带来的影响,这是因为它会将您的模型资源与版本资源与其他地区分割开来。
AI Platform Prediction 目前支持以下区域端点:
us-central1
us-east1
us-east4
us-west1
northamerica-northeast1
europe-west1
europe-west2
europe-west3
europe-west4
asia-east1
asia-northeast1
asia-southeast1
australia-southeast1
本指南比较使用区域端点与全球端点的优势和局限性。此外,本指南还介绍如何使用区域端点进行在线预测。
了解区域端点
区域端点与全球端点有以下几个主要区别:
区域端点仅支持 Compute Engine (N1) 机器类型。您不能在区域端点上使用旧版 (MLS1) 机器类型。这意味着具有使用 Compute Engine (N1) 机器类型的所有优势和局限性。 举例来说,您可以在地区端点上使用 GPU,但目前无法启用数据流(控制台)日志记录。
如需使用 Compute Engine (N1) 机器类型,您必须使用地区端点。
区域端点仅支持在线预测和 AI Explanations。部署到区域端点的模型不支持批量预测。
AI Platform Prediction 与 AI Platform Training 和 AI Platform Vizier 共享 AI Platform Training and Prediction API。请注意,地区端点目前不支持 AI Platform Training。仅
us-central1
端点支持 AI Platform Vizier。如需详细了解哪些 API 方法可用于哪些端点,请参阅 API 参考文档。
对于任何给定端点上的 Google Cloud 项目而言,AI Platform Prediction 资源名称是唯一的,但可以在不同端点上重复。举例来说,您可以在 europe-west4
端点上创建名为“hello-world”的模型,并在 us-central1
端点创建另一个名为“hello-world”的模型。
当您列出区域端点上的模型时,您只会看到在该端点上创建的模型。同样,当您列出全球端点上的模型时,您只会看到在全球端点上创建的模型。
区域端点与全球端点的区域
当在全球端点上创建模型资源时,您可以为模型指定区域。当您在此模型中创建版本并执行预测时,预测节点会在指定区域中运行。
使用区域端点时,AI Platform Prediction 会在该端点的区域中运行预测节点。不过,这种情况下,AI Platform Prediction 通过在该区域运行所有 AI Platform Prediction 基础架构来提供额外的隔离。
例如,如果您在全球端点上使用 us-east1
区域,则预测节点在 us-east1
中运行。但是,管理您的资源(路由请求;处理模型和版本创建、更新和删除等)的 AI Platform Prediction 基础架构不一定在 us-east1
中运行。另一方面,如果您使用 europe-west4
区域端点,则预测节点和所有 AI Platform Prediction 基础架构都将在 europe-west4
中运行。
使用区域端点
为了使用区域端点,您必须先在区域端点上创建模型。然后在同一端点上执行与该模型相关的所有操作(如创建模型版本和发送预测请求)。
如果您使用的是 Google Cloud 控制台,请确保在创建模型时选中使用区域端点复选框。所有其他 Google Cloud 控制台操作的执行方式都与在全球端点上执行时相同。
如果您使用的是 Google Cloud CLI,请在与模型及其子资源交互的每条命令中,将 --region
标志设为您的端点所在的区域。这包括以下内容:
gcloud ai-platform models
命令组中的每条命令。gcloud ai-platform versions
命令组中的每条命令。gcloud ai-platform operations
命令组中的所有命令(与某一版本的模型相关联的长时间运行的操作进行交互时)。gcloud ai-platform predict
命令。gcloud beta ai-platform explain
命令。
或者,您可以将 ai_platform/region
属性设置为特定区域,以确保 gcloud CLI 始终为 AI Platform Prediction 命令使用相应的区域端点,即使您未指定 --region
标志也是如此。(此配置不适用于 gcloud ai-platform operations
命令组中的命令。)
如果您直接与 AI Platform Training 和 Prediction API 交互(例如,通过使用 Python 版 Google API 客户端库),则像向全球端点进行 API 请求那样进行所有 API 请求,但使用区域端点。如需详细了解哪些 API 方法可用于区域端点,请参阅 API 参考文档。
以下示例演示如何使用区域端点创建模型,创建版本和发送在线预测请求。要使用这些示例,请将 REGION 替换为区域端点可用的区域之一:
us-central1
us-east1
us-east4
us-west1
northamerica-northeast1
europe-west1
europe-west2
europe-west3
europe-west4
asia-east1
asia-northeast1
asia-southeast1
australia-southeast1
创建模型
Google Cloud 控制台
在 Google Cloud 控制台中,转到创建模型页面,然后选择您的 Google Cloud 项目:
为您的模型命名,选中使用地区端点复选框,然后从地区下拉列表中选择要使用的端点所在的地区。
点击创建按钮。
gcloud
运行以下命令:
gcloud ai-platform models create MODEL_NAME \
--region=REGION
替换命令中的以下占位符:
- MODEL_NAME:您为模型选择的名称。
- REGION:您要使用的端点区域。
Python
本示例使用 Python 版 Google API 客户端库。使用前,您必须安装 Python 版 Google API 客户端库,并在开发环境中设置身份验证。
运行以下 Python 代码:
from google.api_core.client_options import ClientOptions
from googleapiclient import discovery
endpoint = 'https://REGION-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)
request_body = { 'name': 'MODEL_NAME' }
request = ml.projects().models().create(parent='projects/PROJECT_ID',
body=request_body)
response = request.execute()
print(response)
替换代码中的以下占位符:
- REGION:您要使用的端点区域。
- MODEL_NAME:您为模型选择的名称。
- PROJECT_ID:您的 Google Cloud 项目的 ID。
详细了解如何创建模型。
创建模型版本
此示例假定您已将兼容的模型工件上传到 Cloud Storage。
Google Cloud 控制台
使用您在上一部分中创建的模型,并遵循在 Google Cloud 控制台中创建模型版本的指南操作。
gcloud
此示例假定您已将兼容的模型工件上传到 Cloud Storage。运行以下命令:
gcloud ai-platform versions create VERSION_NAME \
--region=REGION \
--model=MODEL_NAME \
--framework=FRAMEWORK \
--machine-type=MACHINE_TYPE \
--origin=MODEL_DIRECTORY \
--python-version=3.7 \
--runtime-version=2.11
替换命令中的以下占位符:
- REGION:您在上一部分中使用的端点所在区域。
- VERSION_NAME:您为版本选择的名称。
- MODEL_NAME:您在上一部分中创建的模型的名称。
- FRAMEWORK:用于创建模型工件的框架。
- MACHINE_TYPE:Compute Engine (N1) 机器类型。
- MODEL_DIRECTORY:模型目录的 Cloud Storage URI(以“gs://”开头)。
Python
运行以下 Python 代码:
from google.api_core.client_options import ClientOptions
from googleapiclient import discovery
endpoint = 'https://REGION-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)
request_body = { 'name': 'VERSION_NAME',
'deploymentUri': 'MODEL_DIRECTORY',
'runtimeVersion': '2.11',
'machineType': 'MACHINE_TYPE',
'framework': 'FRAMEWORK',
'pythonVersion': '3.7'}
request = ml.projects().models().versions().create(
parent='projects/PROJECT_ID/models/MODEL_NAME',
body=request_body)
response = request.execute()
print(response)
替换代码中的以下占位符:
- REGION:您在上一部分中使用的端点所在区域。
- VERSION_NAME:您为版本选择的名称。
- MODEL_DIRECTORY:模型目录的 Cloud Storage URI(以“gs://”开头)。
- MACHINE_TYPE:Compute Engine (N1) 机器类型。
- FRAMEWORK:用于创建模型工件的框架。
- PROJECT_ID:您的 Google Cloud 项目的 ID。
- MODEL_NAME:您在上一部分中创建的模型的名称。
详细了解创建模型版本。
发送在线预测请求
Google Cloud 控制台
在 Google Cloud 控制台中,转到模型页面。
在地区下拉列表中,选择模型使用的端点所在的地区。点击您在上一部分中创建的模型的名称,以导航到其模型详情页面。
点击您在上一部分中创建的版本的名称,以导航到其版本详情页面。
点击测试和使用标签页。输入一个或多个输入数据实例,然后点击测试按钮以发送在线预测请求。
gcloud
此示例假定您已将预测输入保存在本地环境中以换行符分隔的 JSON 文件中。运行以下命令:
gcloud ai-platform predict \
--region=REGION \
--model=MODEL_NAME \
--version=VERSION_NAME \
--json-request=INPUT_PATH
替换命令中的以下占位符:
- REGION:您在前几部分中使用的端点所在区域。
- MODEL_NAME:您在上一部分中创建的模型的名称。
- VERSION_NAME:您在上一部分中创建的模型版本的名称。
- INPUT_PATH:本地文件系统上的路径,指向包含预测输入数据的 JSON 文件。
Python
运行以下 Python 代码:
from google.api_core.client_options import ClientOptions
from googleapiclient import discovery
endpoint = 'https://REGION-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)
request_body = { 'instances': INSTANCES }
request = ml.projects().predict(
name='projects/PROJECT_ID/models/MODEL_NAME/VERSION_NAME',
body=request_body)
response = request.execute()
print(response)
替换代码中的以下占位符:
- REGION:您在前几部分中使用的端点所在区域。
- INSTANCES:预测输入实例的列表。
- MODEL_NAME:您在上一部分中创建的模型的名称。
- VERSION_NAME:您在上一部分中创建的版本的名称。
详细了解获取在线预测。
后续步骤
- 了解区域端点和全球端点在区域可用性方面的差异。这包括 GPU 可用性方面的差异。
- 详细了解区域端点所需的 Compute Engine (N1) 机器类型。
- 了解您在创建模型和版本时可以配置的其他选项。