Executar inferência de LLM em GPUs com o Gemma 4 e o Ollama

Objetivos

A Gemma 4 é a família de modelos abertos mais eficiente do Google, oferecendo recursos de raciocínio e de agente avançados. O contexto longo, a multimodalidade, o raciocínio e a chamada de função permitem que o Gemma 4 lide com lógica complexa, planejamento em várias etapas, programação e fluxos de trabalho de agentes.

Este guia mostra como executar a inferência de LLM em GPUs do Cloud Run com o Gemma e o Ollama, e tem os seguintes objetivos:

  • Implante o Ollama com o modelo Gemma 4 em um serviço do Cloud Run com GPU.
  • Envie comandos para o serviço Ollama no endpoint particular.

Para aprender uma maneira alternativa de implantar modelos abertos do Gemma 4 no Cloud Run usando um contêiner vLLM, consulte Executar modelos do Gemma 4 no Cloud Run.

Custos

Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.

Novos usuários do Google Cloud podem estar qualificados para um teste sem custo financeiro.

Antes de começar

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  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 role (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 role (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. ativar a API Cloud Run;

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar a API

  7. Instale e inicialize a gcloud CLI.
  8. Solicite a cota Total Nvidia RTX Pro 6000 GPU allocation, in milli GPU, without zonal redundancy, per project per region na API Cloud Run Admin na página Cotas e limites do sistema para concluir este tutorial.

Funções exigidas

Para conseguir as permissões necessárias para concluir o tutorial, peça ao administrador para conceder a você os seguintes papéis do IAM no seu projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Conceder os papéis

Console

  1. No console do Google Cloud , acesse a página IAM.

    Acessar IAM
  2. Selecione o projeto.
  3. Clique em Conceder acesso.
  4. No campo Novos principais, digite seu identificador de usuário. Normalmente, esse é o endereço de e-mail usado para implantar o serviço do Cloud Run.

  5. Na lista Selecionar papel, escolha um.
  6. Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
  7. Clique em Salvar.

gcloud

Para conceder os papéis do IAM necessários à sua conta no projeto:

     gcloud projects add-iam-policy-binding PROJECT_ID \
         --member=PRINCIPAL \
         --role=ROLE
     

Substitua:

  • PROJECT_NUMBER pelo número do projeto do Google Cloud .
  • PROJECT_ID com o ID do seu projeto Google Cloud .
  • PRINCIPAL com a conta a que você está adicionando a vinculação. Normalmente, esse é o endereço de e-mail usado para implantar o serviço do Cloud Run.
  • ROLE com o papel que você está adicionando à conta do implantador.

Implantar o serviço Ollama para inferência de LLM

Implante o serviço no Cloud Run:

gcloud beta run deploy SERVICE-NAME \
    --image "ollama/ollama:latest" \
    --project PROJECT_ID \
    --region REGION \
    --no-allow-unauthenticated \
    --cpu 20 \
    --memory 80Gi \
    --gpu 1 \
    --gpu-type nvidia-rtx-pro-6000 \
    --no-gpu-zonal-redundancy \
    --max-instances 1 \
    --concurrency 16 \
    --timeout 600 \
    --set-env-vars=OLLAMA_NUM_PARALLEL=16 \
    --set-env-vars=OLLAMA_HOST=0.0.0.0:8080 \
    --set-env-vars=OLLAMA_DEBUG=false \
    --set-env-vars=OLLAMA_KEEP_ALIVE=-1 \
    --startup-probe tcpSocket.port=8080,initialDelaySeconds=240,failureThreshold=1,timeoutSeconds=240,periodSeconds=240 \
    --command "bash" \
    --args="-c,(sleep 15 && ollama pull MODEL_NAME) & ollama serve"

Substitua:

  • SERVICE-NAME com um nome exclusivo para o serviço do Cloud Run.
  • PROJECT com o Google Cloud ID do projeto.
  • REGION com uma região Google Cloud em que as GPUs nvidia-rtx-pro-6000 são compatíveis com o Cloud Run, como us-central1. Para conferir uma lista completa de regiões compatíveis com implantações habilitadas para GPU, consulte Configuração de GPU.

  • MODEL_NAME com o nome completo de uma variante do Gemma 4.

    • Gemma 4 E2B: gemma4:e2b
    • Gemma 4 E4B: gemma4:e4b

O Gemma 4 26B e 31B exigem uma configuração mais avançada do Cloud Run e do vLLM com saída direta da VPC e o Model Streamer do Run:ai.

Observe as seguintes flags importantes neste comando:

  • --concurrency 16 está definido para corresponder ao valor da variável de ambiente OLLAMA_NUM_PARALLEL.
  • --gpu 1 com --gpu-type nvidia-rtx-pro-6000 atribui uma GPU NVIDIA RTX PRO 6000 Blackwell a cada instância do Cloud Run no serviço.
  • --max-instances 1 especifica o número máximo de instâncias para escalonar. Ela precisa ser igual ou menor que a cota de GPU NVIDIA RTX Pro 6000 (Total NVIDIA RTX Pro 6000 GPU allocation, in milli GPU, without zonal redundancy, per project per region) do seu projeto.
  • --no-allow-unauthenticated restringe o acesso não autenticado ao serviço. Ao manter o serviço privado, você pode confiar na API integrada do Cloud Run Autenticação do Identity and Access Management (IAM) para comunicação de serviço a serviço. Consulte Como gerenciar o acesso usando o IAM.
  • --no-cpu-throttling é necessário para ativar a GPU.
  • O --no-gpu-zonal-redundancy define opções de redundância zonal dependendo dos seus requisitos de failover zonal e da cota disponível. Consulte Opções de redundância zonal de GPU para mais detalhes.

Configurações de simultaneidade para performance ideal

Nesta seção, fornecemos contexto sobre as configurações de simultaneidade recomendadas. Para uma latência de solicitação ideal, verifique se a configuração --concurrency é igual à variável de ambiente OLLAMA_NUM_PARALLEL do Ollama.

  • OLLAMA_NUM_PARALLEL determina quantos slots de solicitação estão disponíveis para cada modelo para processar solicitações de inferência simultaneamente.
  • O --concurrency determina quantas solicitações o Cloud Run envia para uma instância do Ollama ao mesmo tempo.

Se --concurrency exceder OLLAMA_NUM_PARALLEL, o Cloud Run poderá enviar mais solicitações a um modelo em Ollama do que os slots disponíveis para ele. Isso leva à formação de filas de solicitações no Ollama, aumentando a latência das solicitações na fila. Isso também leva a um escalonamento automático menos responsivo, já que as solicitações em fila não acionam o Cloud Run para escalonar horizontalmente e iniciar novas instâncias.

O Ollama também oferece suporte à exibição de vários modelos de uma GPU. Para evitar a fila de solicitações na instância do Ollama, defina --concurrency para corresponder a OLLAMA_NUM_PARALLEL.

Aumentar OLLAMA_NUM_PARALLEL também faz com que as solicitações paralelas demorem mais.

Otimizar o uso da GPU

Para uma utilização ideal da GPU, aumente --concurrency, mantendo-o dentro do dobro do valor de OLLAMA_NUM_PARALLEL. Embora isso leve à fila de solicitações no Ollama, ele pode ajudar a melhorar a utilização: as instâncias do Ollama podem processar imediatamente as solicitações da fila, e as filas ajudam a absorver picos de tráfego.

Testar o serviço Ollama implantado com curl

Agora que você implantou o serviço Ollama, é possível enviar solicitações para ele. No entanto, se você enviar uma solicitação diretamente, o Cloud Run responderá com HTTP 401 Unauthorized. Isso é intencional, porque uma API de inferência de LLM é destinada a outros serviços para chamada, como um aplicativo de front-end. Para mais informações sobre serviços no Cloud Run, consulte Como autenticar serviço a serviço.

Para enviar solicitações ao serviço do Ollama, adicione um cabeçalho com um token OIDC válido às solicitações, por exemplo, usando o proxy de desenvolvedor do Cloud Run:

  1. Inicie o proxy e, quando solicitado a instalar o componente cloud-run-proxy, escolha Y:

    gcloud run services proxy SERVICE-NAME \
       --project PROJECT_ID \
       --region REGION \
       --port=9090
  2. Envie uma solicitação para ele em uma guia de terminal separada, deixando o proxy em execução. Observe que o proxy é executado em localhost:9090:

    curl http://localhost:9090/api/generate -d '{
       "model": "MODEL_NAME",
       "prompt": "Why is the sky blue?",
       "stream": false
    }' | jq -r '.response'

    O comando vai fornecer uma saída de streaming semelhante a esta:

    This is one of the most beautiful and fundamental questions in physics! The reason the sky appears blue is due to a phenomenon called **Rayleigh Scattering**.
    ...
    

Limpar

Para evitar cobranças extras na sua conta do Google Cloud , exclua todos os recursos implantados com este tutorial.

Excluir o projeto

Se você criou um novo projeto para este tutorial, exclua-o. Se você usou um projeto atual e precisa mantê-lo sem as mudanças adicionadas neste tutorial, exclua os recursos criados para o tutorial.

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. No console Google Cloud , acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Excluir recursos do tutorial

  1. Exclua o serviço do Cloud Run que você implantou neste tutorial. Os serviços do Cloud Run não geram custos até receberem solicitações.

    Para excluir o serviço do Cloud Run, execute o seguinte comando:

    gcloud run services delete SERVICE-NAME

    SERVICE-NAME pelo nome do serviço;

    Também é possível excluir os serviços do Cloud Run no consoleGoogle Cloud .

  2. Remova a configuração da região padrão do gcloud que você adicionou durante a configuração do tutorial:

     gcloud config unset run/region
    
  3. Remova a configuração do projeto:

     gcloud config unset project
    

A seguir