Ressourcen mit Labels versehen und danach 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-Ressourcen (Jobs, Modelle und Modellversionen) mit Labels versehen und dann anhand dieser Labels kategorisieren, wenn Sie die Ressourcen ansehen oder überwachen.

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

Labels sind auch für Vorgänge verfügbar. 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 Befehl gcloud oder die AI Platform Training and Prediction API in Ihrer Python-Anwendung verwenden, damit Sie den Jobs, Modellen und Modellversionen Labels hinzufügen können. Wählen Sie unten einen Tab aus und sehen Sie sich Beispiele für jede der Methoden zum Hinzufügen von Labels an:

gcloud

Geben Sie beim Erstellen einer neuen Ressource 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.

Konfigurieren Sie zur Vereinfachung eine Umgebungsvariable, die die Labels enthält:

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

Der folgende Code erstellt ein Modell mit den angegebenen Labels:

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

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

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 1.13 \
        --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 ein Modell mit drei Labels erstellt: team:engineering, phase:test und owner:alice.

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

Senden Sie diese Anfrage:

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

Im folgenden Beispiel wird ein Job mit drei Labels erstellt: 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': '1.13'}

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 Befehl gcloud oder in der Python-Anwendung aktualisieren oder entfernen. Labels für vorhandene Modellversionen können nicht aktualisiert werden.

Wählen Sie unten einen Tab aus und sehen Sie sich Beispiele für jede der Methoden zum Entfernen/Aktualisieren von Labels an:

gcloud

Mit dem Befehl gcloud können Sie Labels einer vorhandenen Ressource aktualisieren oder entfernen. Wenn Sie beispielsweise die Beschriftungen eines Modells anpassen möchten, führen Sie den Befehl gcloud ai-platform models update mit den folgenden Flags aus:

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

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

    gcloud ai-platform models update $MODEL_NAME \
            --clear-labels \
            --update-labels foo=bar,baz=qux
    
  • Mit --remove-labels entfernen Sie bestimmte Labels aus dem Modell. Wenn Sie ein Label angeben, das im Modell nicht vorhanden ist, wird der Befehl remove für dieses Label ignoriert. So entfernen Sie beispielsweise die Labels status und visibility:

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

Python

So aktualisieren oder entfernen Sie Labels einer vorhandenen Ressource, z. B. eines Modells:

  • Rufen Sie das Modell mit der Anfrage GET ab.
  • Ändern Sie das Feld labels
  • Aktualisieren Sie das Modell mit der Anfrage PATCH.

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

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

So aktualisieren Sie Labels eines vorhandenen Jobs oder entfernen sie:

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

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.

gcloud

Das folgende Beispiel listet alle Modelle mit dem Schlüssel/Wert-Paar team:engineering auf:

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

Das folgende Beispiel listet alle Jobs mit dem Schlüssel/Wert-Paar team:engineering und dem Schlüssel/Wert-Paar owner:alice auf:

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

Python

Im folgenden Beispiel werden mit der Anfrage models.list alle Modelle mit dem Schlüssel/Wert-Paar team:engineering als Label abgerufen:

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

Im folgenden Beispiel werden mit der Anfrage jobs.list alle Jobs mit dem Schlüssel/Wert-Paar team:engineering und dem Schlüssel/Wert-Paar owner:alice als Label abgerufen:

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

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

AI Platform für scikit-learn und XGBoost