為資源加上標籤和篩選資源

本頁面說明如何為資源加上標籤,並使用標籤來整理及篩選資源。

標籤總覽

您可以將標籤新增至 AI Platform 資源 (工作模型模型版本),然後在查看或監控資源時,使用這些標籤將資源分門別類。

舉例來說,您可以依照團隊 (例如 engineeringresearch) 和開發階段 (prodtest) 為模型加上標籤,然後根據團隊和階段來篩選模型。

標籤功能也適用於作業,但這些標籤衍生自作業所套用的資源。您無法新增或更新作業的標籤。

標籤是鍵/值組合,其中的鍵和值是您提供的自訂字串。

限制與規則:

  • 每個資源最多可以有 64 個標籤。
  • 每個鍵或值最多只能有 63 個字元。
  • 鍵和值可以包含小寫字母、數字字元、底線和破折號。
  • 鍵的開頭必須是英文字母。
  • 允許使用國際字元。

範例:

  • 代表團隊或成本中心的標籤:team:engineeringteam:research
  • 代表開發階段的標籤:phase:prodphase:test
  • 代表擁有者或聯絡人的標籤:owner:aliceowner:bob

在建立資源時新增標籤

建立資源時,您可以使用 gcloud 指令或 Python 應用程式中的 AI Platform Training and Prediction API,將標籤加入您的工作模型模型版本。選擇下列分頁標籤即可查看每個新增標籤方法的範例:

gcloud

建立新資源時,指定 labels 欄位即可將標籤附加到新資源。

假設您要使用的標籤是 team:engineeringphase:testowner: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 1.13 \
        --region $REGION \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000

Python

設定字典,其中包含要建立的資源所使用的欄位。將標籤納入字典項目,以將字串對應到字串。

以下範例說明如何建立具有下列三個標籤的模型team:engineeringphase:testowner: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:engineeringphase:testowner: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': '1.13'}

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 應用程式中更新或移除工作模型上的標籤。您無法更新現有模型版本上的標籤。

選擇下列分頁即可查看範例,瞭解每個移除/更新標籤的方法:

gcloud

您可以使用 gcloud 指令更新或移除現有資源上的標籤。例如,如要調整模型上的標籤,請透過下列標記執行 gcloud ai-platform models update 指令:

  • --update-labels 用於修改現有標籤的值及新增標籤。例如,如要將 phase 標籤的值變更為 production,並且新增 status 標籤,請執行以下指令:

    gcloud ai-platform models update $MODEL_NAME \
            --update-labels phase=production,status=deployed
    
  • --clear-labels 用於移除模型中的所有標籤。如果您在同個指令中加入 --update-labels 標記,系統會先套用「clear」指令,再套用「update」指令。例如,如要移除所有標籤,並套用新的 foobaz 標籤,請執行以下指令:

    gcloud ai-platform models update $MODEL_NAME \
            --clear-labels \
            --update-labels foo=bar,baz=qux
    
  • --remove-labels 用於移除模型中的特定標籤。如果模型中沒有您指定的標籤,則系統會針對這個標籤忽略「remove」指令。例如,如要移除 statusvisibility 標籤,請執行以下指令:

    gcloud ai-platform models update $MODEL_NAME \
        --remove-labels=status,visibility
    

Python

如要更新或移除現有資源的標籤,以模型為例:

  • 使用 GET 要求取得模型。
  • 修改 labels 欄位。
  • 使用 PATCH 要求更新模型。

下列範例顯示用於更新模型標籤的「讀取-修改-寫入」模式:

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/ml-engine/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()

如要更新或移除現有工作的標籤:

  • 使用 GET 要求取得工作。
  • 修改 labels 欄位。
  • 使用 PATCH 要求更新工作。

下列範例顯示用於更新工作標籤的「讀取-修改-寫入」模式:

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()

使用標籤篩選資源

列出資源時,您可以依標籤篩選清單。

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()

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
TensorFlow 適用的 AI Platform