Esta página descreve a configuração de GPU para seu serviço do Cloud Run. As GPUs funcionam bem para cargas de trabalho de inferência de IA, como modelos de linguagem grandes (LLMs) ou outros casos de uso não relacionados à IA que exigem computação intensiva, como transcodificação de vídeo e renderização 3D. O Google fornece GPUs NVIDIA L4 com 24 GB de memória de GPU (VRAM), que é separada da memória da instância.
Para usar o recurso de GPU, solicite uma cota de Total Nvidia L4 GPU allocation, per project per region
.
Para mais detalhes, consulte Antes de começar.
A GPU no Cloud Run é totalmente gerenciada, sem drivers ou bibliotecas extras necessários. O recurso GPU oferece disponibilidade sob demanda sem necessidade de reservas, semelhante à maneira como CPU e memória sob demanda funcionam no Cloud Run. Instâncias de um serviço do Cloud Run que foram configuradas para usar GPU podem ser reduzidas a zero para economia de custos quando não estiverem em uso.
Instâncias do Cloud Run com uma GPU L4 anexada e drivers pré-instalados são iniciados em aproximadamente cinco segundos. Nesse momento, os processos em execução no seu contêiner podem começar a usar a GPU.
É possível configurar uma GPU por instância do Cloud Run. Se você usar contêineres secundários a GPU só pode ser conectada a um único contêiner.
Regiões aceitas
us-central1
(Iowa) Baixo CO2asia-southeast1
(Singapura)
Impacto no preço
Consulte os detalhes de preços de GPU em Preços do Cloud Run. Observe as seguintes considerações importantes:
- Não há taxas por solicitação. Porque você precisa usar
CPU always allocated
para usar o recurso GPU, as instâncias mínimas são cobradas pela taxa total, mesmo quando estão inativas. - É necessário usar pelo menos quatro CPUs e 16 GiB de memória.
- A GPU é cobrada de acordo com a duração total do ciclo de vida da instância.
Tipos de GPU compatíveis
É possível usar uma GPU L4 por instância do Cloud Run. Uma GPU L4 tem os seguintes drivers pré-instalados:
- A versão atual do driver NVIDIA: 535.129.03 (CUDA 12.2)
Antes de começar
A lista a seguir descreve os requisitos e as limitações que se aplicam ao usar GPUs no Cloud Run:
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run API.
- Para usar o recurso de GPUs, você precisa solicitar um aumento de cota para uma região com suporte. A cota necessária é
Total Nvidia L4 GPU allocation, per project per region
, que está na API Cloud Run Admin. - Consulte as práticas recomendadas: inferência de IA no Cloud Run com GPUs para conferir recomendações sobre como criar a imagem do contêiner e carregar modelos grandes.
- Verifique se o serviço do Cloud Run tem as seguintes configurações:
- A CPU precisa ser configurada como CPU sempre alocada. Observe que os serviços sempre alocados da CPU ainda podem ser reduzidos para zero.
- Configure no mínimo 4 CPUs para o serviço, sendo recomendado 8 CPUs.
- Configure um mínimo de 16 GiB de memória, sendo recomendado 32 GiB.
- Determine e defina uma concorrência máxima ideal para o uso da GPU.
- O número máximo de instâncias precisa ser definido como um número abaixo da cota permitida por projeto e por região para GPU. Consulte Sobre GPUs e o número máximo de instâncias.
Funções exigidas
Para receber as permissões necessárias para configurar e implantar os serviços do Cloud Run, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Desenvolvedor do Cloud Run (
roles/run.developer
) no serviço Cloud Run -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço
Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o serviço do Cloud Run interage com as APIs do Google Cloud, como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.
Configurar um serviço do Cloud Run com GPU
Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.
É possível usar o console do Google Cloud, a CLI do Google Cloud ou o YAML para configurar a GPU.
Console
No console do Google Cloud, acesse o Cloud Run:
Clique em Implantar contêiner e selecione Serviço para configurar um novo serviço. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.
Ao configurar um novo serviço, preencha a página inicial de configurações de serviço conforme preferir e clique em Contêineres, volumes, redes e segurança para expandir essa página.
Clique na guia Contêiner.
- Configurar CPU, memória, simultaneidade, ambiente de execução e a sondagem de inicialização, seguindo as recomendações em Antes de começar.
- Marque a caixa de seleção da GPU e selecione o tipo de GPU no menu Tipo de GPU e o número de GPUs no menu Número de GPUs.
Clique em Criar ou Implantar.
gcloud
Para criar um serviço com a GPU ativada, use o comando gcloud beta run deploy:
gcloud beta run deploy SERVICE \ --image IMAGE_URL \ --gpu 1
Substitua:
- SERVICE pelo nome do serviço do Cloud Run;
- IMAGE_URL por uma referência à imagem de contêiner. Por
exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
Para atualizar a configuração de GPU de um serviço, use o comando gcloud beta run services update:
gcloud beta run services update SERVICE \ --image IMAGE_URL \ --cpu CPU \ --memory MEMORY \ --no-cpu-throttling \ --gpu GPU_NUMBER \ --gpu-type GPU_TYPE \ --max-instances MAX_INSTANCE
Substitua:
- SERVICE pelo nome do serviço do Cloud Run;
- IMAGE_URL por uma referência à imagem de contêiner. Por
exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- CPU pelo número de CPUs. É preciso especificar pelo menos
4
CPU. - MEMORY pela quantidade de memória. É necessário especificar pelo menos
16Gi
(16 GiB). - GPU_NUMBER com o valor
1
(um). Se isso não for especificado, mas um GPU_TYPE estiver presente, o padrão será1
. - GPU_TYPE com o tipo de GPU. Se isso não for especificado, mas um GPU_NUMBER estiver presente, o padrão será
nvidia-l4
(nvidiaL
4 L minúsculo, não o valor numérico 14). - MAX_INSTANCE pelo número máximo de instâncias. Esse número não pode exceder a cota de GPU alocada para o projeto.
YAML
Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:
gcloud run services describe SERVICE --format export > service.yaml
Atualize o atributo
nvidia.com/gpu:
enodeSelector:
:
run.googleapis.com/accelerator:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: annotations: autoscaling.knative.dev/maxScale: 'MAX_INSTANCE' run.googleapis.com/cpu-throttling: 'false' spec: containers: - image: IMAGE_URL ports: - containerPort: CONTAINER_PORT name: http1 resources: limits: cpu: 'CPU' memory: 'MEMORY' nvidia.com/gpu: 'GPU_NUMBER' # Optional: use a longer startup probe to allow long starting containers startupProbe: failureThreshold: 1800 periodSeconds: 1 tcpSocket: port: CONTAINER_PORT timeoutSeconds: 1 nodeSelector: run.googleapis.com/accelerator: GPU_TYPE
Substitua:
- SERVICE pelo nome do serviço do Cloud Run;
- IMAGE_URL por uma referência à imagem de contêiner. Por
exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- Substitua CONTAINER_PORT pela porta do contêiner definida para o serviço.
- CPU pelo número de CPUs. É preciso especificar pelo menos
4
CPU. - MEMORY pela quantidade de memória. É necessário especificar pelo menos
16Gi
(16 GiB). - GPU_NUMBER com o valor
1
(um) porque é possível anexar apenas uma GPU por instância do Cloud Run. - GPU_TYPE com o valor
nvidia-l4
(nvidia-L
4 L minúsculo, não o valor numérico 14). - MAX_INSTANCE pelo número máximo de instâncias. Esse número não pode exceder a cota de GPU alocada para o projeto.
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Conferir as configurações da GPU
Para ver as configurações atuais da CPU do serviço do Cloud Run, faça o seguinte:
Console
No console do Google Cloud, acesse o Cloud Run:
Clique no serviço de seu interesse para abrir a página Detalhes do serviço.
Clique na guia Revisões.
No painel de detalhes à direita, a configuração da CPU está listada na guia Contêiner.
gcloud
Use o comando a seguir:
gcloud run services describe SERVICE
Localize a configuração da GPU na configuração retornada.
Como remover a GPU
É possível remover a GPU usando o console do Google Cloud, a CLI do Google Cloud ou o YAML.
Console
No console do Google Cloud, acesse o Cloud Run:
Clique em Implantar contêiner e selecione Serviço para configurar um novo serviço. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.
Ao configurar um novo serviço, preencha a página inicial de configurações de serviço conforme preferir e clique em Contêineres, volumes, redes e segurança para expandir essa página.
Clique na guia Contêiner.
- Desmarque a caixa de seleção da GPU.
Clique em Criar ou Implantar.
gcloud
Para remover a GPU, defina o número de GPUs como 0
usando o comando
gcloud beta run services update:
gcloud beta run services update SERVICE --gpu 0
Substitua SERVICE pelo nome do serviço do Cloud Run.
YAML
Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:
gcloud run services describe SERVICE --format export > service.yaml
Exclua as linhas
nvidia.com/gpu:
enodeSelector: run.googleapis.com/accelerator: nvidia-l4
.Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Bibliotecas
Por padrão, todas as bibliotecas de drivers da NVIDIA L4 são montadas em
/usr/local/nvidia/lib64
.
Se o serviço não encontrar as bibliotecas fornecidas, atualize o caminho de pesquisa
do vinculador dinâmico adicionando a linha ENV LD_LIBRARY_PATH /usr/local/nvidia/lib64:${LD_LIBRARY_PATH}
ao Dockerfile.
Também é possível definir LD_LIBRARY_PATH
como uma variável de ambiente para o
serviço Cloud Run, se você tiver uma imagem e não quiser
reconstruir a imagem com um Dockerfile atualizado.
Se você quiser usar uma versão do CUDA maior que 12.2,
a maneira mais fácil é depender de uma imagem base 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 a LD_LIBRARY_PATH
. Consulte a matriz de compatibilidade da NVIDIA
para determinar quais versões do CUDA são compatíveis com a versão do driver
fornecido (535.129.03).
Sobre GPUs e o número máximo de instâncias
O número de instâncias com GPUs é limitado de duas maneiras:
- A configuração Máximo de instâncias limita o número de instâncias por serviço. Não pode ser maior do que a cota por projeto e região da GPU.
- A cota de GPUs permitida por projeto e região. Isso limita o número de instâncias entre serviços na mesma região.