本页面介绍如何标记资源,然后使用标签来组织和过滤资源。
标签概览
您可以为 AI Platform Prediction 作业、模型和模型版本添加标签,然后在查看或监控资源时使用这些标签对资源进行分类。
例如,您可以按团队(如 engineering
或 research
)和开发阶段(prod
或 test
)为作业添加标签,然后根据团队和阶段过滤作业。
此外,操作也可以使用标签,但这些标签来自操作所应用的资源。您无法为操作添加或更新标签。
标签是一个键值对,其中的键和值都是您提供的自定义字符串。
限制和规则:
- 每个资源最多有 64 个标签。
- 每个键或值最多含 63 个字符。
- 键和值可以包含小写字母、数字字符、下划线和短划线。
- 键必须以字母开头。
- 允许使用国际字符。
示例:
- 指示团队或费用中心的标签:
team:engineering
和team:research
。 - 指示开发阶段的标签:
phase:prod
和phase:test
。 - 指示所有者或联系人的标签:
owner:alice
和owner:bob
。
在创建资源时添加标签
在创建资源时,您可以使用 gcloud
命令或 Python 应用中的 AI Platform Training and Prediction API 为作业、模型和模型版本添加标签。您可以选择下面的标签页,以查看添加标签的每种方法的示例:
控制台
您必须先创建资源,然后才能添加标签。请参阅如何添加和更新标签。
gcloud
创建新资源时,请指定 labels
字段,以将标签附加到新资源。
以下示例假设您希望使用以下标签:team:engineering
、phase:test
和 owner:alice
。
为方便起见,请设置包含标签的环境变量:
RESOURCE_LABELS="team=engineering,phase=test,owner=alice"
以下代码用于创建带指定标签的模型:
REGION="us-central1"
MODEL_NAME="your_model_name"
gcloud ai-platform models create $MODEL_NAME \
--labels $RESOURCE_LABELS \
--regions $REGION
以下代码用于提交带指定标签的训练作业:
JOB_NAME="your_job_name"
TRAINER_PACKAGE_PATH="/path/to/your/application/sources"
MAIN_TRAINER_MODULE="trainer.task"
JOB_DIR="gs://your/job/output/path"
TRAIN_DATA="gs://your/training/data/path"
EVAL_DATA="gs://your/eval/data/path"
gcloud ai-platform jobs submit training $JOB_NAME \
--labels $RESOURCE_LABELS \
--scale-tier basic \
--package-path $TRAINER_PACKAGE_PATH \
--module-name $MAIN_TRAINER_MODULE \
--job-dir $JOB_DIR \
--runtime-version 2.11 \
--region $REGION \
-- \
--train-files $TRAIN_DATA \
--eval-files $EVAL_DATA \
--train-steps 1000
Python
设置一个字典,其中包含您要创建的资源的字段。将标签添加为字典条目,以将字符串映射到字符串。
以下示例展示了如何创建带有以下三个标签的模型:team:engineering
、phase:test
和 owner:alice
。
requestDict = {'name': modelName,
'description': 'A model with labels.',
'labels': {
'team': 'engineering',
'phase': 'test',
'owner': 'alice'
}}
发送请求:
request = ml.projects().models().create(parent=projectID,
body=requestDict)
response = request.execute()
以下示例展示了如何创建带有以下三个标签的作业:team:engineering
、phase:test
和 owner:alice
。
training_inputs = {'scaleTier': 'BASIC',
'packageUris': ['gs://your/trainer/path/package-0.0.0.tar.gz'],
'pythonModule': 'trainer.task'
'args': ['--arg1', 'value1', '--arg2', 'value2'],
'region': 'us-central1',
'labels': {
'team': 'engineering',
'phase': 'test',
'owner': 'alice'
},
'jobDir': 'gs://your/training/job/directory',
'runtimeVersion': '2.11'}
job_spec = {'jobId': your_job_name, 'trainingInput': training_inputs}
发送请求:
request = cloudml.projects().jobs().create(body=job_spec,
parent=project_id)
response = request.execute()
更新和移除标签
您可以使用 gcloud
命令或在 Python 应用中更新或移除作业和模型的标签。无法更新现有模型版本的标签。
选择下面的标签页,查看移除/更新标签的每种方法的示例:
控制台
打开 Google Cloud 控制台页面,找到您要添加标签的资源:
如需为作业添加标签,请在 Google Cloud 控制台中打开 AI Platform Prediction 作业页面。
如需为模型添加标签,请在 Google Cloud 控制台中打开 AI Platform Prediction 模型页面。
选中
您要添加标签的资源名称旁边的复选框。所有标签修改都在资源名称右侧的面板中进行。
如需添加标签,请输入标签的键(也可以根据需要同时输入值)。如需添加多个标签,请点击添加标签按钮。
如需移除标签,请将鼠标悬停在标签的右侧,然后点击
显示的删除图标。
修改标签后,点击保存确认更改,或放弃更改重新开始。
gcloud
您可以使用 gcloud
命令更新或删除现有资源的标签。例如,如需调整作业上的标签,请运行 gcloud ai-platform jobs update 命令并添加以下标志:
--update-labels
修改现有标签的值并添加新标签。例如,运行以下命令可将phase
标签的值更改为production
并添加新的status
标签:gcloud ai-platform jobs update $JOB_NAME \ --update-labels phase=production,status=deployed
--clear-labels
,用于从作业中移除所有标签。如果您在该命令中添加了--update-labels
标志,则先应用 clear 命令,然后再执行 update 命令。例如,运行以下命令可移除所有标签并应用新的foo
和baz
标签:gcloud ai-platform jobs update $JOB_NAME \ --clear-labels \ --update-labels foo=bar,baz=qux
--remove-labels
,用于从作业中移除特定标签。如果指定作业上不存在的标签,系统会忽略针对该标签的 remove 命令。例如,运行以下命令可以移除status
和visibility
标签:gcloud ai-platform jobs update $JOB_NAME \ --remove-labels=status,visibility
Python
如需更新或移除模型等现有资源的标签,请执行以下操作:
以下示例展示用于更新模型标签的 READ-MODIFY-WRITE 模式:
existingModel = ml.projects().models().get(name=fullModelName).execute()
etag = existingModel['etag']
updatedModel = {
'labels': {
'phase': 'prod',
'team': 'research'
},
'etag': etag
}
# projects.models.patch API returns a long-running operation object
# instead of a model object. See
# https://cloud.google.com/ai-platform/prediction/docs/reference/rest/v1/projects.models/patch
updateModelRequest = ml.projects().models().patch(name=fullModelName,
body=updatedModel, updateMask='labels,etag')
updateModelOperation = updateModelRequest.execute()
# You can choose appropriate ways to poll the operation.
delay = 1
while not updateModelOperation['done']:
time.sleep(delay)
delay *= 2
updateModelOperation = ml.projects().operations().get(name=updateModelOperation['name'])
updatedModel = ml.projects().models().get(name=fullModelName).execute()
如需移除或更新现有作业的标签,请执行以下操作:
以下示例展示了用于更新作业标签的 READ-MODIFY-WRITE 模式:
existingJob = ml.projects().jobs().get(jobId=jobId).execute()
etag = existingJob['etag']
updatedJob = {
'labels': {
'phase': 'prod',
'team': 'research'
},
'etag': etag
}
updateJobRequest = ml.projects().jobs().patch(name=jobId,
body=updatedJob, updateMask='labels,etag')
updatedJob = updateJobRequest.execute()
使用标签过滤资源
在列出资源时,您可以按标签过滤列表。
控制台
打开 Google Cloud 控制台页面,找到您要过滤的资源:
如需过滤作业,请在 Google Cloud 控制台中打开 AI Platform Prediction 作业页面。
如需过滤模型,请在 Google Cloud 控制台中打开 AI Platform Prediction 模型页面。
点击
按前缀过滤字段,该字段位于作业列表上方。选择标签前缀。请使用语法“key:value”输入相应的键和值,以完成过滤。例如,“team:engineering”或“owner:alice”。
过滤器将应用到资源列表,并且过滤器的名称将显示在过滤器字段中。例如,“Labels:owner:alice”或“Labels:team:engineering”。如果需要,您可以添加多个过滤器。
gcloud
以下示例列出了带有键值对 team:engineering
标签的所有模型:
gcloud ai-platform models list --filter='labels.team:engineering'
以下示例列出了同时带有键值对 team:engineering
和 owner:alice
标签的所有作业:
gcloud ai-platform jobs list \
--filter='labels.team:engineering AND labels.owner=alice'
Python
以下示例使用 models.list 请求检索带有键值对 team:engineering
标签的所有模型:
request = ml.projects().models().list(parent=projectID,
filter='labels.team=engineering')
results = request.execute()
以下示例使用 jobs.list 请求检索带有键值对 team:engineering
和 owner:alice
标签的所有作业:
request = ml.projects().jobs().list(parent=projectID,
filter='labels.team=engineering AND labels.owner=alice')
results = request.execute()
后续步骤
- 详细了解如何管理模型和作业。