Esegui l'inferenza LLM su GPU con Gemma 4 e Ollama

Obiettivi

Gemma 4 è la famiglia di modelli open-weight più efficiente di Google, che offre solide capacità di ragionamento e capacità agentiche. Il contesto lungo, la multimodalità, il ragionamento e la chiamata di strumenti consentono a Gemma 4 di gestire logica complessa, pianificazione in più passaggi, programmazione e workflow agentici.

Questa guida mostra come eseguire l'inferenza LLM su GPU Cloud Run con Gemma e Ollama e ha i seguenti obiettivi:

  • Esegui il deployment di Ollama con il modello Gemma 4 su un servizio Cloud Run abilitato per la GPU.
  • Invia prompt al servizio Ollama sul suo endpoint privato.

Per scoprire un modo alternativo per eseguire il deployment dei modelli aperti Gemma 4 su Cloud Run utilizzando un container vLLM, consulta Esegui modelli Gemma 4 su Cloud Run.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

I nuovi utenti di Google Cloud potrebbero avere diritto a una prova senza costi.

Prima di iniziare

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  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. Abilitare l'API Cloud Run.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin), che include l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    Abilitare l'API

  7. Installa e inizializza gcloud CLI.
  8. Richiedi la quota Total Nvidia RTX Pro 6000 GPU allocation, in milli GPU, without zonal redundancy, per project per region nell'API Cloud Run Admin nella pagina Quote e limiti di sistema per completare questo tutorial.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per completare il tutorial, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Concedi i ruoli

Console

  1. Nella console Google Cloud vai alla pagina IAM.

    Vai a IAM
  2. Seleziona il progetto.
  3. Fai clic su Concedi l'accesso.
  4. Nel campo Nuove entità, inserisci il tuo identificatore dell'utente. In genere si tratta dell'indirizzo email utilizzato per il deployment del servizio Cloud Run.

  5. Nell'elenco Seleziona un ruolo, seleziona un ruolo.
  6. Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo aggiuntivo.
  7. Fai clic su Salva.

gcloud

Per concedere i ruoli IAM richiesti al tuo account nel tuo progetto:

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

Sostituisci:

  • PROJECT_NUMBER con il numero del tuo progetto Google Cloud .
  • PROJECT_ID con l'ID progetto Google Cloud .
  • PRINCIPAL con l'account per il quale stai aggiungendo l'associazione. In genere si tratta dell'indirizzo email utilizzato per eseguire il deployment del servizio Cloud Run.
  • ROLE con il ruolo che stai aggiungendo all'account deployer.

Esegui il deployment del servizio Ollama per l'inferenza LLM

Esegui il deployment del servizio su 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"

Sostituisci:

  • SERVICE-NAME con un nome univoco per il servizio Cloud Run.
  • PROJECT con l'ID progetto Google Cloud .
  • REGION con una regione Google Cloud in cui sono supportate le GPU nvidia-rtx-pro-6000 per Cloud Run, ad esempio us-central1. Per un elenco completo delle regioni supportate per i deployment abilitati per la GPU, consulta Configurazione GPU.

  • MODEL_NAME con il nome completo di una variante di Gemma 4.

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

Gemma 4 26B e 31B richiedono una configurazione più avanzata di Cloud Run e vLLM con Direct VPC Egress e Run:ai Model Streamer.

Tieni presente i seguenti flag importanti in questo comando:

  • --concurrency 16 è impostato in modo che corrisponda al valore della variabile di ambiente OLLAMA_NUM_PARALLEL.
  • --gpu 1 con --gpu-type nvidia-rtx-pro-6000 assegna una GPU NVIDIA RTX PRO 6000 Blackwell a ogni istanza Cloud Run nel servizio.
  • --max-instances 1 specifica il numero massimo di istanze a cui eseguire lo scale up. Deve essere uguale o inferiore alla quota della GPU NVIDIA RTX Pro 6000 (Total NVIDIA RTX Pro 6000 GPU allocation, in milli GPU, without zonal redundancy, per project per region) del tuo progetto.
  • --no-allow-unauthenticated limita l'accesso non autenticato al servizio. Mantenendo privato il servizio, puoi fare affidamento sull'autenticazione Identity and Access Management (IAM) integrata di Cloud Run per la comunicazione da servizio a servizio. Consulta la sezione Gestione dell'accesso tramite IAM.
  • --no-cpu-throttling è necessario per abilitare la GPU.
  • --no-gpu-zonal-redundancy imposta le opzioni di ridondanza a livello di zona in base ai requisiti di failover a livello di zona e alla quota disponibile. Per maggiori dettagli, consulta Opzioni di ridondanza a livello di zona delle GPU.

