Ambiente de execução otimizado do TensorFlow

O ambiente de execução otimizado do TensorFlow otimiza modelos para inferência mais rápida e mais barata do que contêineres pré-criados do TensorFlow com código aberto. O ambiente de execução otimizado do TensorFlow faz isso usando as tecnologias reservadas e de código aberto do Google.

Quanto maior for um modelo de machine learning (ML), maior poderá ser o custo de disponibilização dele. Com o ambiente de execução otimizado do TensorFlow, o custo de disponibilização do modelo de ML e a velocidade de inferência podem ser menores em comparação com um ambiente de execução do TensorFlow baseado em código aberto. Para aproveitar o ambiente de execução otimizado do TensorFlow ao usar a previsão da Vertex AI, não é necessário modificar o código. Em vez disso, escolha uma imagem de contêiner de exibição que a use.

O ambiente de execução otimizado do TensorFlow é compatível com versões anteriores dos contêineres pré-criados do TensorFlow Serving. Se você estiver executando modelos do TensorFlow com um contêiner pré-criado, você poderá alternar para um contêiner de ambiente de execução otimizado do TensorFlow com o mínimo de esforço.

Embora o desempenho do seu modelo melhore quando você usa o ambiente de execução otimizado do TensorFlow, o impacto esperado no desempenho pode variar para diferentes tipos de modelos.

Visão geral do ambiente de execução otimizado do TensorFlow

O ambiente de execução otimizado do TensorFlow usa otimizações de modelo e novas tecnologias proprietárias do Google para aumentar a velocidade e reduzir o custo de inferência em comparação com contêineres pré-criados do TensorFlow Serving de código aberto.

A otimização ocorre quando a Vertex AI faz upload de um modelo antes de ele ser executado. Depois de implantar um modelo em um endpoint, o registro de otimização é adicionado ao registro de previsão. Use esses registros para solucionar problemas que podem ocorrer durante a otimização.

Os tópicos a seguir descrevem as melhorias de otimização no ambiente de execução otimizado do TensorFlow.

Otimizações de modelo

As três otimizações de modelo a seguir estão incluídas no ambiente de execução otimizado do TensorFlow.

Pré-compilação de modelo XLA

Quando um modelo do TensorFlow é executado, todas as operações são executadas individualmente. Há uma pequena sobrecarga ao executar operações individuais. O ambiente de execução otimizado do TensorFlow pode remover parte dessa sobrecarga aproveitando o XLA para pré-compilar todo ou parte do gráfico do TensorFlow em kernels maiores.

A pré-compilação do modelo XLA é opcional e desativada por padrão. Para saber como ativar a pré-compilação do modelo XLA durante uma implantação, consulte Ativar a pré-compilação do modelo XLA.

Otimizações de compactação de modelos

O ambiente de execução otimizado do TensorFlow pode executar alguns modelos mais rapidamente com um pequeno impacto na precisão, permitindo a otimização da compactação do modelo. Quando a otimização de compactação de modelo está ativada, o ambiente de execução otimizado do TensorFlow utiliza técnicas como quantização e remoção de peso para executar modelos mais rapidamente.

O recurso de otimização de compactação de modelo fica desativado por padrão. Para saber como ativar a otimização de compactação de modelos durante uma implantação, consulte Ativar otimização de compactação de modelos.

Desempenho de modelos tabulares aprimorados em GPUs

Os modelos tabulares do TensorFlow geralmente são exibidos em CPUs porque não podem utilizar aceleradores de maneira eficaz. O ambiente de execução otimizado do TensorFlow resolve isso executando partes de computação do modelo em GPUs. O restante do modelo é executado em CPUs, minimizando a comunicação entre o host e o acelerador. Executar as partes caras do modelo em GPUs e o restante em CPUs torna a disponibilização de modelos tabulares mais rápida e barata.

O ambiente de execução otimizado do TensorFlow otimiza a veiculação dos seguintes tipos de modelos tabulares.

Otimização automática de modelos para o Cloud TPU

Os contêineres de ambiente de execução otimizados e pré-criados do TensorFlow que são compatíveis com Cloud TPUs podem particionar e otimizar automaticamente os modelos para execução em TPUs. Para mais informações, consulte Implantar na Cloud TPU.

