O Google Cloud fornece acesso a aceleradores de machine learning personalizados, chamados Unidades de Processamento de Tensor (TPUs). As TPUs são otimizadas para acelerar o treinamento e a inferência de modelos de machine learning, o que as torna ideais para uma variedade de aplicativos, como processamento de linguagem natural, visão computacional e reconhecimento de fala.
Nesta página, você vai aprender a implantar modelos em um host único do Cloud TPU v5e para previsão on-line na Vertex AI.
Só há suporte para o Cloud TPU v5e. Outras gerações do Cloud TPU não têm suporte.
Importar o modelo
Para a implantação em Cloud TPUs, é preciso importar o modelo para a Vertex AI e configurá-lo a fim de usar um dos seguintes contêineres:
- Contêiner de ambiente de execução otimizado e predefinido do TensorFlow versão
nightly
, versão2.15
ou uma versão mais recente - Contêiner predefinido de TPU PyTorch versão
2.1
ou uma versão mais recente - Contêiner personalizado próprio com suporte para TPUs
Contêiner de ambiente de execução otimizado e predefinido do TensorFlow
Para importar e executar um TensorFlow SavedModel
em um Cloud TPU, o modelo precisa ser otimizado
para TPU. Se o SavedModel
do TensorFlow ainda não está otimizado
para TPU, há três maneiras de otimizar o modelo:
Otimização manual do modelo: use o conversor de inferência para otimizar e salvar o modelo. Em seguida, transmita as flags
--saved_model_tags='serve,tpu'
e--disable_optimizer=true
aoupload
o modelo. Por exemplo: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", ] )
Otimização automática do modelo com particionamento automático: quando você importa um modelo, a Vertex AI tenta otimizar esse modelo não otimizado usando um algoritmo de particionamento automático. Essa otimização não funciona em todos os modelos. Se a otimização falhar, otimize manualmente o modelo ou escolha a otimização automática com particionamento manual. Por exemplo:
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=[ ] )
Otimização automática do modelo com particionamento manual. Especifique a flag
--converter_options_string
e ajuste oConverterOptions.TpuFunction
de acordo com suas necessidades. Para um exemplo, consulte Converter uma imagem. Observe que só há suporte paraConverterOptions.TpuFunction
, que é tudo o que é necessário para o particionamento manual. Por exemplo: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\" }'" ] )
Para mais informações sobre como importar modelos, consulte Como importar modelos para a Vertex AI.
Contêiner PyTorch predefinido
As instruções para importar e executar um modelo PyTorch no Cloud TPU são iguais às seguidas para importar e executar um modelo PyTorch.
Por exemplo, a inferência do TorchServe para Cloud TPU v5e demonstra como empacotar o modelo Densenet 161 em artefatos de modelo usando o arquivador de modelo do Torch.
Em seguida, faça o upload dos artefatos do modelo para a pasta do Cloud Storage e do modelo conforme abaixo:
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]
)
Para mais informações, consulte Exportar artefatos de modelo para o PyTorch e o Notebook do Jupyter para Exibir um modelo PyTorch usando um contêiner predefinido.
Contêiner personalizado
No caso de contêineres personalizados, o modelo não precisa ser do TensorFlow, mas precisa ser otimizado para TPU. Para informações sobre como produzir um modelo otimizado para TPU, consulte os seguintes guias de frameworks de ML comuns:
Para informações sobre a exibição de modelos treinados com JAX, TensorFlow ou PyTorch no Cloud TPU v5e, consulte Inferência do Cloud TPU v5e.
Verifique se o contêiner personalizado atende aos requisitos de contêiner personalizado.
É preciso aumentar o limite de memória bloqueada para que o driver possa se comunicar com os chips de TPU por acesso direto à memória (DMA). Por exemplo:
Linha de 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
),
)
Em seguida, consulte Usar um contêiner personalizado para previsão a fim de conferir informações sobre como importar um modelo com um contêiner personalizado. Para implementar a lógica de pré ou pós-processamento, use Rotinas de previsão personalizadas.
Crie um endpoint
As instruções para criar um endpoint para Cloud TPUs são iguais às seguidas a fim de criar qualquer endpoint.
Por exemplo, o seguinte comando cria um recurso
endpoint
:
endpoint = aiplatform.Endpoint.create(display_name='My endpoint')
A resposta contém o ID do novo endpoint, que você vai usar nas próximas etapas.
Para mais informações sobre como criar um endpoint, consulte Implantar um modelo em um endpoint.
Implantar um modelo
As instruções para implantar um modelo em Cloud TPUs são iguais às seguidas com qualquer modelo, com a exceção de que é preciso especificar um dos seguintes tipos de máquina do Cloud TPU com suporte:
Tipo de máquina | Número de chips do TPU |
---|---|
ct5lp-hightpu-1t |
1 |
ct5lp-hightpu-4t |
4 |
ct5lp-hightpu-8t |
8 |
Os aceleradores de TPU são integrados ao tipo de máquina. Você não precisa especificar o tipo ou a contagem de aceleradores.
Por exemplo, o seguinte comando implanta um modelo chamando
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,
)
Para mais informações, consulte Implantar um modelo em um endpoint.
Receber previsões on-line
A instrução para receber previsões on-line de um Cloud TPU é igual à seguida para receber previsões on-line.
Por exemplo, o seguinte comando envia uma solicitação de previsão on-line chamando
predict
:
deployed_model.predict(...)
Para contêineres personalizados, consulte os requisitos de solicitação e resposta de previsão para contêineres personalizados.
Como garantir a capacidade
Por padrão, a cota para Custom model serving TPU v5e cores per region
é 0.
Para solicitar um aumento, consulte Solicitar um limite de cota maior.
Preços
Os tipos de máquina de TPU são cobrados por hora, assim como todos os outros tipos de máquina na Vertex Prediction. Para mais informações, consulte Preços da previsão.
A seguir
- Saiba como receber uma previsão on-line.