Spot-VMs mit Vorhersage verwenden

Übersicht

Mit Spot-VMs können Sie die Kosten für die Ausführung Ihrer Vorhersagejobs senken. Spot-VMs sind VM-Instanzen, die überschüssige Compute Engine-Kapazität darstellen. Für Spot-VMs gibt es erhebliche Rabatte. Compute Engine kann jedoch Spot-VMs jederzeit vorzeitig beenden oder löschen, um die Kapazität zurückzugewinnen.

Weitere Informationen finden Sie unter Spot-VMs.

Beschränkungen und Anforderungen

Beachten Sie die folgenden Einschränkungen und Anforderungen, wenn Sie Spot-VMs mit Vertex AI verwenden:

  • Alle Einschränkungen für Spot-VMs gelten, wenn Sie Spot-VMs mit Vertex AI verwenden.
  • Die Verwendung von Spot-VMs mit Vertex AI wird nur für benutzerdefiniertes Training und Vorhersagen unterstützt.
  • Die Verwendung von Spot-VMs mit TPU-Pods wird nicht unterstützt.
  • Das Einreichen von Jobs über die Google Cloud Console wird nicht unterstützt.

Abrechnung

Wenn Ihre Arbeitslasten fehlertolerant sind und einer möglichen vorzeitigen VM-Beendigung standhalten, können Spot-VMs Ihre Compute-Kosten erheblich reduzieren. Wenn einige dieser VMs während der Verarbeitung beendet werden, verlangsamt sich der Job zwar, stoppt aber nicht vollständig. Spot-VMs führen Ihre Batchverarbeitungsaufgaben aus, ohne Ihre vorhandenen VMs zusätzlich zu belasten, und Sie müssen nicht den vollen Preis für zusätzliche Standard-VMs bezahlen. Weitere Informationen finden Sie unter Vorwegnahme.

Wenn Sie Spot-VMs verwenden, werden Ihnen die Kosten basierend auf der Jobdauer und dem Maschinentyp in Rechnung gestellt. Sie zahlen nicht für die Zeit, in der der Job in der Warteschlange steht oder vorzeitig beendet wird.

Umgang mit Vorabankündigung

Spot-VMs können jederzeit von der Compute Engine zurückgefordert werden. Daher muss Ihr Vorhersagejob fehlertolerant sein, damit Sie Spot-VMs optimal nutzen können. Wenn Spot-VMs vorzeitig beendet werden, schlägt der Vorhersagejob mit einem STOCKOUT-Fehler fehl und Compute Engine versucht, den Job bis zu sechsmal neu zu starten. Informationen dazu, wie Sie Spot-VMs optimal nutzen, finden Sie unter Best Practices für Spot-VMs.

Im Folgenden finden Sie einige Methoden, mit denen Sie Ihren Vorhersagejob ausfallsicher machen können:

  • Erstellen Sie Markierungen, um den Fortschritt zu speichern. Wenn Sie den Fortschritt Ihres Modells regelmäßig speichern, kann ein beendeter Vorhersagejob ab dem letzten gespeicherten Prüfpunkt fortgesetzt werden, anstatt von vorn anzufangen.
  • Verwenden Sie ein Shutdown-Script. Wenn Compute Engine eine Spot-VM vorzeitig beendet, können Sie ein Shutdown-Script verwenden, mit dem Bereinigungsaktionen ausgeführt werden, bevor die VM vorzeitig beendet wird. Weitere Informationen finden Sie unter Vorzeitiges Beenden mit einem Shutdown-Skript verwalten.

Vorhersagen mit Spot-VMs abrufen

Wenn Sie Spot-VMs beim Bereitstellen eines Modells verwenden möchten, um Vorhersagen zu erhalten, können Sie die REST API oder das Vertex AI SDK für Python verwenden.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Die Region, in der Sie Vertex AI verwenden.
  • PROJECT_ID: Ihre Projekt-ID.
  • 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 Model für DeployedModel verwenden.
  • MACHINE_TYPE: Optional. Die für jeden Knoten dieser Bereitstellung verwendeten Maschinenressourcen. Die Standardeinstellung ist n1-standard-2. Weitere Informationen zu Maschinentypen.
  • ACCELERATOR_TYPE: Optional. Der Typ des Beschleunigers, der an die Maschine angehängt werden soll. Weitere Informationen
  • ACCELERATOR_COUNT: Optional. Die Anzahl der Beschleuniger, die für jedes Replikat verwendet werden soll.
  • 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/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel

JSON-Text anfordern:

{


"acceleratorCount": 1}, "spot": true, "minReplicaCount": 1, "maxReplicaCount": 1}}, "trafficSplit": {"0": 100}}' \
  "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel"

  "deployedModel": {
    "model": "projects/PROJECT/locations/us-central1/models/MODEL_ID",
    "displayName": "DEPLOYED_MODEL_NAME",
    "enableContainerLogging": true,
    "dedicatedResources": {
      "machineSpec": {
        "machineType": "MACHINE_TYPE",
        "acceleratorType": "ACCELERATOR_TYPE",
        "acceleratorCount": ACCELERATOR_COUNT
      },
      "spot": true,
      "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 in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/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 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.

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,
    min_replica_count=MIN_REPLICA_COUNT,
    max_replica_count=MAX_REPLICA_COUNT,
    spot=True,
    sync=True
)

Nächste Schritte