Uso do ambiente de execução do TensorFlow (TFRT)

O ambiente de execução otimizado do TensorFlow pode usar o TensorFlow Runtime (TFRT). O TFRT usa CPUs de host com várias linhas de execução, é compatível com modelos de programação assíncrona e está otimizado para eficiência de baixo nível.

A CPU do TFRT é ativada em todas as imagens de contêiner de CPU do ambiente de execução otimizado do TensorFlow, exceto a versão 2.8. Para desativar a CPU do TFRT, defina a flag use_tfrt como false.

A GPU TFRT está disponível em imagens de contêiner de GPU de ambiente de execução do TensorFlow otimizadas para noites e imagens de contêiner de GPU de ambiente de execução do TensorFlow otimizadas para versões 2.13 e posteriores. Para ativar a GPU TFRT, defina as flags use_tfrt e allow_precompilation como true. O TFRT em uma imagem de contêiner de GPU minimiza a sobrecarga de transferência de dados entre a CPU host e a GPU. Depois que você ativa o TFRT, ele trabalha com a compilação de XLA. Como a pré-compilação de XLA está ativada, é possível que você tenha alguns efeitos colaterais, como maior latência na primeira solicitação. Para mais informações, consulte Ativar pré-compilação de XLA de modelo.

Uso do ambiente de execução do Google

Como o ambiente de execução otimizado do TensorFlow é criado usando a camada interna do Google, ele pode aproveitar a execução no ambiente de execução reservado do Google.

Imagens de contêiner do ambiente de execução otimizado do TensorFlow

O Vertex AI Prediction oferece dois tipos de imagens otimizadas de contêiner de ambiente de execução do TensorFlow: estável e noturna.

Imagens de contêiner estáveis

Os contêineres estáveis do ambiente de execução otimizado do TensorFlow estão vinculados a uma versão específica do TensorFlow, assim como os contêineres pré-criados do TensorFlow Serving baseados em código aberto. Os contêineres otimizados do ambiente de execução do TensorFlow vinculados a uma versão específica são mantidos pela mesma duração da versão de código aberto vinculada à mesma versão. As versões do ambiente de execução otimizado do TensorFlow têm as mesmas propriedades que as versões de código aberto do TensorFlow, mas com inferência mais rápida.

Os modelos de criação são compatíveis com versões anteriores. Isso significa que é possível executar modelos treinados em versões mais antigas do TensorFlow usando um contêiner mais recente. Os contêineres recentes precisam ter um desempenho melhor do que os mais antigos. Em raras exceções, um modelo treinado em uma versão mais antiga do TensorFlow pode não funcionar com um contêiner mais recente.

Imagens de contêineres noturnos

Os builds do ambiente de execução do TensorFlow otimizados à noite incluem as melhorias e otimizações mais recentes, mas talvez não sejam tão confiáveis quanto os builds estáveis. Eles são usados principalmente para fins experimentais. Os nomes das versões noturnas incluem o identificador nightly. Ao contrário das imagens de contêiner estáveis, os contêineres noturnos não são cobertos pelo Contrato de nível de serviço (SLA) da Vertex AI.

Imagens de contêiner disponíveis

As seguintes imagens de contêiner estável e noturno do Docker do ambiente de execução otimizado do TensorFlow estão disponíveis.

