Suporte de GPU para grupos de trabalhadores

Esta página descreve a configuração da GPU para os workerpools do Cloud Run. A Google fornece GPUs NVIDIA L4 com 24 GB de memória da GPU (VRAM), que é separada da memória da instância.

A GPU no Cloud Run é totalmente gerida, sem necessidade de controladores ou bibliotecas adicionais. A funcionalidade de GPU oferece disponibilidade a pedido sem necessidade de reservas, semelhante à forma como a CPU a pedido e a memória a pedido funcionam no Cloud Run.

As instâncias do Cloud Run com uma GPU L4 anexada e controladores pré-instalados são iniciadas em aproximadamente 5 segundos, momento em que os processos em execução no seu contentor podem começar a usar a GPU.

Pode configurar uma GPU por instância do Cloud Run. Se usar contentores auxiliares, tenha em atenção que a GPU só pode ser anexada a um contentor.

Regiões suportadas

  • asia-southeast1 (Singapura)
  • asia-south1 (Mumbai) . Esta região está disponível apenas por convite. Contacte a equipa da sua Conta Google se tiver interesse nesta região.
  • europe-west1 (Bélgica) ícone de folha Baixo CO2
  • europe-west4 (Países Baixos) ícone de folha Baixo CO2
  • us-central1 (Iowa) ícone de folha Baixo CO2
  • us-east4 (Virgínia do Norte)

Tipos de GPUs suportados

Pode usar uma GPU L4 por instância do Cloud Run. Uma GPU L4 tem os seguintes controladores pré-instalados:

  • A versão atual do controlador NVIDIA: 535.216.03 (CUDA 12.2)

Impacto nos preços

Consulte os preços do Cloud Run para ver detalhes dos preços das GPUs. Tenha em atenção os seguintes requisitos e considerações:

  • Existe uma diferença no custo entre a redundância zonal da GPU e a redundância não zonal. Consulte os preços do Cloud Run para ver detalhes dos preços das GPUs.
  • Não é possível ajustar automaticamente a escala dos grupos de trabalhadores de GPU. A GPU é cobrada mesmo que não esteja a executar nenhum processo e enquanto a instância de GPU do conjunto de trabalhadores estiver em execução.
  • O preço da CPU e da memória para pools de trabalhadores é diferente do preço dos serviços e das tarefas. No entanto, o preço do SKU da GPU é o mesmo que o dos serviços e tarefas.
  • Tem de usar um mínimo de 4 CPUs e 16 GiB de memória.
  • A GPU é faturada durante toda a duração do ciclo de vida da instância.

Opções de redundância zonal da GPU

Por predefinição, o Cloud Run implementa o seu conjunto de trabalhadores em várias zonas numa região. Esta arquitetura oferece resiliência inerente: se uma zona sofrer uma interrupção, o Cloud Run encaminha automaticamente o tráfego da zona afetada para zonas em bom estado de funcionamento na mesma região.

Quando trabalhar com recursos de GPU, tenha em atenção que os recursos de GPU têm restrições de capacidade específicas. Durante uma indisponibilidade zonal, o mecanismo de comutação por falha padrão para cargas de trabalho de GPU baseia-se na disponibilidade de capacidade de GPU não utilizada suficiente nas zonas restantes em bom estado. Devido à natureza restrita das GPUs, esta capacidade pode nem sempre estar disponível.

Para aumentar a disponibilidade dos seus conjuntos de trabalhadores acelerados por GPU durante interrupções zonais, pode configurar a redundância zonal especificamente para GPUs:

  • Redundância zonal ativada (predefinição): o Cloud Run reserva capacidade de GPU para o seu conjunto de trabalhadores em várias zonas. Isto aumenta significativamente a probabilidade de o seu conjunto de trabalhadores conseguir processar com êxito o tráfego reencaminhado de uma zona afetada, oferecendo uma maior fiabilidade durante falhas zonais com um custo adicional por segundo de GPU.

  • Redundância zonal desativada: o Cloud Run tenta a comutação por falha para cargas de trabalho de GPU com base no melhor esforço. O tráfego é encaminhado para outras zonas apenas se existir capacidade de GPU suficiente nesse momento. Esta opção não garante capacidade reservada para cenários de comutação por falha, mas resulta num custo mais baixo por segundo de GPU.

