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 Jobs,Modelle und Modellversionen von AI Platform Prediction mit Labels versehen und dann anhand dieser Labels 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 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
undteam:research
- Labels für Entwicklungsphasen:
phase:prod
undphase:test
- Labels für Inhaber oder Kontakte:
owner:alice
undowner:bob
Labels beim Erstellen einer Ressource hinzufügen
Beim Erstellen einer Ressource können Sie den gcloud
-Befehl oder die AI Platform Training and Prediction API in Ihrer Python-Anwendung verwenden, um den Jobs, Modellen und Modellversionen Labels hinzuzufügen. Über die Tabs unten können Sie sich Beispiele für die verschiedenen Methoden zum Hinzufügen von Labels ansehen:
Konsole
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 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 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.
Das folgende Beispiel zeigt, wie Sie ein Modell mit drei Labels erstellen: 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 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:
Konsole
Öffnen Sie die Google Cloud Console-Seite für die Ressource, die Sie mit einem Label versehen möchten:
Rufen Sie in der Google Cloud Console unter "AI Platform Prediction" die Seite Jobs auf, um Labels zu Jobs hinzuzufügen.
Rufen Sie in der Cloud Console die AI Platform Prediction-Seite Modelle auf, um Modellen Labels hinzuzufügen.
Aktivieren Sie
die Kästchen neben den Namen der Ressourcen, die Sie mit einem Label versehen möchten.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.
Bewegen Sie zum Entfernen von Labels den Mauszeiger auf die rechte Seite des Labels und klicken Sie auf
das eingeblendete Löschen-Symbol.
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 Labelsphase
inproduction
ändern und ein neues Labelstatus
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 Labelsfoo
undbaz
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 Labelsstatus
undvisibility
:gcloud ai-platform jobs update $JOB_NAME \ --remove-labels=status,visibility
Python
So aktualisieren oder entfernen Sie Labels einer vorhandenen Ressource, z. B. eines Modells:
- Rufen Sie das Modell mit einer
GET
-Anfrage ab. - Ändern Sie das Feld
labels
. - Aktualisieren Sie das Modell mit einer
PATCH
-Anfrage.
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/ai-platform/prediction/docs/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 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.
Konsole
Öffnen Sie die Google Cloud Console-Seite für die Ressource, die Sie filtern möchten:
Rufen Sie in der Google Cloud Console die AI Platform Prediction-Seite Jobs auf, um Jobs zu filtern.
Rufen Sie in der Google Cloud Console die AI Platform Prediction-Seite Modelle auf, um Modelle zu filtern.
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.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".
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 Modelle aufgelistet, die mit dem Schlüssel/Wert-Paar team:engineering
gekennzeichnet sind:
gcloud ai-platform models list --filter='labels.team:engineering'
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 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 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
- Mehr über die Verwaltung von Modellen und Jobs erfahren