Esta página descreve a configuração da GPU para as suas tarefas do Cloud Run. As GPUs funcionam bem para cargas de trabalho de IA, como: preparar grandes modelos de linguagem (GMLs) com as suas frameworks preferenciais, realizar inferências em lote ou offline em GMLs e processar outras tarefas que exigem muitos recursos de computação, como o processamento de vídeo e a renderização de gráficos como tarefas em segundo plano. 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)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:
- A GPU para tarefas segue a política de preços sem redundância zonal (em pré-visualização).
- 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.
Redundância não zonal da GPU
A funcionalidade de tarefas do Cloud Run oferece suporte de redundância não zonal (em pré-visualização) apenas para instâncias com GPUs. Com a redundância não zonal ativada, o Cloud Run tenta a comutação por falha para tarefas com GPUs com base no melhor esforço. O Cloud Run encaminha as execuções de tarefas 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.
Consulte o artigo Configure uma tarefa do Cloud Run com GPU para ver detalhes sobre como ativar a redundância não zonal.
Peça um aumento da quota
Se o seu projeto não tiver quota de GPUs, implemente um serviço do Cloud Run para receber automaticamente uma concessão de 3 quotas de GPUs (redundância zonal desativada) para essa região.nvidia-l4
Tenha em atenção que esta concessão automática de quota está sujeita a disponibilidade, consoante a capacidade da CPU e da memória. Quando elimina o serviço não utilizado, a quota atribuída permanece inalterada.
Se precisar de GPUs do Cloud Run adicionais para tarefas, peça um aumento da quota.
O número máximo de instâncias de tarefas de GPU que podem ser executadas em paralelo é limitado pelas seguintes quotas:
Quota de instâncias de GPU do Jobs sem redundância zonal. Por predefinição, esta quota está definida como
5
.
O valor de paralelismo tem de ser inferior à quota de GPU sem redundância zonal ou à quota de instâncias de GPU de tarefas sem redundância zonal, consoante a quota mais restritiva.
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.
- Consulte o artigo Práticas recomendadas: tarefas do Cloud Run com GPUs para otimizar o desempenho quando usar tarefas do Cloud Run com GPUs.
-
Programador do Cloud Run (
roles/run.developer
) – a tarefa do Cloud Run -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
): a identidade do serviço - JOB_NAME com o nome da tarefa do Cloud Run.
- IMAGE_URL: uma referência à
imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/job:latest
. - JOB_NAME com o nome da tarefa do Cloud Run.
- IMAGE_URL: uma referência à
imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/job:latest
. - CPU com um mínimo de
4
CPU para o seu trabalho. O valor recomendado é8
. - MEMORY com um mínimo de
16Gi
(16 GiB). O valor recomendado é32Gi
. - GPU_NUMBER com o valor
1
(um). Se não estiver especificado, mas estiver presente um GPU_TYPE, a predefinição é1
. - GPU_TYPE com 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). - PARALLELISM com um valor inteiro inferior ao valor mais baixo dos limites de quota aplicáveis que atribuiu ao seu projeto.
Se estiver a criar uma nova tarefa, ignore este passo. Se estiver a atualizar uma tarefa existente, transfira a respetiva configuração YAML:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Atualize o atributo
nvidia.com/gpu
,annotations: run.googleapis.com/launch-stage
para a fase de lançamento enodeSelector:
:
run.googleapis.com/acceleratorapiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME labels: cloud.googleapis.com/location: REGION annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: annotations: run.googleapis.com/gpu-zonal-redundancy-disabled: 'true' spec: template: spec: containers: - image: IMAGE_URL limits: cpu: 'CPU' memory: 'MEMORY' nvidia.com/gpu: 'GPU_NUMBER' nodeSelector: run.googleapis.com/accelerator: GPU_TYPE
Substituir:
- JOB_NAME com o nome da tarefa do Cloud Run.
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/job:latest
- CPU com o número de CPUs. Tem de especificar, pelo menos,
4
CPUs. - MEMORY com a quantidade de memória. Tem de especificar, pelo menos,
16Gi
(16 GiB). - GPU_NUMBER com o valor
1
(um), porque só suportamos a associação de uma GPU por instância do Cloud Run. - GPU_TYPE com o valor
nvidia-l4
(nvidia-L
4, 4 letras L minúsculas, não o valor numérico catorze).
Crie ou atualize a tarefa através do seguinte comando:
gcloud run jobs replace job.yaml
Use o seguinte comando:
gcloud run jobs describe JOB_NAME
Localize a definição de GPU na configuração devolvida.
Se estiver a criar uma nova tarefa, ignore este passo. Se estiver a atualizar uma tarefa existente, transfira a respetiva configuração YAML:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Elimine as linhas
nvidia.com/gpu:
,run.googleapis.com/gpu-zonal-redundancy-disabled: 'true'
enodeSelector: run.googleapis.com/accelerator: nvidia-l4
.Crie ou atualize a tarefa através do seguinte comando:
gcloud run jobs replace job.yaml
Funções necessárias
Para receber as autorizações de que precisa para configurar tarefas do Cloud Run, peça ao seu administrador para lhe conceder as seguintes funções da IAM nas tarefas:
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 a sua tarefa do Cloud Run interagir com Google Cloud APIs, como as bibliotecas de 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 uma tarefa do Cloud Run com GPU
Pode usar a Google Cloud consola, a CLI do Google Cloud ou o YAML para configurar a GPU.
gcloud
Para ativar a redundância não zonal, tem de especificar
--no-gpu-zonal-redundancy
. Isto é necessário para usar a GPU com tarefas.
Para criar uma tarefa com a GPU ativada, use o comando gcloud beta run jobs create:
gcloud beta run jobs create JOB_NAME \ --image=IMAGE \ --gpu=1 \ --no-gpu-zonal-redundancy
Substituir:
Para atualizar a configuração da GPU de uma tarefa, use o comando gcloud beta run jobs update:
gcloud beta run jobs update JOB_NAME \ --image IMAGE_URL \ --cpu CPU \ --memory MEMORY \ --gpu GPU_NUMBER \ --gpu-type GPU_TYPE \ --parallelism PARALLELISM \ --no-gpu-zonal-redundancy
Substituir:
YAML
Tem de definir a anotação run.googleapis.com/gpu-zonal-redundancy-disabled:
como "true". Isto ativa a redundância não zonal, que é necessária para GPUs para tarefas.
Veja as definições da GPU
Para ver as definições atuais da GPU para a sua tarefa do Cloud Run:
gcloud
Remova a GPU
Pode remover a GPU através da CLI Google Cloud ou do YAML.
gcloud
Para remover a GPU, defina o número de GPUs para 0
com o comando
gcloud beta run jobs update:
gcloud beta run jobs update JOB_NAME --gpu 0
Substitua JOB_NAME pelo nome da sua tarefa 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 do paralelismo
Se estiver a executar tarefas paralelas numa execução de trabalho, determine e defina o valor de paralelismo para um valor inferior ao valor mais baixo dos limites de quota aplicáveis que atribuiu ao seu projeto.
Por predefinição, a quota de instâncias de tarefas de GPU está definida como 5
para tarefas que são executadas em paralelo. Para pedir um aumento da quota, consulte o artigo Como aumentar a quota. As tarefas de GPU são iniciadas o mais rapidamente possível e
atingem um máximo que varia consoante a quota de GPU que atribuiu ao
projeto e à região selecionada. As implementações do Cloud Run falham se definir o paralelismo para um valor superior ao limite da quota de GPU.
Para calcular a quota de GPUs que a sua tarefa usa por execução, multiplique o número de GPUs por tarefa da tarefa pelo valor de paralelismo. Por exemplo, se tiver uma quota de GPU de 10 e implementar a sua tarefa do Cloud Run com --gpu=1
, --parallelism=10
, a sua tarefa consome toda a quota de 10 GPUs. Em alternativa, se fizer a implementação com --gpu=1
, --parallelism=20
, as implementações falham.
Para mais informações, consulte o artigo Práticas recomendadas: tarefas do Cloud Run com GPUs.