Etichettatura e filtro delle risorse

Questa pagina spiega come etichettare le risorse e quindi utilizzare le etichette per organizzarle e filtrarle.

Panoramica delle etichette

Puoi aggiungere etichette ai job AI Platform Training per poi utilizzare queste etichette per organizzare le risorse in categorie durante la visualizzazione o il monitoraggio delle risorse.

Ad esempio, puoi etichettare i job in base al team (come engineering o research) e alla fase di sviluppo (prod o test), quindi filtrare i job in base al team e alla fase.

Le etichette sono disponibili anche nelle operations, ma derivano dalla risorsa a cui si applica l'operazione. Non puoi aggiungere o aggiornare le etichette di un'operazione.

Un'etichetta è una coppia chiave-valore, in cui sia la chiave sia il valore sono stringhe personalizzate da te fornite.

Limiti e regole:

  • Massimo 64 etichette per risorsa.
  • Massimo 63 caratteri per chiave o valore.
  • Le chiavi e i valori possono contenere lettere minuscole, caratteri numerici, trattini bassi e trattini.
  • Le chiavi devono iniziare con una lettera.
  • Sono consentiti caratteri internazionali.

Esempi:

  • Etichette che indicano team o centro di costo: team:engineering e team:research.
  • Etichette che indicano la fase di sviluppo: phase:prod e phase:test.
  • Etichette che indicano il proprietario o il contatto: owner:alice e owner:bob.

Aggiunta di etichette durante la creazione di una risorsa

Quando crei una risorsa, puoi utilizzare il comando gcloud o l'API AI Platform Training and Prediction nell'applicazione Python per aggiungere etichette ai job. Scegli una scheda di seguito per visualizzare esempi di ciascun metodo di aggiunta delle etichette:

console

Devi creare la risorsa prima di aggiungere etichette. Scopri come aggiungere e aggiornare le etichette.

gcloud

Quando crei una nuova risorsa, specifica il campo labels per associare un'etichetta alla nuova risorsa.

Per gli esempi riportati di seguito, supponiamo di voler utilizzare queste etichette: team:engineering, phase:test e owner:alice.

Per praticità, configura una variabile di ambiente contenente le etichette:

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

Il seguente codice invia un job di addestramento con le etichette specificate:

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

Configura un dizionario contenente i campi per la risorsa che vuoi creare. Includi le tue etichette come voce di dizionario che mappa le stringhe alle stringhe.

L'esempio seguente mostra come creare un job con tre etichette: team:engineering,phase:test e 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}

Invia la richiesta:

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

Aggiornamento e rimozione delle etichette

Puoi aggiornare o rimuovere le etichette su job e modelli utilizzando il comando gcloud o nell'applicazione Python. Non è possibile aggiornare le etichette sulle versioni esistenti dei modelli.

Scegli una scheda di seguito per visualizzare esempi di ciascun metodo di rimozione/aggiornamento delle etichette:

console

  1. Apri la pagina della console Google Cloud relativa alla risorsa che vuoi etichettare:

  2. Seleziona il casella di controllo accanto ai nomi delle risorse che vuoi etichettare.

  3. Tutte le modifiche delle etichette vengono eseguite nel riquadro a destra dei nomi delle risorse.

    • Per aggiungere etichette, inserisci la chiave (e, facoltativamente, valore) per l'etichetta. Per aggiungere più etichette, fai clic sul pulsante Aggiungi etichetta.

    • Per rimuovere le etichette, passa il mouse sulla destra dell'etichetta e fai clic sul pulsante Elimina visualizzata.

  4. Dopo aver modificato le etichette, fai clic su Salva per confermare le modifiche o su Ignora modifiche per ricominciare.

gcloud

Puoi utilizzare il comando gcloud per aggiornare o rimuovere le etichette su una risorsa esistente. Ad esempio, per modificare le etichette su un job, esegui il comando gcloud ai-platform jobs update con i seguenti flag:

  • --update-labels per modificare il valore delle etichette esistenti e aggiungerne di nuove. Ad esempio, per modificare il valore dell'etichetta phase in production e aggiungere una nuova etichetta status:

    gcloud ai-platform jobs update $JOB_NAME \
            --update-labels phase=production,status=deployed
    
  • --clear-labels per rimuovere tutte le etichette dal job. Se includi un flag --update-labels nello stesso comando, viene applicato prima il comando clear, seguito dal comando update. Ad esempio, per rimuovere tutte le etichette e applicare nuove etichette foo e baz:

    gcloud ai-platform jobs update $JOB_NAME \
            --clear-labels \
            --update-labels foo=bar,baz=qux
    
  • --remove-labels per rimuovere etichette specifiche dal job. Se specifichi un'etichetta che non esiste nel job, il comando remove per quell'etichetta viene ignorato. Ad esempio, per rimuovere le etichette status e visibility:

    gcloud ai-platform jobs update $JOB_NAME \
        --remove-labels=status,visibility
    

Python

Per rimuovere o aggiornare le etichette di un job esistente:

  • Ottieni il job utilizzando una richiesta GET.
  • Modifica il campo labels.
  • Aggiorna il job utilizzando una richiesta PATCH.

Il seguente esempio mostra il pattern READ-MODIFY-WRITE per l'aggiornamento delle etichette del job:

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

Utilizzo delle etichette per filtrare le risorse

Quando elenchi le risorse, puoi filtrare l'elenco per etichetta.

console

  1. Apri la pagina della console Google Cloud relativa alla risorsa che vuoi filtrare:

  2. Fai clic all'interno della Filtra per prefisso, che si trova sopra l'elenco dei job. Seleziona il prefisso Etichetta.

  3. Per completare il filtro, inserisci la chiave e il valore utilizzando la sintassi "key:value". Ad esempio, "team:engineering" o "owner:alice".

  4. Il filtro viene applicato all'elenco delle risorse e il nome del filtro viene visualizzato nel campo del filtro. Ad esempio: "Labels:owner:alice" o "Labels:team:engineering". Se necessario, puoi aggiungere più filtri.

gcloud

L'esempio seguente elenca tutti i job etichettati sia con la coppia chiave-valore team:engineering sia con la coppia chiave-valore owner:alice:

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

Python

L'esempio seguente utilizza la richiesta jobs.list per recuperare tutti i job etichettati sia con la coppia chiave-valore team:engineering sia con la coppia chiave-valore owner:alice:

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

Passaggi successivi