Versão do framework de MLs Aceleradores compatíveis (e a versão CUDA, se aplicável) Fim do patch e da data de suporte Fim da disponibilidade Imagens compatíveis
noturno Somente CPU Não aplicável Não aplicável
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest
noturno GPU (CUDA 12.x) Não aplicável Não aplicável
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.nightly:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.nightly:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.nightly:latest
noturno Cloud TPU Não aplicável Não aplicável
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.nightly:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.nightly:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.nightly:latest
2,16 Somente CPU 26 de abril de 2024 26 de abril de 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-16:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-16:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-16:latest
2,16 GPU (CUDA 12.x) 26 de abril de 2024 26 de abril de 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-16:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-16:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-16:latest
2,16 Cloud TPU 26 de abril de 2024 26 de abril de 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-16:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-16:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-16:latest
2.15 Somente CPU 15 de agosto de 2024 15 de agosto de 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-15:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-15:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-15:latest
2.15 GPU (CUDA 12.x) 15 de agosto de 2024 15 de agosto de 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-15:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-15:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-15:latest
2.15 Cloud TPU 15 de agosto de 2024 15 de agosto de 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-15:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-15:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-15:latest
2.14 Somente CPU 15 de agosto de 2024 15 de agosto de 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-14:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-14:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-14:latest
2.14 GPU (CUDA 12.x) 15 de agosto de 2024 15 de agosto de 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-14:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-14:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-14:latest
2,13 Somente CPU 15 de agosto de 2024 15 de agosto de 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-13:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-13:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-13:latest
2,13 GPU (CUDA 11.x) 15 de agosto de 2024 15 de agosto de 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-13:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-13:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-13:latest
2,12 Somente CPU 15 de maio de 2024 15 de maio de 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-12:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-12:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-12:latest
2,12 GPU (CUDA 11.x) 15 de maio de 2024 15 de maio de 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-12:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-12:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-12:latest
2.11 Somente CPU 15 de novembro de 2023 15 de novembro de 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-11:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-11:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-11:latest
2.11 GPU (CUDA 11.x) 15 de novembro de 2023 15 de novembro de 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-11:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-11:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-11:latest
2.10 Somente CPU 15 de novembro de 2023 15 de novembro de 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-10:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-10:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-10:latest
2.10 GPU (CUDA 11.x) 15 de novembro de 2023 15 de novembro de 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-10:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-10:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-10:latest
2.9 Somente CPU 15 de novembro de 2023 15 de novembro de 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-9:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-9:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-9:latest
2.9 GPU (CUDA 11.x) 15 de novembro de 2023 15 de novembro de 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-9:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-9:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-9:latest
2.8 Somente CPU 15 de novembro de 2023 15 de novembro de 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest
2.8 GPU (CUDA 11.x) 15 de novembro de 2023 15 de novembro de 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-8:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-8:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-8:latest

Usar o ambiente de execução otimizado do TensorFlow com um endpoint particular

O uso de endpoints particulares para exibir previsões on-line com a Vertex AI oferece uma conexão segura e de baixa latência ao serviço de previsão on-line da Vertex AI mais rápido do que usar endpoints públicos. O ambiente de execução otimizado do TensorFlow provavelmente veicula modelos sensíveis à latência. Por isso, considere usá-lo com endpoints particulares. Para mais informações, consulte Usar endpoints particulares para previsão on-line.

Implantar um modelo usando o ambiente de execução otimizado do TensorFlow

O processo de implantação de um modelo para previsão usando o ambiente de execução otimizado do TensorFlow é quase igual ao de implantação de modelos usando contêineres pré-criados do TensorFlow Serving com base em código aberto. As únicas diferenças são que você especifica uma imagem de contêiner que usa o ambiente de execução otimizado do TensorFlow ao criar seu modelo. É possível ativar as sinalizações de otimização descritas anteriormente neste documento. Por exemplo, se você tiver implantado seu modelo com o contêiner us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest, será possível exibir o mesmo modelo com o ambiente de execução otimizado do TensorFlow usando o contêiner us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest.

O exemplo de código a seguir mostra como criar um modelo com o contêiner otimizado do ambiente de execução do TensorFlow us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest. Para implantar esse modelo, use o mesmo processo utilizado para implantar um modelo com outros contêineres pré-criados do TensorFlow Serving.

