Modell auf Cloud TPU-VMs bereitstellen

Google Cloud bietet Zugriff auf benutzerdefinierte Beschleuniger für maschinelles Lernen, die Tensor Processing Units (TPUs) genannt werden. TPUs sind optimiert, um das Training und die Inferenz von Modellen für maschinelles Lernen zu beschleunigen. Sie sind also ideal für eine Vielzahl von Anwendungen, einschließlich Natural Language Processing, maschinelles Sehen und Spracherkennung.

Auf dieser Seite wird beschrieben, wie Sie Ihre Modelle auf einer einzelnen Host-Cloud TPU v5e (Onlinevorhersage) in Vertex AI bereitstellen.

Nur Cloud TPU-Version v5e wird unterstützt. Andere Cloud TPU-Generationen werden nicht unterstützt.

Modell importieren

Für die Bereitstellung in Cloud TPUs müssen Sie Ihr Modell in Vertex AI importieren und für die Verwendung eines der folgenden Container konfigurieren:

Vordefinierter TensorFlow-Laufzeitcontainer

Zum Importieren und Ausführen eines SavedModel in eine Cloud TPU muss das Modell TPU-optimiert sein. Wenn TensorFlow SavedModel noch nicht für TPU optimiert ist, gibt es drei Möglichkeiten, das Modell zu optimieren:

  • Manuelle Modelloptimierung: Verwenden Sie den Inference Converter, um Ihr Modell zu optimieren und zu speichern. Anschließend müssen Sie die Flags --saved_model_tags='serve,tpu' und --disable_optimizer=true übergeben, wenn Sie das Modell upload ausgeben. Beispiel:

    model = aiplatform.Model.upload(
        display_name='Manually optimized model',
        artifact_uri="gs://model-artifact-uri",
        serving_container_image_uri="us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-15:latest",
        serving_container_args=[
            "--saved_model_tags=serve,tpu",
            "--disable_optimizer=true",
        ]
    )
    
  • Automatische Modelloptimierung mit automatischer Partitionierung: Wenn Sie ein Modell importieren, versucht Vertex AI, Ihr nicht optimiertes Modell mithilfe eines automatischen Partitionierungsalgorithmus zu optimieren. Diese Optimierung funktioniert nicht bei allen Modellen. Wenn die Optimierung fehlschlägt, müssen Sie Ihr Modell entweder manuell optimieren oder die automatische Modelloptimierung mit manueller Partitionierung auswählen. Beispiel:

    model = aiplatform.Model.upload(
        display_name='TPU optimized model with automatic partitioning',
        artifact_uri="gs://model-artifact-uri",
        serving_container_image_uri="us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-15:latest",
        serving_container_args=[
        ]
    )
    
  • Automatische Modelloptimierung mit manueller Partitionierung. Geben Sie das Flag --converter_options_string an und passen Sie ConverterOptions.TpuFunction entsprechend Ihren Anforderungen an. Ein Beispiel finden Sie unter Konverter-Image. Beachten Sie, dass nur ConverterOptions.TpuFunction unterstützt wird, was für die manuelle Partitionierung erforderlich ist. Beispiel:

    model = aiplatform.Model.upload(
    display_name='TPU optimized model with manual partitioning',
      artifact_uri="gs://model-artifact-uri",
      serving_container_image_uri="us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-15:latest",
      serving_container_args=[
          "--converter_options_string='tpu_functions { function_alias: \"partitioning function name\" }'"
      ]
    )
    

Weitere Informationen zum Importieren von Modellen finden Sie unter Modelle in Vertex AI importieren.

Vordefinierter PyTorch-Container

Die Anleitung zum Importieren und Ausführen eines PyTorch-Modells auf Cloud TPU entspricht der Anleitung zum Importieren und Ausführen eines PyTorch-Modells.

Mit TorchServe für Cloud TPU v5e Inference wird beispielsweise gezeigt, wie das Densenet 161-Modell mit dem Torch Model Archiver verpackt wird.

Laden Sie dann die Modellartefakte in den Cloud Storage-Ordner hoch und laden Sie Ihr Modell so hoch:

model = aiplatform.Model.upload(
    display_name='DenseNet TPU model from SDK PyTorch 2.1',
    artifact_uri="gs://model-artifact-uri",
    serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/pytorch-tpu.2-1:latest",
    serving_container_args=[],
    serving_container_predict_route="/predictions/model",
    serving_container_health_route="/ping",
    serving_container_ports=[8080]
)

