Modell auf Cloud TPU-VMs bereitstellen

Google Cloud bietet Zugriff auf speziell entwickelte Beschleuniger für maschinelles Lernen, sogenannte Tensor Processing Units (TPUs). TPUs sind für die Beschleunigung des Trainings und der Inferenz von Modellen für maschinelles Lernen optimiert und eignen sich daher ideal für eine Vielzahl von Anwendungen, darunter Natural Language Processing, Computer Vision und Spracherkennung.

Auf dieser Seite wird beschrieben, wie Sie Ihre Modelle für die Onlineinferenz in Vertex AI auf einer Cloud TPU v5e oder v6e mit nur einem Host bereitstellen.

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

Informationen dazu, in welchen Standorten Cloud TPU-Version v5e und 6e verfügbar sind, finden Sie unter Standorte.

Modell importieren

Für die Bereitstellung auf Cloud TPUs müssen Sie Ihr Modell in Vertex AI importieren und es so konfigurieren, dass einer der folgenden Container verwendet wird:

Vordefinierter optimierter TensorFlow-Laufzeitcontainer

Wenn Sie ein TensorFlow SavedModel auf einer Cloud TPU importieren und ausführen möchten, muss das Modell für TPUs optimiert sein. Wenn Ihr TensorFlow-SavedModel noch nicht für TPUs optimiert ist, haben Sie drei Möglichkeiten, Ihr Modell zu optimieren:

  • Manuelle Modelloptimierung: Sie verwenden 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 einen upload für Ihr Modell ausführen. 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 mit einem 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 an Ihre Anforderungen an. Ein Beispiel finden Sie unter Converter Image. Beachten Sie, dass nur ConverterOptions.TpuFunction unterstützt wird. Das ist alles, 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 ist dieselbe wie die Anleitung zum Importieren und Ausführen eines PyTorch-Modells.

Im Beispiel TorchServe for Cloud TPU v5e Inference wird gezeigt, wie das Densenet 161-Modell mit Torch Model Archiver in Modellartefakte verpackt wird.

Laden Sie dann die Modellartefakte in Ihren Cloud Storage-Ordner und Ihr Modell wie unten gezeigt 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 im Tutorial-Notebook PyTorch-Modell mit einem vordefinierten Container bereitstellen.

Benutzerdefinierter Container

Bei benutzerdefinierten Containern muss Ihr Modell kein TensorFlow-Modell sein, es muss aber für TPUs optimiert sein. Informationen zum Erstellen eines für TPUs 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.

Achten Sie darauf, dass Ihr benutzerdefinierter Container die Anforderungen für benutzerdefinierte Container erfüllt.

Sie müssen das Limit für gesperrten Arbeitsspeicher erhöhen, damit der Treiber über DMA (Direct Memory Access) 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
    ),
  )

Informationen zum Importieren eines Modells mit einem benutzerdefinierten Container finden Sie unter Benutzerdefinierten Container für die Inferenz verwenden. Wenn Sie eine Vor- oder Nachverarbeitungslogik implementieren möchten, sollten Sie benutzerdefinierte Inferenzroutinen verwenden.

Endpunkt erstellen

Die Anleitung zum Erstellen eines Endpunkts für Cloud TPUs ist dieselbe wie für das Erstellen eines beliebigen 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 folgenden 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 ist dieselbe wie für die Bereitstellung eines beliebigen Modells. Sie müssen jedoch einen der folgenden unterstützten Cloud TPU-Maschinentypen angeben:

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

TPU-Beschleuniger sind im Maschinentyp integriert. 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.

Online-Schlussfolgerungen abrufen

Die Anleitung zum Abrufen von Onlinevorhersagen von einer Cloud TPU ist dieselbe wie die Anleitung zum Abrufen von Onlinevorhersagen.

Mit dem folgenden Befehl wird beispielsweise eine Online-Inferenzanfrage gesendet, indem predict aufgerufen wird:

deployed_model.predict(...)

Informationen zu benutzerdefinierten Containern finden Sie unter Anforderungen an Inferenzausgabe und -antwort für benutzerdefinierte Container.

Kapazität sichern

In den meisten Regionen ist das TPU v5e and v6e cores per region Kontingent für das Bereitstellen benutzerdefinierter Modelle 0. In einigen Regionen ist sie eingeschränkt.

Informationen zum Anfordern einer Kontingenterhöhung finden Sie unter Kontingentanpassung 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