Impostazioni di concorrenza per prestazioni ottimali

Questa sezione fornisce il contesto delle impostazioni di concorrenza consigliate. Per una latenza delle richieste ottimale, assicurati che l'impostazione --concurrency sia uguale alla variabile di ambiente OLLAMA_NUM_PARALLEL di Ollama.

  • OLLAMA_NUM_PARALLEL determina il numero di slot di richiesta disponibili per ogni modello per gestire le richieste di inferenza contemporaneamente.
  • --concurrency determina il numero di richieste che Cloud Run invia a un'istanza Ollama contemporaneamente.

Se --concurrency supera OLLAMA_NUM_PARALLEL, Cloud Run può inviare più richieste a un modello in Ollama rispetto agli slot di richiesta disponibili. Ciò comporta la creazione di code di richieste all'interno di Ollama, aumentando la latenza delle richieste in coda. Inoltre, la scalabilità automatica è meno reattiva, poiché le richieste in coda non attivano Cloud Run per fare lo scale out e avviare nuove istanze.

Ollama supporta anche la pubblicazione di più modelli da una singola GPU. Per evitare la coda delle richieste nell'istanza Ollama, imposta --concurrency in modo che corrisponda a OLLAMA_NUM_PARALLEL.

L'aumento di OLLAMA_NUM_PARALLEL allunga anche i tempi delle richieste parallele.

Ottimizzare l'utilizzo della GPU

Per un utilizzo della GPU ottimale, aumenta --concurrency, mantenendolo entro il doppio del valore di OLLAMA_NUM_PARALLEL. Sebbene ciò comporti la messa in coda delle richieste in Ollama, può contribuire a migliorare l'utilizzo: le istanze Ollama possono elaborare immediatamente le richieste dalla coda e le code aiutano ad assorbire i picchi di traffico.

Testare il servizio Ollama di cui è stato eseguito il deployment con curl

Ora che hai eseguito il deployment del servizio Ollama, puoi inviargli richieste. Tuttavia, se invii una richiesta direttamente, Cloud Run risponde con HTTP 401 Unauthorized. Ciò è intenzionale, perché un'API di inferenza LLM è destinata ad altri servizi da chiamare, ad esempio un'applicazione frontend. Per ulteriori informazioni sull'autenticazione tra servizi su Cloud Run, consulta Autenticazione tra servizi.

Per inviare richieste al servizio Ollama, aggiungi un'intestazione con un token OIDC valido alle richieste, ad esempio utilizzando il proxy per sviluppatori di Cloud Run:

  1. Avvia il proxy e, quando ti viene chiesto di installare il componente cloud-run-proxy, scegli Y:

    gcloud run services proxy SERVICE-NAME \
       --project PROJECT_ID \
       --region REGION \
       --port=9090
  2. Invia una richiesta in una scheda del terminale separata, lasciando in esecuzione il proxy. Tieni presente che il proxy viene eseguito su localhost:9090:

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

    Questo comando dovrebbe fornire un output di streaming simile a questo:

    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**.
    ...
    

Esegui la pulizia

Per evitare addebiti aggiuntivi al tuo account Google Cloud , elimina tutte le risorse che hai implementato con questo tutorial.

Elimina il progetto

Se hai creato un nuovo progetto per questo tutorial, eliminalo. Se hai utilizzato un progetto esistente e devi conservarlo senza le modifiche aggiunte in questo tutorial, elimina le risorse che hai creato per il tutorial.

Il modo più semplice per eliminare la fatturazione è eliminare il progetto creato per il tutorial.

Per eliminare il progetto:

  1. Nella console Google Cloud , vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona quello che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Elimina le risorse del tutorial

  1. Elimina il servizio Cloud Run di cui hai eseguito il deployment in questo tutorial. I servizi Cloud Run non comportano costi finché non ricevono richieste.

    Per eliminare il servizio Cloud Run, esegui questo comando:

    gcloud run services delete SERVICE-NAME

    Sostituisci SERVICE-NAME con il nome del servizio.

    Puoi eliminare i servizi Cloud Run anche dalla consoleGoogle Cloud .

  2. Rimuovi la configurazione della regione predefinita gcloud che hai aggiunto durante la configurazione del tutorial:

     gcloud config unset run/region
    
  3. Rimuovi la configurazione del progetto:

     gcloud config unset project
    

Passaggi successivi