Esta página descreve a configuração da GPU para os seus serviços do Cloud Run. As GPUs funcionam bem para cargas de trabalho de inferência de IA, como grandes modelos de linguagem (GMLs) ou outros exemplos de utilização não relacionados com a IA que exigem muitos recursos de computação, como a transcodificação de vídeo e a renderização 3D. 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 de um serviço do Cloud Run que tenha sido configurado para usar a GPU podem ser reduzidas a zero para poupar custos quando não estiverem a ser usadas.
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)Baixo CO2
europe-west4
(Países Baixos)Baixo CO2
us-central1
(Iowa)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:
- Não existem taxas por pedido. Tem de usar a faturação baseada em instâncias para usar a funcionalidade de GPU. As instâncias mínimas são cobradas à taxa total, mesmo quando estão inativas.
- 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.
- 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.
- Quando implementa serviços ou funções a partir do código fonte com a configuração de GPU usando
gcloud beta
, o Cloud Run usa o tipo de máquinae2-highcpu-8
, em vez do tipo de máquinae2-standard-2
predefinido (pré-visualização). O tipo de máquina maior oferece um suporte de CPU mais elevado e uma largura de banda da rede mais elevada, o que resulta em tempos de compilação mais rápidos.
Opções de redundância zonal da GPU
Por predefinição, o Cloud Run implementa o seu serviço em várias zonas numa região. Esta arquitetura oferece resiliência inerente: se uma zona tiver 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 estes 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 em bom estado restantes. Devido à natureza restrita das GPUs, esta capacidade pode nem sempre estar disponível.
Para aumentar a disponibilidade dos seus serviços 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 serviço em várias zonas. Isto aumenta significativamente a probabilidade de o seu serviço conseguir processar o tráfego reencaminhado de uma zona afetada, oferecendo 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 SLA da GPU do Cloud Run depende de o serviço usar 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-l4
GPUs 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 do Cloud Run adicionais, tem de pedir um aumento da quota
para o seu serviço 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:
- 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.
-
Verify 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run API.
- Peça a quota necessária.
- Consulte as práticas recomendadas: inferência de IA no Cloud Run com GPUs para ver recomendações sobre a criação da imagem do contentor e o carregamento de modelos grandes.
- Certifique-se de que o seu serviço 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 serviços definidos para faturação baseada em instâncias ainda podem ser dimensionados para zero.
- Configure um mínimo de 4 CPUs para o seu serviço, sendo recomendadas 8 CPUs.
- Configure um mínimo de 16 GiB de memória, sendo recomendados 32 GiB.
- Determine e defina uma concorrência máxima ideal para a utilização da GPU.
- O número máximo de instâncias tem de ser definido para um número inferior à quota permitida por projeto por região para a GPU. Consulte o artigo Acerca das GPUs e das instâncias máximas.
-
Programador do Cloud Run (
roles/run.developer
) – o serviço do Cloud Run -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
): a identidade do serviço Na Google Cloud consola, aceda ao Cloud Run:
Selecione Serviços no menu e clique em Implementar contentor para configurar um novo serviço. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.
Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço e, de seguida, clique em Contentores, volumes, rede, segurança para expandir a página de configuração do serviço.
Clique no separador Contentor.
- 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 novos serviços. 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.
Clique em Criar ou Implementar.
Para implementar um contentor:
gcloud run deploy SERVICE \ --image IMAGE_URL \ --gpu 1
Substitua o seguinte:
- SERVICE: o nome do seu serviço do Cloud Run.
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Para implementar código-fonte e permitir que o Cloud Run use por predefinição o tipo de máquina
e2-highcpu-8
do Cloud Build, use o comandogcloud beta run deploy
:gcloud beta run deploy SERVICE \ --source . \ --gpu 1
- SERVICE: o nome do seu serviço do Cloud Run.
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - 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 estiver especificado, mas estiver presente um GPU_TYPE, a predefinição é1
. - GPU_TYPE: o tipo de GPU. Se não estiver especificado, mas estiver presente um GPU_NUMBER, a predefinição é
nvidia-l4
(nvidiaL
4 L minúsculos, não o valor numérico catorze). - MAX_INSTANCE: o número máximo de instâncias. Este número não pode exceder a quota de GPUs atribuída ao seu projeto.
- GPU_ZONAL_REDUNDANCY:
no-gpu-zonal-redundancy
para desativar a redundância zonal ougpu-zonal-redundancy
para a ativar. 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
Atualize o atributo
nvidia.com/gpu:
enodeSelector:
:
run.googleapis.com/accelerator:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: autoscaling.knative.dev/maxScale: 'MAX_INSTANCE' run.googleapis.com/cpu-throttling: 'false' run.googleapis.com/gpu-zonal-redundancy-disabled: 'GPU_ZONAL_REDUNDANCY' spec: containers: - image: IMAGE_URL ports: - containerPort: CONTAINER_PORT name: http1 resources: limits: cpu: 'CPU' memory: 'MEMORY' nvidia.com/gpu: '1' # 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 o seguinte:
- SERVICE: o nome do seu serviço do Cloud Run.
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - CONTAINER_PORT: a porta do contentor definida para o seu serviço.
- 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-L
4 L minúsculo, não o valor numérico catorze). - MAX_INSTANCE: o número máximo de instâncias. Este número não pode exceder a quota de GPUs atribuída ao seu projeto.
- GPU_ZONAL_REDUNDANCY:
false
para ativar a redundância zonal da GPU outrue
para a desativar.
Crie ou atualize o serviço com o seguinte comando:
gcloud run services replace service.yaml
- SERVICE: o nome do seu serviço do Cloud Run.
- GPU_ZONAL_REDUNDANCY:
false
para ativar a redundância zonal da GPU outrue
para a desativar. - IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - 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-L
4 letras L minúsculas, não o valor numérico catorze). Na Google Cloud consola, aceda ao Cloud Run:
Clique no serviço que lhe interessa para abrir a página Detalhes do serviço.
Clique no separador Revisões.
No painel de detalhes à direita, a definição da GPU é apresentada no separador Contentor.
Use o seguinte comando:
gcloud run services describe SERVICE
Localize a definição de GPU na configuração devolvida.
Na Google Cloud consola, aceda ao Cloud Run:
Selecione Serviços no menu e clique em Implementar contentor para configurar um novo serviço. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.
Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço e, de seguida, clique em Contentores, volumes, rede, segurança para expandir a página de configuração do serviço.
Clique no separador Contentor.
- Desmarque a caixa de verificação da GPU.
Clique em Criar ou Implementar.
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
Elimine as linhas
nvidia.com/gpu:
enodeSelector: run.googleapis.com/accelerator: nvidia-l4
.Crie ou atualize o serviço com o seguinte comando:
gcloud run services replace service.yaml
- A definição Máximo de instâncias limita o número de instâncias por serviço. Não é possível definir um valor superior à quota de GPU por projeto por região para GPU.
- A quota de GPUs permitidas por projeto por região. Isto limita o número de instâncias nos serviços na mesma região.
Funções necessárias
Para receber as autorizações de que precisa para configurar e implementar serviços do Cloud Run, peça ao seu administrador que lhe conceda as seguintes funções da IAM nos serviços:
Se estiver a implementar um serviço ou uma função a partir do código fonte, também tem de ter funções adicionais concedidas no seu projeto e na conta de serviço do Cloud Build.
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 serviço do Cloud Run interage com Google Cloud APIs, como as bibliotecas cliente da Google Cloud, 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 serviço 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
gcloud
Para criar um serviço com a GPU ativada, use o comando gcloud run deploy:
Para atualizar a configuração da GPU de um serviço, use o comando gcloud run services update:
gcloud 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 --GPU_ZONAL_REDUNDANCY
Substitua o seguinte:
YAML
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na sua configuração do Terraform:resource "google_cloud_run_v2_service" "default" {
provider = google-beta
name = "SERVICE"
location = "europe-west1"
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:
Veja as definições da GPU
Para ver as definições atuais da GPU do seu serviço do Cloud Run:
Consola
gcloud
Remover GPU
Pode remover a GPU através da Google Cloud consola, da CLI Google Cloud ou do YAML.
Consola
gcloud
Para remover a GPU, defina o número de GPUs para 0
com o comando
gcloud run services update:
gcloud run services update SERVICE --gpu 0
Substitua SERVICE pelo nome do seu serviço do Cloud Run.
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 da NVIDIA
fornecida (535.216.03).
Acerca das GPUs e das instâncias máximas
O número de instâncias com GPUs está limitado de duas formas: