Google Cloud dà accesso ad acceleratori di machine learning progettati su misura chiamate Tensor Processing Unit (TPU). Le TPU sono ottimizzati per accelerare l'addestramento e l'inferenza dei modelli di machine learning, il che li rende ideali per una varietà di applicazioni, incluse le applicazioni di elaborazione, visione artificiale e riconoscimento vocale.
Questa pagina descrive come eseguire il deployment dei modelli su un singolo host Cloud TPU v5e per la previsione online in Vertex AI.
È supportata solo la versione v5e di Cloud TPU. Altro Le generazioni di Cloud TPU non sono supportate.
Importa il modello
Per il deployment su Cloud TPU, devi importare il modello in Vertex AI e configurarlo per l'utilizzo di uno dei seguenti container:
- Contenitore del runtime TensorFlow ottimizzato predefinito, versione
nightly
o versione2.15
o successiva - contenitore TPU PyTorch predefinito versione
2.1
o successive - Il tuo container personalizzato che supporta le TPU
Contenitore del runtime TensorFlow ottimizzato predefinito
Per importare ed eseguire un
modello TensorFlow SavedModel
su una Cloud TPU, il modello deve essere ottimizzato per TPU. Se il tuo modello TensorFlowSavedModel
non è ancora ottimizzato per TPU, esistono tre modi per ottimizzarlo:
Ottimizzazione manuale del modello: utilizza Inference Converter per ottimizzare il modello e salvarlo. Quindi, devi superare
--saved_model_tags='serve,tpu'
e--disable_optimizer=true
quandoupload
del modello. Ad esempio: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", ] )
Ottimizzazione automatica del modello con partizionamento automatico: quando importi un modello, Vertex AI tenterà di ottimizzare il modello non ottimizzato utilizzando un algoritmo di partizionamento automatico. Questa ottimizzazione non funziona su per tutti i modelli. Se l'ottimizzazione non va a buon fine, devi ottimizzare manualmente il modello o scegliere l'ottimizzazione automatica del modello con la suddivisione manuale. Ad esempio:
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=[ ] )
Ottimizzazione automatica del modello con il partizionamento manuale. Specifica
--converter_options_string
segnala e modificaConverterOptions.TpuFunction
per soddisfare le tue esigenze. Per un esempio, consulta Converter Image. Tieni presente che è supportato soloConverterOptions.TpuFunction
, che è tutto ciò che serve per il partitioning manuale. Ad esempio: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\" }'" ] )
Per ulteriori informazioni sull'importazione dei modelli, consulta Importazione di modelli in Vertex AI.
Container PyTorch predefinito
Le istruzioni per importare ed eseguire un modello PyTorch su Cloud TPU sono le stesse come istruzioni per importare ed eseguire un modello PyTorch.
Ad esempio, TorchServe per l'inferenza Cloud TPU v5e dimostra come pacchettizzare il modello Densenet 161 negli elementi del modello utilizzando Torch Model Archiver.
Carica gli elementi del modello nella cartella Cloud Storage e carica il modello come mostrato:
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]
)
Per ulteriori informazioni, consulta esportare gli artefatti del modello per PyTorch e il Jupyter Notebook per pubblicare un modello PyTorch utilizzando un container predefinito.
Container personalizzato
Per i container personalizzati, il modello non deve necessariamente essere un modello TensorFlow, ma deve essere ottimizzato per TPU. Per informazioni sulla produzione di una TPU ottimizzato, consulta le seguenti guide per i framework ML comuni:
Per informazioni su come pubblicare modelli addestrati con JAX, TensorFlow o PyTorch su Cloud TPU v5e, consulta Inferenza Cloud TPU v5e.
Assicurati che il tuo contenitore personalizzato soddisfi i requisiti dei container personalizzati.
Devi aumentare il limite di memoria bloccata in modo che il driver possa comunicare con i chip TPU tramite accesso diretto alla memoria (DMA). Ad esempio:
Riga di comando
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
),
)
Quindi, consulta Utilizzare un container personalizzato per la previsione. per informazioni sull'importazione di un modello con un container personalizzato. Se vuoi implementare la logica di pre o post-elaborazione, ti consigliamo di utilizzare le routine di previsione personalizzate.
Creazione di un endpoint
Le istruzioni per creare un endpoint per le Cloud TPU sono le stesse delle istruzioni per creare qualsiasi endpoint.
Ad esempio, il seguente comando crea una classe endpoint
risorsa:
endpoint = aiplatform.Endpoint.create(display_name='My endpoint')
La risposta contiene l'ID del nuovo endpoint, che utilizzerai nei passaggi successivi.
Per ulteriori informazioni sulla creazione di un endpoint, consulta eseguire il deployment di un modello in un endpoint.
Esegui il deployment di un modello
Le istruzioni per il deployment di un modello su Cloud TPU sono le stesse delle istruzioni per il deployment di qualsiasi modello, tranne per il fatto che devi specificare uno dei seguenti tipi di macchine Cloud TPU supportati:
Tipo di macchina | Numero di chip TPU |
---|---|
ct5lp-hightpu-1t |
1 |
ct5lp-hightpu-4t |
4 |
ct5lp-hightpu-8t |
8 |
Gli acceleratori TPU sono integrati nel tipo di macchina. Non è necessario specificare il tipo di acceleratore o il numero di acceleratori.
Ad esempio, il seguente comando esegue il deployment di un modello chiamando
deployModel
:
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,
)
Per ulteriori informazioni, consulta Eseguire il deployment di un modello in un endpoint.
Ricevi previsioni online
Le istruzioni per generare previsioni online da una Cloud TPU sono le stesse delle istruzioni per generare previsioni online.
Ad esempio, il seguente comando invia una richiesta di previsione online chiamando
predict
:
deployed_model.predict(...)
Per i container personalizzati, consulta i requisiti per le richieste e le risposte di previsione per i container personalizzati.
Protezione della capacità
Per impostazione predefinita, la quota per Custom model serving TPU v5e cores per region
è 0.
Per richiedere un aumento, consulta Richiedere un limite di quota più alto.
Prezzi
I tipi di macchine TPU vengono fatturati a ora, come tutti gli altri tipi di macchine in Vertex Prediction. Per ulteriori informazioni, consulta la sezione Prezzi delle previsioni.
Passaggi successivi
- Scopri come ricevere una previsione online