Para mais informações sobre o ModelServiceClient usado neste exemplo, consulte Class ModelServiceClient. Para mais informações sobre como implantar modelos usando a Vertex AI, consulte Implantar um modelo usando a API Vertex AI. Para mais informações sobre as configurações de allow_precompilation e allow_compression, consulte as Otimizações de modelo descritas anteriormente neste documento.

    from google.cloud.aiplatform import gapic as aip
    PROJECT_ID = PROJECT_ID
    REGION = LOCATION
    API_ENDPOINT = f"{REGION}-aiplatform.googleapis.com"
    PARENT = f"projects/{PROJECT_ID}/locations/{REGION}"

    client_options = {"api_endpoint": API_ENDPOINT}
    model_service_client = aip.ModelServiceClient(client_options=client_options)
    tf_opt_model_dict = {
        "display_name": "DISPLAY_NAME",
        "metadata_schema_uri": "",
        "artifact_uri": "MODEL_URI",
        "container_spec": {
            "image_uri": "us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest",
            "args": [
                # The optimized TensorFlow runtime includes the following
                # options that can be set here.
                # "--allow_precompilation=true" - enable XLA precompilation
                # "--allow_compression=true" - enable
                #    model compression optimization
            ],
        },
    }
    tf_opt_model = model_service_client.upload_model(
        parent=PARENT,
        model=tf_opt_model_dict).result(timeout=180).model

Sinalizações de otimização de modelo

Ao implantar um modelo usando o ambiente de execução otimizado do TensorFlow, é possível ativar dois recursos que podem otimizar ainda mais a exibição de modelos do TensorFlow.

  1. Pré-compilação de modelo XLA
  2. Otimização que afeta a compactação do modelo

É possível ativar a pré-compilação do modelo XLA e a otimização da compactação de modelos ao mesmo tempo. As seções a seguir descrevem como ativar essas opções usando sinalizações durante a implantação.

Ativar a pré-compilação do XLA do modelo

Para configurar o ambiente de execução otimizado do TensorFlow para pré-compilar modelos, defina a sinalização allow_precompilation como true. A pré-compilação de modelo XLA funciona para diferentes tipos de modelos e, na maioria dos casos, melhora o desempenho. A pré-compilação do XLA funciona melhor para solicitações com tamanhos de lote grandes.

A pré-compilação de modelo XLA acontece quando a primeira solicitação com o novo tamanho do lote chega. Para garantir que o ambiente de execução seja inicializado antes da primeira solicitação, inclua um arquivo de solicitações de aquecimento. Para mais informações, consulte Aquecimento do SavedModel na documentação do TensorFlow.

A pré-compilação XLA leva vários segundos e vários minutos para ser concluída, dependendo da complexidade do modelo. Se você usar a pré-compilação de modelo XLA, considere o seguinte.

  • Se você usar um arquivo de aquecimento, tente incluir solicitações com tamanhos de lotes que representem os tamanhos de lotes que você espera que seu modelo receba. Fornecer um grande número de solicitações no arquivo de aquecimento torna a inicialização do servidor do modelo mais lenta.

  • Se você espera que seu modelo receba solicitações com diferentes tamanhos de lotes, convém ativar os lotes do lado do servidor com um conjunto de valores fixos para allow_batch_sizes. Para mais informações sobre como ativar do lado do servidor

    agrupamento, consulte Ativar o agrupamento de solicitações do lado do servidor para o TensorFlow na documentação do TensorFlow.

  • Como a pré-compilação XLA adiciona sobrecarga à memória, alguns modelos grandes podem falhar com um erro de falta de memória na GPU.

É recomendável testar a pré-compilação XLA no seu modelo antes de ativar esse recurso na produção.

Ativar a otimização de compactação de modelo

Para configurar o ambiente de execução otimizado do TensorFlow para usar a otimização de compactação de modelos, defina o flag allow_compression como true. Teste como a ativação desse flag afeta a precisão do modelo e determine se você quer ativá-la na produção.

Desativar otimizações

Para configurar o ambiente de execução otimizado do TensorFlow para executar modelos sem otimização, defina o flag disable_optimizer como true.

Limites otimizados de ambiente de execução do TensorFlow

O ambiente de execução otimizado do TensorFlow tem as seguintes limitações:

  • O ambiente de execução otimizado do TensorFlow não é compatível com GPUs NVIDIA mais antigas, como Tesla P4 e Tesla P100.
  • No momento, o ambiente de execução otimizado do TensorFlow oferece suporte apenas para a explicação da amostragem do Shapely.

Preços

A implantação de modelos usando o ambiente de execução otimizado do TensorFlow não inclui cobranças extras. É igual a outras implantações de previsão em que você é cobrado com base no número de VMs e aceleradores usados. Para mais informações, consulte Preços da Vertex AI.