Google Cloud bietet Zugriff auf speziell entwickelte Hardwarebeschleuniger für maschinelles Lernen, die Tensor Processing Units (TPUs) genannt werden. TPUs sind für die Beschleunigung des Trainings und der Inferenz von Modellen für maschinelles Lernen optimiert. Sie 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 auf einer einzelnen Cloud TPU v5e für Onlinevorhersagen in Vertex AI bereitstellen.
Nur die Cloud TPU-Version v5e wird unterstützt. Andere Cloud TPU-Generationen werden nicht unterstützt.
Modell importieren
Für die Bereitstellung auf Cloud TPUs müssen Sie Ihr Modell in Vertex AI importieren und so konfigurieren, dass einer der folgenden Container verwendet wird:
- Vordefinierter optimierter TensorFlow-Laufzeitcontainer, entweder Version
nightly
oder Version2.15
oder höher - Vordefinierter PyTorch-TPU-Container, Version
2.1
oder höher - einen eigenen benutzerdefinierten Container, der TPUs unterstützt
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 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 einenupload
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, das nicht optimierte 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 SieConverterOptions.TpuFunction
an Ihre Anforderungen an. Ein Beispiel finden Sie unter Converter Image. Beachten Sie, dass nurConverterOptions.TpuFunction
unterstützt wird, was für die manuelle Partitionierung ausreichend 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.
In TorchServe for Cloud TPU v5e Inference wird beispielsweise gezeigt, wie das Densenet 161-Modell mit dem Torch Model Archiver in Modellartefakte verpackt wird.
Laden Sie dann die Modellartefakte in Ihren Cloud Storage-Ordner und das Modell wie 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 Jupyter-Notebook PyTorch-Modell mit einem vordefinierten Container bereitstellen.
Benutzerdefinierter Container
Bei benutzerdefinierten Containern muss es sich nicht um ein TensorFlow-Modell handeln, es muss aber für TPUs 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 mit JAX, TensorFlow oder PyTorch trainierten Modellen auf Cloud TPU v5e finden Sie unter Cloud TPU v5e-Inferenz.
Der benutzerdefinierte Container muss die Anforderungen an benutzerdefinierte Container erfüllen.
Sie müssen das Limit für den 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 Vorhersagen verwenden. Wenn Sie Logik für die Vor- oder Nachverarbeitung 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 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 entspricht der Anleitung zum Bereitstellen eines beliebigen Modells. Sie müssen lediglich 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 im Maschinentyp integriert. Sie müssen weder den Beschleunigertyp noch die Beschleunigeranzahl angeben.
Mit dem folgenden Befehl wird beispielsweise ein Modell bereitgestellt, indem deployModel
aufgerufen wird:
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 von einer Cloud TPU entspricht der Anleitung zum Abrufen von Onlinevorhersagen.
Mit dem folgenden Befehl wird beispielsweise eine Onlinevorhersageanfrage gesendet, indem predict
aufgerufen wird:
deployed_model.predict(...)
Informationen zu benutzerdefinierten Containern finden Sie unter 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.
Wie Sie eine Erhöhung beantragen, erfahren Sie unter Höheres Kontingent anfordern.
Preise
TPU-Maschinentypen werden wie alle anderen Maschinentypen in Vertex Prediction pro Stunde abgerechnet. Weitere Informationen finden Sie unter Preise für Vorhersagen.