In diesem Dokument wird erläutert, wie Sie Compute Engine-Reservierungen verwenden, um sicherzustellen, dass für Ihre Online-Inferenzjobs die erforderlichen virtuellen Computerressourcen (VM) verfügbar sind.
Reservierungen sind eine Funktion von Compute Engine. Mit ihnen sorgen Sie dafür, dass die Ressourcen jederzeit verfügbar sind, die Sie zum Erstellen von VMs mit derselben Hardware (Arbeitsspeicher und vCPUs) und optionalen Ressourcen (CPUs, GPUs, TPUs und lokalen SSD-Laufwerken) benötigen.
Wenn Sie eine Reservierung erstellen, prüft Compute Engine, ob die angeforderte Kapazität in der angegebenen Zone verfügbar ist. Wenn ja, reserviert Compute Engine die Ressourcen, erstellt die Reservierung und Folgendes geschieht:
- Sie können die reservierten Ressourcen sofort nutzen und sie bleiben verfügbar, bis Sie die Reservierung löschen.
- Ihnen werden die reservierten Ressourcen zum gleichen On-Demand-Tarif wie für laufende VMs in Rechnung gestellt, 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. Sie zahlen nur für die Ressourcen außerhalb der Reservierung, z. B. für Laufwerke oder IP-Adressen. Weitere Informationen finden Sie unter Preise für Reservierungen.
Beschränkungen und Anforderungen
Beachten Sie die folgenden Einschränkungen und Anforderungen, wenn Sie Compute Engine-Reservierungen mit der Agent Platform verwenden:
- Die Agent Platform kann nur Reservierungen für CPUs, GPU-VMs, oder TPUs (Vorschau) verwenden.
- Die Agent Platform kann keine Reservierungen von VMs nutzen, an die lokale SSD-Laufwerke manuell angehängt wurden.
- Die Verwendung von Compute Engine-Reservierungen mit der Agent Platform wird nur für serverloses Training, Inferenz und die Gemini Enterprise Agent Platform Workbench (Vorschau) unterstützt.
- Die VM-Attribute einer Reservierung müssen genau mit Ihrer Agent Platform-Arbeitslast übereinstimmen
damit die Reservierung genutzt werden kann. Wenn beispielsweise in einer Reservierung der Maschinentyp
a2-ultragpu-8gangegeben ist, kann die Agent Platform-Arbeitslast die Reservierung nur nutzen, wenn sie ebenfalls den Maschinentypa2-ultragpu-8gverwendet. Weitere Informationen finden Sie unter Anforderungen. - Wenn Sie eine freigegebene Reservierung von GPU-VMs oder TPUs nutzen möchten, müssen Sie sie über das Inhaber projekt oder ein Nutzerprojekt nutzen, für das die Reservierung freigegeben wurde. Weitere Informationen finden Sie unter Funktionsweise freigegebener Reservierungen.
- Um regelmäßige Updates Ihrer Agent Platform-Bereitstellungen zu ermöglichen, empfehlen wir, die Anzahl der VMs um mehr als die Gesamtzahl der Replikate zu erhöhen. Die genaue Anzahl hängt vom Reservierungstyp ab, der von Ihrem
DeployedModelverwendet wird:SPECIFIC_RESERVATION: Sie müssen mindestens eine zusätzliche VM angeben. Wir empfehlen 10% (mindestens aber eine). Bei bereitgestellten Modellen, dieSPECIFIC_RESERVATIONverwenden, werden garantiert nur VMs aus der Reservierung genutzt. Die Agent Platform kann keine Updates ausführen, wenn keine zusätzliche VM vorhanden ist.ANY:- Zusätzliche VMs sind nicht erforderlich, da bei bereitgestellten Modellen, die
ANYReservierungen verwenden, On-Demand-VMs genutzt werden, 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 ein Modell mit 40 Replikaten mit dieser Reservierung bereit. Bei der ersten Bereitstellung werden alle 40 VMs in der Reservierung vomDeployedModelverwendet. Nach einem Upgrade stammen nur 36 VMs aus der Reservierung und 4 VMs sind On-Demand-VMs. - Wenn Sie die Nutzung innerhalb der Reservierung beibehalten möchten, empfehlen wir, für jedes
DeployedModeloderDeploymentResourcePool, das bzw. der die Reservierung nutzt, mindestens 1 zusätzliche VM zu haben. Wenn die Gesamtzahl der VMs desselben Typs in IhrenANYReservierungen weniger als 50 beträgt, empfehlen wir 10 % mehr (mindestens aber eine). Wenn sie mehr als 50 beträgt, 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, solange sie alle für die Agent Platform 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 die Agent Platform freigegeben sind, mindestens 125 betragen.
- Wenn Sie zwei Modelle mit 10 VMs bereitstellen möchten, sollte die Gesamtzahl der VMs in allen A3
Reservierungen, die für die Agent Platform freigegeben sind, mindestens
12 betragen. Die Anzahl der VMs ist weniger als 50, aber die Anzahl der zusätzlichen VMs beträgt 2
(eine pro
DeployedModel).
- Wenn Sie eine
SPECIFIC_RESERVATION-Reservierung nutzen möchten, gewähren Sie dem Agent Platform-Dienstkonto im Projekt, das die Reservierungen besitzt, die Compute-Betrachter IAM-Rolle (service-${PROJECT_NUMBER}@gcp-sa-aiplatform.iam.gserviceaccount.com, wobei PROJECT_NUMBER die Projektnummer des Projekts ist, das die Reservierung nutzt).
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 Online-Inferenz der Agent Platform an. Weitere Informationen finden Sie unter Preise für Vorhersagen.
Hinweis
- 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 CPUs, GPU-VMs oder TPUs nutzen, müssen Sie die Freigaberichtlinie festlegen, damit die Agent Platform 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 der Agent Platform erlauben, die Reservierung wie unten beschrieben 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
--reservation-sharing-policyFlag mit dem WertALLOW_ALLhinzu. - Wenn Sie die REST API verwenden, fügen Sie im Anfragetext das
serviceShareTypeFeld mit dem WertALLOW_ALLein.
Nutzung einer bestehenden Reservierung zulassen
Sie können eine automatisch erstellte Reservierung von GPU-VMs oder TPUs für eine zukünftige Reservierung erst nach der Startzeit der Reservierung ändern.
Wenn Sie der Agent Platform erlauben möchten, eine bestehende Reservierung zu nutzen, verwenden Sie eine der folgenden Methoden:
Nutzung mehrerer bestimmter Reservierungen zulassen
Sie können die Nutzung mehrerer bestimmter Reservierungen zulassen, indem Sie zwei oder mehr
Reservierungen in Prioritätsreihenfolge in der Liste der Reservierungsnamen im values Feld
der Reservierungsaffinitätsspezifikation angeben. Sie sollten sie in der Reihenfolge ihrer Priorität auflisten.
Jede Reservierung muss für Vertex freigegeben sein und die Zone der Reservierung muss sich in der Region des Endpunkts befinden. Andernfalls können Sie Reservierungen aus verschiedenen Quellprojekten und mehreren Zonen kombinieren.
Prüfen, ob eine Reservierung genutzt wird
Informationen zum Prüfen, ob die Reservierung genutzt wird, finden Sie in der Compute Engine-Dokumentation unter Reservierungsnutzung prüfen.Online-Inferenz 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 Agent Platform SDK für Python.
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- LOCATION_ID: Die Region, in der Sie die Agent Platform 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 von demModelfür dasDeployedModelverwenden. - MACHINE_TYPE: Der Maschinentyp, der für jeden Knoten in dieser Bereitstellung verwendet werden soll. Die Standardeinstellung ist
Einstellung 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 angehängt werden soll. Weitere Informationen zum GPU-Typ, der von den einzelnen Maschinentypen unterstützt wird, finden Sie unter GPUs für Computing-Arbeitslasten.
- ACCELERATOR_COUNT: Die Anzahl der Beschleuniger, die an die Maschine angehängt werden sollen.
- RESERVATION_AFFINITY_TYPE: Muss
ANY,SPECIFIC_RESERVATIONoderNONEsein.ANYbedeutet, dass die VMs IhrescustomJobautomatisch jede Reservierung mit übereinstimmenden Attributen nutzen können.SPECIFIC_RESERVATIONbedeutet, dass die VMs IhrescustomJobnur Reservierungen nutzen können, auf die die VMs ausdrücklich namentlich ausgerichtet sind.NONEbedeutet, dass die VMs IhrescustomJobkeine Reservierungen nutzen können. Wenn SieNONEangeben, hat das denselben Effekt wie das Weglassen einer Reservierungs affinitätsspezifikation.
- ZONE: Die Zone, in der die Reservierung erstellt wurde.
- RESERVATION_NAME_N: Die Namen Ihrer Reservierungen in Prioritätsreihenfolge. Jeder Name muss der vollständige Ressourcenname der Reservierung oder des Reservierungsblocks sein.
- MIN_REPLICA_COUNT: Die minimale Anzahl von Knoten für diese Bereitstellung. Die Knotenzahl kann je nach der Inferenzlast 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 Inferenzlast 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 Aufteilung des Traffics 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/v1/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_1",
"projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME_2"
]
}
},
"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:
Sie sollten eine JSON-Antwort ähnlich wie diese 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"
}
}
}
Python
Informationen zum Installieren oder Aktualisieren des Agent Platform SDK für Python finden Sie unter Agent Platform SDK für Python installieren. Weitere Informationen finden Sie in der Agent Platform SDK for Python API-Referenzdokumentation.
Ersetzen Sie diese Werte in den folgenden Skripts:
- DEPLOYED_NAME: Ein Name für das bereitgestellte Modell.
- TRAFFIC_SPLIT: Der Prozentwert der Aufteilung des Traffics für den bereitgestellten Modell-ID-Schlüssel.
- MACHINE_TYPE: Die Maschine, die für jeden Knoten dieser
Bereitstellung verwendet wird. Die Standardeinstellung ist
n1-standard-2. Weitere Informationen zu Maschinentypen. - ACCELERATOR_TYPE: Der Typ des Beschleunigers, der an die Maschine angehängt werden soll. Weitere Informationen zum GPU-Typ, der von den einzelnen Maschinentypen unterstützt wird, finden Sie unter GPUs für Computing-Arbeitslasten.
- ACCELERATOR_COUNT: Die Anzahl der Beschleuniger, die an die Maschine angehängt 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_N: Die Namen Ihrer Reservierungen in Prioritätsreihenfolge. Jeder Name muss der vollständige Ressourcenname der Reservierung oder des Reservierungsblocks sein.
- MIN_REPLICA_COUNT: Die minimale Anzahl von Knoten für diese Bereitstellung. Die Knotenzahl kann je nach der Inferenzlast 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 Inferenzlast 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 dem Typ der Reservierung, die Sie nutzen möchten, einen der folgenden Schritte aus:
- So nutzen Sie eine oder mehrere bestimmte Reservierungen:
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_1", "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME_2" ], 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.
- Informationen zur Verwendung von Reservierungen mit der Agent Platform Batch-Inferenz
- Informationen zur Verwendung von Reservierungen mit dem Training der Agent Platform
- Reservierungen ansehen
- Nutzung von Reservierungen überwachen