Recursos de etiquetas y filtros

En esta página, se explica cómo etiquetar tus recursos y usar las etiquetas para organizar y filtrar tus recursos.

Descripción general de las etiquetas

Puedes agregar etiquetas a tus recursos de AI Platform, como trabajos, modelos y versiones de modelo, y usarlas para organizar los recursos en categorías cuando tengas que visualizarlos o realizar actividades de supervisión.

Por ejemplo, puedes etiquetar modelos por equipo (como engineering o research) y fase de desarrollo (prod o test) y, luego, filtrar los modelos según el equipo y la fase.

Las etiquetas también están disponibles en las operaciones, pero estas etiquetas derivan del recurso al que se aplica la operación. No puedes agregar o actualizar etiquetas en una operación.

Una etiqueta es un par clave-valor en el que la clave y el valor son strings personalizadas que proporcionas.

Límites y reglas:

  • Máximo de 64 etiquetas por recurso.
  • Máximo de 63 caracteres por clave o valor.
  • Las claves y los valores pueden contener letras en minúscula, números, guiones bajos y guiones.
  • Las claves deben comenzar con una letra.
  • Se permite el uso de caracteres internacionales.

Ejemplos:

  • Etiquetas con las que se indica el equipo o el centro de costos: team:engineering y team:research.
  • Etiquetas con las que se indica la fase de desarrollo: phase:prod y phase:test.
  • Etiquetas con las que se indica el propietario o contacto: owner:alice y owner:bob.

Agrega etiquetas cuando crees un recurso

Cuando creas un recurso, puedes usar el comando de gcloud o la API de AI Platform Training and Prediction en tu aplicación de Python para agregar etiquetas a tus trabajos, modelos y versiones de modelo. Elige una pestaña a continuación a fin de ver ejemplos de cada método para agregar etiquetas:

gcloud

Cuando crees un recurso nuevo, especifica el campo labels para adjuntar una etiqueta a un recurso nuevo.

Para los ejemplos que se muestran a continuación, supongamos que deseas usar estas etiquetas: team:engineering, phase:test y owner:alice.

Para facilitarlo, configura una variable de entorno que contenga las siguientes etiquetas:

RESOURCE_LABELS="team=engineering,phase=test,owner=alice"

Con el siguiente código, se crea un modelo con las etiquetas especificadas:

REGION="us-central1"
MODEL_NAME="your_model_name"

gcloud ai-platform models create $MODEL_NAME \
        --labels $RESOURCE_LABELS \
        --regions $REGION

Con el siguiente código, se envía un trabajo de entrenamiento con las etiquetas especificadas:

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

Configura un diccionario que contenga los campos para el recurso que desees crear. Incluye tus etiquetas como una entrada del diccionario que asigna strings a strings.

En el siguiente ejemplo, se muestra cómo crear un modelo con tres etiquetas: team:engineering, phase:test y owner:alice.

requestDict = {'name': modelName,
    'description': 'A model with labels.',
    'labels': {
       'team': 'engineering',
       'phase': 'test',
       'owner': 'alice'
    }}

Envía la solicitud:

request = ml.projects().models().create(parent=projectID,
                            body=requestDict)
response = request.execute()

En el siguiente ejemplo, se muestra cómo crear un trabajo con tres etiquetas: team:engineering, phase:test y 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': '1.13'}

job_spec = {'jobId': your_job_name, 'trainingInput': training_inputs}

Envía la solicitud:

request = cloudml.projects().jobs().create(body=job_spec,
      parent=project_id)
response = request.execute()

Actualiza y quita etiquetas

Puedes actualizar o quitar etiquetas en los trabajos y modelos mediante el comando de gcloud o en tu aplicación de Python. No es posible actualizar las etiquetas de las versiones de modelo existentes.

Elige una pestaña a continuación a fin de ver ejemplos de cada método para quitar o actualizar etiquetas:

gcloud

Puedes usar el comando de gcloud para actualizar o quitar etiquetas en un recurso existente. Por ejemplo, para ajustar las etiquetas de un modelo, ejecuta el comando gcloud ai-platform models update con los siguientes marcadores:

  • --update-labels para modificar el valor de las etiquetas existentes y agregar etiquetas nuevas. Por ejemplo, ejecuta el siguiente comando para cambiar el valor de la etiqueta phase a production y agregar una etiqueta status nueva:

    gcloud ai-platform models update $MODEL_NAME \
            --update-labels phase=production,status=deployed
    
  • --clear-labels para quitar todas las etiquetas del modelo. Si incluyes un marcador --update-labels en el mismo comando, el comando clear se aplica primero, seguido del comando update. Por ejemplo, ejecuta el siguiente comando para quitar todas las etiquetas y aplicar etiquetas foo y baz nuevas:

    gcloud ai-platform models update $MODEL_NAME \
            --clear-labels \
            --update-labels foo=bar,baz=qux
    
  • --remove-labels para quitar etiquetas específicas del modelo. Si especificas una etiqueta que no existe en el modelo, se omite el comando remove para esa etiqueta. Por ejemplo, ejecuta el siguiente comando para quitar las etiquetas status y visibility:

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

Python

Para actualizar o quitar etiquetas de un recurso existente (por ejemplo, un modelo), realiza las siguientes acciones:

  • Obtén el modelo mediante una solicitud GET.
  • Modifica el campo labels.
  • Actualiza el modelo mediante una solicitud PATCH.

En la siguiente muestra, aparece el patrón LECTURA-MODIFICACIÓN-ESCRITURA para actualizar las etiquetas de un modelo:

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

Para quitar o actualizar las etiquetas de un trabajo existente, realiza las siguientes acciones:

  • Obtén el trabajo mediante una solicitud GET.
  • Modifica el campo labels.
  • Actualiza el trabajo mediante una solicitud PATCH.

En la siguiente muestra, aparece el patrón LECTURA-MODIFICACIÓN-ESCRITURA para actualizar las etiquetas de un trabajo:

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

Usa etiquetas para filtrar recursos

Cuando enumeres tus recursos, puedes filtrar la lista por etiqueta.

gcloud

En el siguiente ejemplo, se enumeran todos los modelos etiquetados con el par clave-valor team:engineering:

gcloud ai-platform models list --filter='labels.team:engineering'

En el siguiente ejemplo, se enumeran todos los trabajos etiquetados con los pares clave-valor team:engineering y owner:alice:

gcloud ai-platform jobs list \
        --filter='labels.team:engineering AND labels.owner=alice'

Python

En el siguiente ejemplo, se usa la solicitud models.list para recuperar todos los modelos etiquetados con el par clave-valor team:engineering:

request = ml.projects().models().list(parent=projectID,
      filter='labels.team=engineering')
results = request.execute()

En el siguiente ejemplo, se usa la solicitud jobs.list para recuperar todos los trabajos etiquetados con los pares clave-valor team:engineering y owner:alice:

request = ml.projects().jobs().list(parent=projectID,
      filter='labels.team=engineering AND labels.owner=alice')
results = request.execute()

¿Qué sigue?

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Cloud ML Engine para TensorFlow