In diesem Dokument wird erläutert, wie Sie Compute Engine-Reservierungen verwenden, um mit hoher Wahrscheinlichkeit sicherzustellen, dass Ihre Vorhersagejobs die erforderlichen VM-Ressourcen zum Ausführen haben.
Reservierungen sind eine Compute Engine-Funktion. So sorgen Sie dafür, dass Sie die Ressourcen haben, um VMs mit derselben Hardware (Arbeitsspeicher und vCPUs) und optionalen Ressourcen (GPUs und lokale SSDs) zu erstellen, wann immer Sie sie benötigen.
Wenn Sie eine Reservierung erstellen, prüft die Compute Engine, ob die angeforderte Kapazität in der angegebenen Zone verfügbar ist. In diesem Fall reserviert Compute Engine die Ressourcen, erstellt die Reservierung und führt folgende Schritte aus:
- Sie können die reservierten Ressourcen sofort nutzen. Sie bleiben so lange verfügbar, bis Sie die Reservierung löschen.
- Die reservierten Ressourcen werden Ihnen zu denselben On-Demand-Preisen wie laufende VMs berechnet, einschließlich aller anwendbaren Rabatte, bis die Reservierung gelöscht wird. Für eine VM, die eine Reservierung nutzt, fallen keine separaten Gebühren an. Weitere Informationen finden Sie unter Zonale Reservierungen von Compute Engine-Ressourcen.
Beschränkungen und Anforderungen
Beachten Sie die folgenden Einschränkungen und Anforderungen, wenn Sie Compute Engine-Reservierungen mit Vertex AI verwenden:
- Vertex AI kann nur Reservierungen von VMs mit angeschlossenen GPUs nutzen.
- Vertex AI kann keine Reservierungen von VMs auflösen, die lokale SSDs haben, die manuell angeschlossen sind.
- Die Verwendung von Compute Engine-Reservierungen mit Vertex AI wird nur für benutzerdefiniertes Training und Vorhersagen unterstützt.
- Die VM-Attribute einer Reservierung müssen genau mit Ihrer Vertex AI-Arbeitslast übereinstimmen, damit die Reservierung verwendet werden kann. Wenn für eine Reservierung beispielsweise der Maschinentyp
a2-ultragpu-8g
angegeben ist, kann die Vertex AI-Arbeitslast die Reservierung nur dann nutzen, wenn sie ebenfalls den Maschinentypa2-ultragpu-8g
verwendet. Weitere Informationen zu den Anforderungen - Wenn Sie eine freigegebene Reservierung von GPU-VMs nutzen möchten, müssen Sie sie über das Inhaberprojekt oder ein Nutzerprojekt nutzen, für das die Reservierung freigegeben ist. Weitere Informationen finden Sie unter Funktionsweise freigegebener Reservierungen.
- Um regelmäßige Updates Ihrer Vertex AI-Bereitstellungen zu ermöglichen, empfehlen wir, die Anzahl der VMs je nach Reservierungstyp Ihres
DeployedModel
um mehr als die Gesamtzahl der Repliken zu erhöhen:SPECIFIC_RESERVATION
: Es muss mindestens eine zusätzliche VM angegeben werden. Wir empfehlen 10% (mindestens 1). Für bereitgestellte Modelle mitSPECIFIC_RESERVATION
werden garantiert nur VMs aus der Reservierung genutzt. Vertex AI kann keine Updates ausführen, wenn keine zusätzliche VM vorhanden ist.ANY
:- Es sind keine zusätzlichen VMs erforderlich, da bereitgestellte Modelle mit
ANY
-Reservierung On-Demand-VMs verwenden, wenn die Reservierungskapazität nicht ausreicht. Ohne zusätzliche VMs wird Ihre Reservierung nach einem Upgrade jedoch möglicherweise nicht vollständig genutzt. Angenommen, Sie haben eine Reservierung mit 40 VMs und stellen mit dieser Reservierung ein Modell mit 40 Repliken bereit. Bei der Erstimplementierung werden alle 40 VMs in der Reservierung vomDeployedModel
verwendet. Nach einem Upgrade stammen nur 36 VMs aus der Reservierung und 4 VMs sind On-Demand-VMs. - Wenn Sie die Nutzung innerhalb der Reservierung halten möchten, empfehlen wir mindestens eine zusätzliche VM für jede
DeployedModel
oderDeploymentResourcePool
, die die Reservierung verwendet. Wenn die Gesamtzahl der VMs desselben Typs in IhrenANY
-Reservierungen weniger als 50 beträgt, empfehlen wir 10 % mehr (mindestens 1). Bei mehr als 50 Sekunden empfehlen wir 25% mehr. Beispiel:- Wenn Sie Modelle mit 40 A3-VMs bereitstellen möchten, können Sie eine A3-Reservierung mit 44 VMs oder zwei A3-Reservierungen haben: Reservierung X mit 30 VMs und Reservierung Y mit 14 VMs (insgesamt 44). Dasselbe gilt für andere Anzahlen von Reservierungen, sofern sie alle für Vertex AI freigegeben sind und die Gesamtzahl der VMs in diesen Reservierungen mindestens 44 beträgt.
- Wenn Sie Modelle mit 100 A3-VMs bereitstellen möchten, sollte die Gesamtzahl der VMs in allen A3-Reservierungen, die für Vertex AI freigegeben sind, mindestens 125 betragen.
- Wenn Sie zwei Modelle mit 10 VMs bereitstellen möchten, muss die Gesamtzahl der VMs in allen A3-Reservierungen, die für Vertex AI freigegeben sind, mindestens 12 betragen. Die Anzahl der VMs ist weniger als 50, aber die Anzahl der zusätzlichen VMs ist 2 (1 pro
DeployedModel
).
- Wenn Sie eine
SPECIFIC_RESERVATION
-Reservierung nutzen möchten, weisen Sie dem Vertex AI-Dienstkonto im Projekt, zu dem die Reservierungen gehören (service-${PROJECT_NUMBER}@gcp-sa-aiplatform.iam.gserviceaccount.com
, wobei PROJECT_NUMBER die Projektnummer des Projekts ist, in dem die Reservierung genutzt wird), die IAM-Rolle Compute Viewer zu. -
Die folgenden Dienste und Funktionen werden nicht unterstützt, wenn Sie Compute Engine-Reservierungen mit Vertex AI-Vorhersagen verwenden:
- Compliance mit dem Federal Risk and Authorization Management Program (FedRAMP)
Abrechnung
Wenn Sie Compute Engine-Reservierungen verwenden, werden Ihnen Folgendes in Rechnung gestellt:
- Compute Engine-Preise für die Compute Engine-Ressourcen, einschließlich aller anwendbaren Rabatte für zugesicherte Nutzung (Committed Use Discount, CUD). Siehe Compute Engine-Preise.
- Zusätzlich zur Nutzung der Infrastruktur fallen die in den nachstehenden Tabellen aufgeführten Gebühren für die Verwaltung von Vertex AI Prediction an. Weitere Informationen finden Sie unter Preise für Vorhersagen.
Hinweise
- Informationen zu den Anforderungen und Einschränkungen für Reservierungen
- Informationen zu den Kontingentanforderungen und -einschränkungen für freigegebene Reservierungen.
Verbrauch einer Reservierung zulassen
Bevor Sie eine Reservierung von GPU-VMs nutzen, müssen Sie die Freigaberichtlinie festlegen, damit Vertex AI die Reservierung nutzen kann. Verwenden Sie dazu eine der folgenden Methoden:
- Nutzung beim Erstellen einer Reservierung zulassen
- Verbrauch in einer bestehenden Reservierung zulassen
Nutzung beim Erstellen einer Reservierung zulassen
Wenn Sie eine Reservierung für ein einzelnes Projekt oder eine freigegebene Reservierung von GPU-VMs erstellen, können Sie Vertex AI wie unten beschrieben erlauben, die Reservierung zu nutzen:
- Wenn Sie die Google Cloud Console verwenden, wählen Sie im Bereich Google Cloud-Dienste die Option Reservierung teilen aus.
- Wenn Sie die Google Cloud CLI verwenden, fügen Sie das Flag
--reservation-sharing-policy
mit dem WertALLOW_ALL
hinzu. - Wenn Sie die REST API verwenden, geben Sie im Anfragetext das Feld
serviceShareType
mit dem WertALLOW_ALL
an.
Nutzung in einer bestehenden Reservierung zulassen
Wenn Sie Vertex AI erlauben möchten, eine vorhandene Reservierung von GPU-VMs zu nutzen, lesen Sie den Hilfeartikel Freigaberichtlinie einer Reservierung ändern.Prüfen, ob eine Reservierung in Anspruch genommen wurde
Informationen dazu, wie Sie prüfen, ob die Reservierung genutzt wird, finden Sie in der Compute Engine-Dokumentation unter Nutzung von Reservierungen prüfen.Vorhersagen mithilfe einer Reservierung abrufen
Wenn Sie eine Modellbereitstellung erstellen möchten, die eine Compute Engine-Reservierung von GPU-VMs nutzt, verwenden Sie die REST API oder das Vertex AI SDK für Python.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- LOCATION_ID: Die Region, in der Sie Vertex AI verwenden.
- PROJECT_ID: das Projekt, in dem die Reservierung erstellt wurde. Wenn Sie eine freigegebene Reservierung aus einem anderen Projekt nutzen möchten, müssen Sie die Reservierung für dieses Projekt freigeben. Weitere Informationen finden Sie unter Nutzerprojekte in einer freigegebenen Reservierung ändern.
- ENDPOINT_ID: Die ID des Endpunkts.
- MODEL_ID: Die ID des bereitzustellenden Modells.
-
DEPLOYED_MODEL_NAME: Ein Name für
DeployedModel
. Sie können auch den Anzeigenamen vonModel
fürDeployedModel
verwenden. - MACHINE_TYPE: Der Maschinentyp, der für jeden Knoten in dieser Bereitstellung verwendet werden soll. Die Standardeinstellung ist
n1-standard-2
. Weitere Informationen zu den unterstützten Maschinentypen finden Sie unter Computing-Ressourcen für Vorhersagen konfigurieren. - ACCELERATOR_TYPE: Der Typ des Beschleunigers, der an die Maschine angeschlossen werden soll. Weitere Informationen zu den von den einzelnen Maschinentypen unterstützten GPU-Typen finden Sie unter GPUs für Computing-Arbeitslasten.
- ACCELERATOR_COUNT: die Anzahl der Beschleuniger, die an die Maschine angeschlossen werden sollen.
- RESERVATION_AFFINITY_TYPE: muss
ANY
,SPECIFIC_RESERVATION
oderNONE
sein.ANY
bedeutet, dass die VMs IhrercustomJob
automatisch jede Reservierung mit übereinstimmenden Attributen nutzen können.SPECIFIC_RESERVATION
bedeutet, dass die VMs IhrercustomJob
nur eine Reservierung nutzen können, auf die die VMs ausdrücklich namentlich ausgerichtet sind.NONE
bedeutet, dass die VMs IhrescustomJob
keine Reservierungen nutzen können. Wenn SieNONE
angeben, hat das denselben Effekt wie das Weglassen einer Reservierungsaffinitätsspezifikation.
- RESERVATION_NAME: den Namen Ihrer Reservierung.
- MIN_REPLICA_COUNT: Die minimale Anzahl von Knoten für diese Bereitstellung. Die Knotenzahl kann je nach der Vorhersagelast erhöht oder verringert werden, bis zur maximalen Anzahl von Knoten und niemals auf weniger als diese Anzahl von Knoten. Dieser Wert muss größer oder gleich 1 sein.
- MAX_REPLICA_COUNT: Die maximale Anzahl von Knoten für diese Bereitstellung. Die Knotenzahl kann je nach der Vorhersagelast erhöht oder verringert werden, bis zu dieser Anzahl von Knoten und niemals auf weniger als die minimale Anzahl von Knoten.
- TRAFFIC_SPLIT_THIS_MODEL: Der Prozentsatz des Vorhersagetraffics an diesen Endpunkt, der an das Modell mit diesem Vorgang weitergeleitet werden soll. Die Standardeinstellung ist 100. Alle Traffic-Prozentsätze müssen zusammen 100 % ergeben. Weitere Informationen zu Traffic-Splits
- DEPLOYED_MODEL_ID_N: Optional. Wenn andere Modelle für diesen Endpunkt bereitgestellt werden, müssen Sie die Prozentsätze der Trafficaufteilung aktualisieren, sodass alle Prozentsätze zusammen 100 % ergeben.
- TRAFFIC_SPLIT_MODEL_N: Der Prozentwert der Trafficaufteilung für den bereitgestellten Modell-ID-Schlüssel.
- PROJECT_NUMBER: Die automatisch generierte Projektnummer Ihres Projekts.
HTTP-Methode und URL:
POST https://LOCATION_ID -aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION_ID /endpoints/ENDPOINT_ID :deployModel
JSON-Text anfordern:
{ "deployedModel": { "model": "projects/PROJECT /locations/LOCATION_ID /models/MODEL_ID ", "displayName": "DEPLOYED_MODEL_NAME ", "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE ", "acceleratorType": "ACCELERATOR_TYPE ", "acceleratorCount":ACCELERATOR_COUNT , "reservationAffinity": { "reservationAffinityType": "RESERVATION_AFFINITY_TYPE ", "key": "compute.googleapis.com/reservation-name", "values": [ "projects/PROJECT_ID /zones/ZONE /reservations/RESERVATION_NAME " ] } }, "minReplicaCount":MIN_REPLICA_COUNT , "maxReplicaCount":MAX_REPLICA_COUNT }, }, "trafficSplit": { "0":TRAFFIC_SPLIT_THIS_MODEL , "DEPLOYED_MODEL_ID_1 ":TRAFFIC_SPLIT_MODEL_1 , "DEPLOYED_MODEL_ID_2 ":TRAFFIC_SPLIT_MODEL_2 }, }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
curl (Linux, macOS oder Cloud Shell)
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID -aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION_ID /endpoints/ENDPOINT_ID :deployModel"
PowerShell (Windows)
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID -aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION_ID /endpoints/ENDPOINT_ID :deployModel" | Select-Object -Expand Content
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "name": "projects/PROJECT_ID /locations/LOCATION_ID /endpoints/ENDPOINT_ID /operations/OPERATION_ID ", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.DeployModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-19T17:53:16.502088Z", "updateTime": "2020-10-19T17:53:16.502088Z" } } }
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI SDK for Python API.
Bevor Sie eines der folgenden Scripts ausführen, nehmen Sie die folgenden Ersetzungen vor:
- DEPLOYED_NAME: Ein Name für das bereitgestellte Modell.
- TRAFFIC_SPLIT: Der Prozentwert der Trafficaufteilung für den bereitgestellten Modell-ID-Schlüssel.
- MACHINE_TYPE: Der für jeden Knoten dieser Bereitstellung verwendete Computer. Die Standardeinstellung ist
n1-standard-2
. Weitere Informationen zu Maschinentypen - ACCELERATOR_TYPE: Der Typ des Beschleunigers, der an die Maschine angeschlossen werden soll. Weitere Informationen zu den von den einzelnen Maschinentypen unterstützten GPU-Typen finden Sie unter GPUs für Computing-Arbeitslasten.
- ACCELERATOR_COUNT: die Anzahl der Beschleuniger, die an die Maschine angeschlossen werden sollen.
- PROJECT_ID: das Projekt, in dem die Reservierung erstellt wurde. Wenn Sie eine freigegebene Reservierung aus einem anderen Projekt nutzen möchten, müssen Sie die Reservierung für dieses Projekt freigeben. Weitere Informationen finden Sie unter Nutzerprojekte in einer freigegebenen Reservierung ändern.
- ZONE: die Zone, in der sich die Reservierung befindet.
- RESERVATION_NAME: den Namen Ihrer Reservierung.
- MIN_REPLICA_COUNT: Die minimale Anzahl von Knoten für diese Bereitstellung. Die Knotenzahl kann je nach der Vorhersagelast erhöht oder verringert werden, bis zur maximalen Anzahl von Knoten und niemals auf weniger als diese Anzahl von Knoten. Dieser Wert muss größer oder gleich 1 sein.
- MAX_REPLICA_COUNT: Die maximale Anzahl von Knoten für diese Bereitstellung. Die Knotenzahl kann je nach der Vorhersagelast erhöht oder verringert werden, bis zu dieser Anzahl von Knoten und niemals auf weniger als die minimale Anzahl von Knoten.
Führen Sie je nach Art der Reservierung, die Sie nutzen möchten, einen der folgenden Schritte aus:
- So nutzen Sie eine bestimmte Reservierung:
endpoint5.deploy( model = model, deployed_model_display_name=
DEPLOYED_NAME , traffic_split=TRAFFIC_SPLIT , machine_type="MACHINE_TYPE ", accelerator_type="ACCELERATOR_TYPE ", accelerator_count=ACCELERATOR_COUNT , reservation_affinity_type="SPECIFIC_RESERVATION", reservation_affinity_key="compute.googleapis.com/reservation-name", reservation_affinity_values=["projects/PROJECT_ID /zones/ZONE /reservations/RESERVATION_NAME "], min_replica_count=MIN_REPLICA_COUNT , max_replica_count=MAX_REPLICA_COUNT , sync=True ) - So nutzen Sie eine automatisch genutzte Reservierung:
endpoint5.deploy( model = model, deployed_model_display_name=
DEPLOYED_NAME , traffic_split=TRAFFIC_SPLIT , machine_type="MACHINE_TYPE ", accelerator_type="ACCELERATOR_TYPE ", accelerator_count=ACCELERATOR_COUNT , reservation_affinity_type="ANY_RESERVATION", min_replica_count=MIN_REPLICA_COUNT , max_replica_count=MAX_REPLICA_COUNT , sync=True )
Nächste Schritte
- Weitere Informationen zu Reservierungen von zonalen Ressourcen von Compute Engine
- Weitere Informationen zur Verwendung von Reservierungen mit Vertex AI-Schulungen