Ressourcen mit Labels versehen und filtern

Auf dieser Seite wird erläutert, wie Sie Ihre Ressourcen mit Labels versehen und anschließend mithilfe der Labels Ihre Ressourcen organisieren und filtern.

Übersicht über Labels

Sie können die AI Platform Training-Jobs mit Labels versehen und dann anhand dieser Labels Ressourcen kategorisieren, wenn Sie die Ressourcen ansehen oder beobachten.

Sie können beispielsweise Jobs nach Team (z. B. engineering oder research) und Entwicklungsphase (prod oder test) mit Labels versehen und dann die Jobs nach Team und Phase filtern.

Labels sind operations. Diese Labels werden jedoch von der Ressource abgeleitet, auf die der Vorgang angewendet wird. Sie können einem Vorgang keine Labels hinzufügen oder vorhandene Labels aktualisieren.

Ein Label ist ein Schlüssel/Wert-Paar, bei dem sowohl der Schlüssel als auch der Wert von Ihnen angegebene benutzerdefinierte Strings sind.

Limits und Regeln:

  • Maximal 64 Labels pro Ressource
  • Maximal 63 Zeichen pro Schlüssel oder Wert
  • Schlüssel und Werte dürfen Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten
  • Schlüssel müssen mit einem Buchstaben beginnen
  • Internationale Zeichen sind zulässig

Beispiele:

  • Labels für Teams oder Kostenstellen: team:engineering und team:research
  • Labels für Entwicklungsphasen: phase:prod und phase:test
  • Labels für Inhaber oder Kontakte: owner:alice und owner:bob

Labels beim Erstellen einer Ressource hinzufügen

Beim Erstellen einer Ressource können Sie den gcloud-Befehl oder die AI Platform Training und Prediction API in Ihrer Python-Anwendung verwenden, um den Jobs Labels hinzuzufügen. Über die Tabs unten können Sie sich Beispiele für die verschiedenen Methoden zum Hinzufügen von Labels ansehen:

Console

Sie müssen die Ressource erstellen, bevor Sie Labels hinzufügen können. Weitere Informationen finden Sie unter Labels hinzufügen und aktualisieren.

gcloud

Beim Erstellen einer neuen Ressource geben Sie das Feld labels an, um der neuen Ressource ein Label hinzuzufügen.

Für die folgenden Beispiele sollen diese drei Labels verwendet werden: team:engineering, phase:test und owner:alice.

Zur Vereinfachung konfigurieren Sie eine Umgebungsvariable, die die Labels enthält:

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

Der folgende Code sendet einen Trainingsjob mit den angegebenen Labels:

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

Richten Sie ein Wörterbuch mit den Feldern für die Ressource ein, die Sie erstellen möchten. Fügen Sie Ihre Labels als Wörterbucheintrag ein, der die Strings einander zuordnet.

Im folgenden Beispiel wird das Erstellen eines Jobs mit drei Labels erläutert: team:engineering, phase:test und 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}

Senden Sie diese Anfrage:

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

Labels aktualisieren und entfernen

Sie können Labels von Jobs und Modellen mit dem gcloud-Befehl oder in der Python-Anwendung aktualisieren oder entfernen. Labels für vorhandene Modellversionen können nicht aktualisiert werden.

Über den Tab unten können Sie sich Beispiele für jede der Methoden zum Entfernen/Aktualisieren von Labels ansehen:

Console

  1. Öffnen Sie die Google Cloud Console-Seite für die Ressource, die Sie mit einem Label versehen möchten:

  2. Wählen Sie das Symbol neben den Namen der Ressourcen, die Sie mit einem Label versehen möchten.

  3. Die gesamte Labelbearbeitung erfolgt im Feld rechts neben den Ressourcennamen.

    • Zum Hinzufügen eines neuen Labels geben Sie den Schlüssel (und optional den Wert) für das Label ein. Klicken Sie zum Hinzufügen von mehreren Labels auf die Schaltfläche Label hinzufügen.

    • Um ein Label zu entfernen, bewegen Sie den Mauszeiger auf die rechte Seite des Labels und klicken Sie auf das eingeblendete Löschen-Symbol.

  4. Klicken Sie nach der Bearbeitung der Labels auf Speichern, um die Änderungen zu bestätigen oder auf Änderungen verwerfen, um von vorne zu beginnen.

gcloud

Sie können den Befehl gcloud verwenden, um Labels für eine vorhandene Ressource zu aktualisieren oder zu entfernen. Wenn Sie beispielsweise die Labels eines Jobs anpassen möchten, führen Sie den Befehl gcloud ai-platform jobs update mit den folgenden Flags aus:

  • Mit --update-labels ändern Sie den Wert vorhandener Labels und fügen neue Labels hinzu. So können Sie beispielsweise den Wert des Labels phase in production ändern und ein neues Label status hinzufügen:

    gcloud ai-platform jobs update $JOB_NAME \
            --update-labels phase=production,status=deployed
    
  • Mit --clear-labels entfernen Sie alle Labels des Jobs. Wenn Sie in diesen Befehl das Flag --update-labels einfügen, wird zuerst der Befehl clear und dann der Befehl updateangewendet. So entfernen Sie beispielsweise alle Labels und wenden die neuen Labels foo und baz an:

    gcloud ai-platform jobs update $JOB_NAME \
            --clear-labels \
            --update-labels foo=bar,baz=qux
    
  • Mit --remove-labels entfernen Sie bestimmte Labels des Jobs. Wenn Sie ein Label angeben, das der Job nicht hat, wird der Befehl remove für dieses Label ignoriert. So entfernen Sie beispielsweise die Labels status und visibility:

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

Python

So aktualisieren Sie Labels eines vorhandenen Jobs oder entfernen sie:

  • Rufen Sie den Job mit einer GET-Anfrage ab.
  • Ändern Sie das Feld labels.
  • Aktualisieren Sie den Job mit einer PATCH-Anfrage.

Das folgende Beispiel zeigt das READ-MODIFY-WRITE-Muster zum Aktualisieren der Labels eines Jobs:

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

Labels zum Filtern von Ressourcen verwenden

Wenn Sie Ihre Ressourcen auflisten, können Sie die Liste nach Labels filtern.

Console

  1. Öffnen Sie die Google Cloud Console-Seite für die Ressource, die Sie filtern möchten:

  2. Klicken Sie in das Feld Nach Präfix filtern. Dieses Feld befindet sich über der Liste der Jobs. Wählen Sie das Präfix Label aus.

  3. Geben Sie zur Vervollständigung des Filters den Schlüssel und den Wert mithilfe der Syntax "key:value" ein. Beispiel: "team:engineering" oder "owner:alice".

  4. Der Filter wird auf die Ressourcenliste angewendet. Der Name des Filters wird im Filterfeld angezeigt. Beispiel: "Labels:owner:alice" oder "Labels:team:engineering". Bei Bedarf können Sie mehrere Filter hinzufügen.

gcloud

In diesem Beispiel werden alle Jobs mit dem Schlüssel/Wert-Paar team:engineering und dem Schlüssel/Wert-Paar owner:alice als Label abgerufen:

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

Python

Im folgenden Beispiel wird die Anfrage jobs.list verwendet, um alle Jobs mit dem Schlüssel/Wert-Paar team:engineering und dem Schlüssel/Wert-Paar owner:alice als Label abzurufen:

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

Nächste Schritte