SLA

O ANS para a GPU do Cloud Run depende se o grupo de trabalhadores usa a opção de redundância zonal ou não zonal. Consulte a página do SLA para ver detalhes.

Peça um aumento da quota

Os projetos que usam nvidia-l4GPUs no Cloud Run numa região pela primeira vez recebem automaticamente uma quota de 3 GPUs (redundância zonal desativada) quando a primeira implementação é criada. Se precisar de GPUs adicionais do Cloud Run, tem de pedir um aumento da quota para o seu conjunto de trabalhadores do Cloud Run. Use os links fornecidos nos seguintes botões para pedir a quota de que precisa.

Quota necessária Link de quota
GPU com redundância zonal desativada (preço mais baixo) Peça quota de GPU sem redundância zonal
GPU com redundância zonal ativada (preço mais elevado) Peça quota de GPU com redundância zonal

Para mais informações sobre como pedir aumentos da quota, consulte o artigo Como aumentar a quota.

Antes de começar

A lista seguinte descreve os requisitos e as limitações quando usa GPUs no Cloud Run:

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Run API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  7. Peça a quota necessária.
  8. Consulte as práticas recomendadas para GPUs: conjuntos de trabalhadores do Cloud Run com GPUs para ver recomendações sobre a criação da imagem do contentor e o carregamento de modelos grandes.
  9. Certifique-se de que o conjunto de trabalhadores do Cloud Run tem as seguintes configurações:
    • Configure as definições de faturação para a faturação baseada em instâncias. Tenha em atenção que os conjuntos de trabalhadores definidos para faturação baseada em instâncias ainda podem ser reduzidos a zero.
    • Configure um mínimo de 4 CPUs para o seu conjunto de trabalhadores, sendo recomendadas 8 CPUs.
    • Configure um mínimo de 16 GiB de memória, sendo recomendados 32 GiB.
    • Determine e defina uma simultaneidade máxima ideal para a utilização da GPU.

    Funções necessárias

    Para receber as autorizações de que precisa para configurar e implementar pools de trabalhadores do Cloud Run, peça ao seu administrador que lhe conceda as seguintes funções de IAM nos workerpools:

    • Programador do Cloud Run (roles/run.developer) – o conjunto de trabalhadores do Cloud Run
    • Utilizador da conta de serviço (roles/iam.serviceAccountUser) – a identidade do serviço

    Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se o seu conjunto de trabalhadores do Cloud Run interage com Google Cloud APIs, como as bibliotecas de clientes da nuvem, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.

    Configure um conjunto de trabalhadores do Cloud Run com GPU

    Qualquer alteração de configuração leva à criação de uma nova revisão. As revisões subsequentes também vão receber automaticamente esta definição de configuração, a menos que faça atualizações explícitas para a alterar.

    Pode usar a Google Cloud consola, a CLI do Google Cloud ou o YAML para configurar a GPU.

    Consola

    1. Na Google Cloud consola, aceda ao Cloud Run:

      Aceda ao Cloud Run

    2. Selecione Grupos de trabalhadores no menu e clique em Implementar contentor para configurar um novo grupo de trabalhadores. Se estiver a configurar um conjunto de trabalhadores existente, clique no conjunto de trabalhadores e, de seguida, em Editar e implementar nova revisão.

    3. Se estiver a configurar um novo conjunto de trabalhadores, preencha a página de definições inicial do conjunto de trabalhadores e, de seguida, clique em Recipientes, volumes, rede, segurança para expandir a página de configuração do conjunto de trabalhadores.

    4. Clique no separador Contentor.

      imagem

      • Configure a CPU, a memória, a simultaneidade, o ambiente de execução e a sondagem de arranque seguindo as recomendações em Antes de começar
      • Selecione a caixa de verificação da GPU e, de seguida, selecione o tipo de GPU no menu Tipo de GPU e o número de GPUs no menu Número de GPUs.
      • Por predefinição, a redundância zonal está ativada. Para alterar a definição atual, selecione a caixa de verificação da GPU para mostrar as opções de redundância da GPU.
        • Selecione Sem redundância zonal para desativar a redundância zonal
        • Selecione Redundância zonal para ativar a redundância zonal.
    5. Clique em Criar ou Implementar.

    gcloud

    Para criar um worker pool com GPU, use o comando gcloud beta run worker-pools deploy:

      gcloud beta run worker-pools deploy WORKER_POOL \
        --image IMAGE_URL \
        --gpu 1

    Substitua o seguinte:

    • WORKER_POOL: o nome do seu conjunto de trabalhadores do Cloud Run.
    • IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.

    Para atualizar a configuração da GPU para um conjunto de trabalhadores, use o comando gcloud beta run worker-pools update:

      gcloud beta run worker-pools update WORKER_POOL \
        --image IMAGE_URL \
        --cpu CPU \
        --memory MEMORY \
        --gpu GPU_NUMBER \
        --gpu-type GPU_TYPE \
        --GPU_ZONAL_REDUNDANCY
        

    Substitua o seguinte:

    • WORKER_POOL: o nome do seu conjunto de trabalhadores do Cloud Run.
    • IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
    • CPU: o número de CPUs. Tem de especificar, pelo menos, 4 CPUs.
    • MEMORY: a quantidade de memória. Tem de especificar, pelo menos, 16Gi (16 GiB).
    • GPU_NUMBER: o valor 1 (um). Se não for especificado, mas estiver presente um GPU_TYPE, o valor predefinido é 1.
    • GPU_TYPE: o tipo de GPU. Se não estiver especificado, mas estiver presente um GPU_NUMBER, a predefinição é nvidia-l4 (nvidia L4 L minúsculos, não o valor numérico catorze).
    • GPU_ZONAL_REDUNDANCY: no-gpu-zonal-redundancy para desativar a redundância zonal ou gpu-zonal-redundancy para a ativar.

    YAML

    1. Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:

      gcloud run services describe SERVICE --format export > service.yaml
    2. Atualize o atributo nvidia.com/gpu: e nodeSelector:
      run.googleapis.com/accelerator:
      :

      apiVersion: run.googleapis.com/v1
      kind: WorkerPool
      metadata:
        name: WORKER_POOL
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/launch-stage: BETA
              run.googleapis.com/gpu-zonal-redundancy-disabled: 'GPU_ZONAL_REDUNDANCY'
          spec:
            containers:
            - image: IMAGE_URL
              resources:
                limits:
                  cpu: 'CPU'
                  memory: 'MEMORY'
                  nvidia.com/gpu: '1'
            nodeSelector:
              run.googleapis.com/accelerator: GPU_TYPE

      Substitua o seguinte:

      • WORKER_POOL: o nome do seu conjunto de trabalhadores do Cloud Run.
      • IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
      • CPU: o número de CPUs. Tem de especificar, pelo menos, 4 CPUs.
      • MEMORY: a quantidade de memória. Tem de especificar, pelo menos, 16Gi (16 GiB).
      • GPU_TYPE: o valor nvidia-l4 (nvidia-L4 L minúsculo, não o valor numérico catorze).
      • GPU_ZONAL_REDUNDANCY: false para ativar a redundância zonal da GPU ou true para a desativar.
    3. Crie ou atualize o serviço com o seguinte comando:

      gcloud run services replace service.yaml

    Terraform

    Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

    resource "google_cloud_run_v2_worker_pool" "default" {
      provider = google-beta
      name     = "WORKER_POOL"
      location = "REGION"
    
      template {
        gpu_zonal_redundancy_disabled = "GPU_ZONAL_REDUNDANCY"
        containers {
          image = "IMAGE_URL"
          resources {
            limits = {
              "cpu" = "CPU"
              "memory" = "MEMORY"
              "nvidia.com/gpu" = "1"
            }
          }
        }
        node_selector {
          accelerator = "GPU_TYPE"
        }
      }
    }
    

    Substitua o seguinte:

    • WORKER_POOL: o nome do seu conjunto de trabalhadores do Cloud Run.
    • GPU_ZONAL_REDUNDANCY: false para ativar a redundância zonal da GPU ou true para a desativar.
    • IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
    • CPU: o número de CPUs. Tem de especificar, pelo menos, 4 CPUs.
    • MEMORY: a quantidade de memória. Tem de especificar, pelo menos, 16Gi (16 GiB).
    • GPU_TYPE: o valor nvidia-l4 (nvidia-L4 L minúsculo, não o valor numérico catorze).

    Veja as definições da GPU

    Para ver as definições atuais da GPU para o seu conjunto de trabalhadores do Cloud Run:

    Consola

    1. Na Google Cloud consola, aceda à página de conjuntos de trabalhadores do Cloud Run:

      Aceda aos conjuntos de trabalhadores do Cloud Run

    2. Clique no conjunto de trabalhadores que lhe interessa para abrir a página Detalhes dos conjuntos de trabalhadores.

    3. Clique em Editar e implementar nova revisão.

    4. Localize a definição de GPU nos detalhes da configuração.

    gcloud

    1. Use o seguinte comando:

      gcloud beta run worker-pools describe WORKER_POOL
    2. Localize a definição de GPU na configuração devolvida.

    Remova a GPU

    Pode remover a GPU através da Google Cloud consola, da CLI Google Cloud ou do YAML.

    Consola

    1. Na Google Cloud consola, aceda ao Cloud Run:

      Aceda ao Cloud Run

    2. Selecione Grupos de trabalhadores no menu e clique em Implementar contentor para configurar um novo grupo de trabalhadores. Se estiver a configurar um conjunto de trabalhadores existente, clique no conjunto de trabalhadores e, de seguida, em Editar e implementar nova revisão.

    3. Se estiver a configurar um novo conjunto de trabalhadores, preencha a página de definições inicial do conjunto de trabalhadores e, de seguida, clique em Recipientes, volumes, rede, segurança para expandir a página de configuração do conjunto de trabalhadores.

    4. Clique no separador Contentor.

    imagem

    • Desmarque a caixa de verificação GPU.
    1. Clique em Criar ou Implementar.

    gcloud

    Para remover a GPU, defina o número de GPUs como 0:

      gcloud beta run worker-pools update WORKER_POOL --gpu 0
      

    Substitua WORKER_POOL pelo nome do conjunto de trabalhadores do Cloud Run.

    YAML

    1. Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:

      gcloud run services describe SERVICE --format export > service.yaml
    2. Elimine as linhas nvidia.com/gpu: e nodeSelector: run.googleapis.com/accelerator: nvidia-l4.

    3. Crie ou atualize o serviço com o seguinte comando:

      gcloud run services replace service.yaml

    Bibliotecas

    Por predefinição, todas as bibliotecas de controladores NVIDIA L4 estão montadas em /usr/local/nvidia/lib64. O Cloud Run anexa automaticamente este caminho à variável de ambiente LD_LIBRARY_PATH (ou seja, ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64) do contentor com a GPU. Isto permite que o linker dinâmico encontre as bibliotecas de controladores da NVIDIA. O linker pesquisa e resolve caminhos pela ordem em que os lista na variável de ambiente LD_LIBRARY_PATH. Todos os valores que especificar nesta variável têm precedência sobre o caminho predefinido das bibliotecas do controlador do Cloud Run /usr/local/nvidia/lib64.

    Se quiser usar uma versão do CUDA superior a 12.2, a forma mais fácil é depender de uma imagem base da NVIDIA mais recente com pacotes de compatibilidade futura já instalados. Outra opção é instalar manualmente os pacotes de compatibilidade futura da NVIDIA e adicioná-los ao LD_LIBRARY_PATH. Consulte a matriz de compatibilidade da NVIDIA para determinar que versões do CUDA são compatíveis com a versão do controlador NVIDIA fornecida (535.216.03).