Weitere Informationen finden Sie unter Modellartefakte für PyTorch exportieren und das Jupyter-Notebook für das Bereitstellung eines PyTorch-Modells mit einem vordefinierten Container.

Benutzerdefinierter Container

Bei benutzerdefinierten Containern muss das Modell kein TensorFlow-Modell sein, muss aber TPU-optimiert sein. Informationen zum Erstellen eines TPU-optimierten Modells finden Sie in den folgenden Anleitungen für gängige ML-Frameworks:

Informationen zum Bereitstellen von Modellen, die mit JAX, TensorFlow oder PyTorch auf Cloud TPU v5e trainiert wurden, finden Sie unter Cloud TPU v5e-Inferenz.

Prüfen Sie, ob Ihr benutzerdefinierter Container die Anforderungen für benutzerdefinierte Container erfüllt.

Sie müssen das Limit für den gesperrten Arbeitsspeicher erhöhen, damit der Treiber über den direkten Speicherzugriff (RAM) mit den TPU-Chips kommunizieren kann. Beispiel:

Befehlszeile

ulimit -l 68719476736

Python

import resource

resource.setrlimit(
    resource.RLIMIT_MEMLOCK,
    (
        68_719_476_736_000,  # soft limit
        68_719_476_736_000,  # hard limit
    ),
  )

Anschließend finden Sie unter Benutzerdefinierten Container für Vorhersagen verwenden Informationen zum Importieren eines Modells mit einem benutzerdefinierten Container. Wenn Sie die Vor- oder Nachverarbeitungslogik implementieren möchten, sollten Sie benutzerdefinierte Vorhersageroutinen verwenden.

Endpunkt erstellen

Die Anleitung zum Erstellen eines Endpunkts für Cloud TPUs entspricht der Anleitung zum Erstellen eines Endpunkts.

Mit dem folgenden Befehl wird beispielsweise eine endpoint-Ressource erstellt:

endpoint = aiplatform.Endpoint.create(display_name='My endpoint')

Die Antwort enthält die ID des neuen Endpunkts, die Sie in den nachfolgenden Schritten verwenden.

Weitere Informationen zum Erstellen eines Endpunkts finden Sie unter Modell auf einem Endpunkt bereitstellen.

Modell bereitstellen

Die Anleitung zum Bereitstellen eines Modells auf Cloud TPUs entspricht der Anleitung zum Bereitstellen eines Modells, mit der Ausnahme, dass Sie einen der folgenden unterstützten Cloud TPU-Maschinentypen angeben:

Maschinentyp Anzahl der TPU-Chips
ct5lp-hightpu-1t 1
ct5lp-hightpu-4t 4
ct5lp-hightpu-8t 8

TPU-Beschleuniger sind in den Maschinentyp eingebunden. Sie müssen den Beschleunigertyp oder die Anzahl der Beschleuniger nicht angeben.

Mit dem folgenden Befehl wird beispielsweise ein Modell durch Aufrufen von deployModel bereitgestellt:

machine_type = 'ct5lp-hightpu-1t'

deployed_model = model.deploy(
    endpoint=endpoint,
    deployed_model_display_name='My deployed model',
    machine_type=machine_type,
    traffic_percentage=100,
    min_replica_count=1
    sync=True,
)

Weitere Informationen finden Sie unter Modell auf einem Endpunkt bereitstellen.

Onlinevorhersagen abrufen

Die Anleitung zum Abrufen von Onlinevorhersagen aus einer Cloud TPU entspricht der Anleitung zum Abrufen von Onlinevorhersagen.

Mit dem folgenden Befehl wird beispielsweise eine Onlinevorhersageanfrage gesendet. Dazu wird predict aufgerufen:

deployed_model.predict(...)

Informationen zu benutzerdefinierten Containern finden Sie in den Anforderungen an Vorhersageanfragen und -antworten für benutzerdefinierte Container.

Kapazität sichern

Standardmäßig ist das Kontingent für Custom model serving TPU v5e cores per region 0.

Unter Höheres Kontingent anfordern erfahren Sie, wie Sie eine Erhöhung anfordern.

Preise

TPU-Maschinentypen werden wie alle anderen Maschinentypen in Vertex Prediction pro Stunde abgerechnet. Weitere Informationen finden Sie unter Preise für Vorhersagen.

Nächste Schritte