Configurare le GPU per i job Cloud Run

Questa pagina descrive la configurazione della GPU per i tuoi job Cloud Run. Le GPU funzionano bene per i carichi di lavoro di AI, ad esempio l'addestramento di modelli linguistici di grandi dimensioni (LLM) utilizzando i framework che preferisci, l'esecuzione dell'inferenza batch o offline sugli LLM e la gestione di altre attività di calcolo intensivo come l'elaborazione video e il rendering grafico come job in background. Google fornisce GPU NVIDIA L4 con 24 GB di memoria GPU (VRAM), che è separata dalla memoria dell'istanza.

La GPU su Cloud Run è completamente gestita, senza bisogno di driver o librerie aggiuntivi. La funzionalità GPU offre disponibilità on demand senza necessità di prenotazioni, in modo simile al funzionamento di CPU on demand e memoria on demand in Cloud Run.

Le istanze Cloud Run con una GPU L4 collegata con driver preinstallati vengono avviate in circa 5 secondi, dopodiché i processi in esecuzione nel container possono iniziare a utilizzare la GPU.

Puoi configurare una GPU per istanza Cloud Run. Se utilizzi container sidecar, tieni presente che la GPU può essere collegata a un solo container.

Aree geografiche supportate

  • asia-southeast1 (Singapore)
  • asia-south1 (Mumbai) . Questa regione è disponibile solo su invito. Se ti interessa questa regione, contatta il team dedicato al tuo Account Google.
  • europe-west1 (Belgio) icona foglia Bassi livelli di CO2
  • europe-west4 (Paesi Bassi) icona foglia Bassi livelli di CO2
  • us-central1 (Iowa) icona foglia Bassi livelli di CO2
  • us-east4 (Virginia del Nord)

Tipi di GPU supportati

Puoi utilizzare una GPU L4 per istanza Cloud Run. Una GPU L4 ha i seguenti driver preinstallati:

  • Versione attuale del driver NVIDIA: 535.216.03 (CUDA 12.2)

Impatto sui prezzi

Per i dettagli sui prezzi delle GPU, consulta Prezzi di Cloud Run. Tieni presente i seguenti requisiti e considerazioni:

  • Le GPU per i job seguono i prezzi senza ridondanza a livello di zona (in anteprima).
  • Devi utilizzare un minimo di 4 CPU e 16 GiB di memoria.
  • La GPU viene fatturata per l'intera durata del ciclo di vita dell'istanza.

Ridondanza non zonale della GPU

I job Cloud Run forniscono il supporto della ridondanza non zonale (in anteprima) per le istanze abilitate alla GPU. Quando la ridondanza non a livello di zona è abilitata, Cloud Run tenta il failover per i job abilitati alla GPU in base al criterio del "best effort". Cloud Run indirizza le esecuzioni dei job ad altre zone solo se in quel momento è disponibile una capacità GPU sufficiente. Questa opzione non garantisce la capacità riservata per gli scenari di failover, ma comporta un costo inferiore per secondo-GPU.

Richiedi un aumento della quota

Se il tuo progetto non ha una quota GPU, esegui il deployment di un servizio Cloud Run per ricevere automaticamente una concessione di 3 quote GPU nvidia-l4 (ridondanza a livello di zona disattivata) per quella regione. Tieni presente che questa concessione automatica della quota è soggetta a disponibilità a seconda della capacità di CPU e memoria. Quando elimini il servizio inutilizzato, la quota allocata rimane invariata.

Se hai bisogno di GPU Cloud Run aggiuntive per i job, richiedi un aumento della quota.

Il numero massimo di istanze (attività) di job GPU che possono essere eseguite in parallelo è limitato dalle seguenti quote:

Il valore di parallelismo deve essere inferiore alla quota di GPU senza ridondanza a livello di zona o alla quota di istanze GPU di Jobs senza ridondanza a livello di zona, a seconda di quale quota è più restrittiva.

Prima di iniziare

Il seguente elenco descrive i requisiti e le limitazioni per l'utilizzo delle GPU in Cloud Run:

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure 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.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Run API.

    Enable the API

  7. Consulta Best practice: job Cloud Run con GPU per ottimizzare le prestazioni quando utilizzi i job Cloud Run con GPU.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare i job Cloud Run, chiedi all'amministratore di concederti i seguenti ruoli IAM per i job:

  • Cloud Run Developer (roles/run.developer): il job Cloud Run
  • Service Account User (roles/iam.serviceAccountUser): l'identità del servizio

Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM Cloud Run e Autorizzazioni IAM Cloud Run. Se il tuo job Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per ulteriori informazioni sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestire l'accesso.

Configura un job Cloud Run con GPU

Puoi utilizzare la console Google Cloud , Google Cloud CLI o YAML per configurare la GPU.

gcloud

Per creare un job con la GPU abilitata, utilizza il comando gcloud beta run jobs create:

gcloud beta run jobs create JOB_NAME --image=IMAGE --gpu=1

Sostituisci:

  • JOB_NAME con il nome del tuo job Cloud Run.
  • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest.

Per aggiornare la configurazione della GPU per un job, utilizza il 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

Sostituisci:

  • JOB_NAME con il nome del tuo job Cloud Run.
  • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest.
  • CPU con un minimo di 4 CPU per il tuo job. Il valore consigliato è 8.
  • MEMORY con un minimo di 16Gi (16 GiB). Il valore consigliato è 32Gi.
  • GPU_NUMBER con il valore 1 (uno). Se non è specificato, ma è presente un GPU_TYPE, il valore predefinito è 1.
  • GPU_TYPE con il tipo di GPU. Se non è specificato, ma è presente un valore GPU_NUMBER, il valore predefinito è nvidia-l4 (nvidia L4 L minuscola, non il valore numerico quattordici).
  • PARALLELISM con un valore intero inferiore al valore più basso dei limiti di quota applicabili che hai allocato per il tuo progetto.

YAML

  1. Se stai creando un nuovo job, salta questo passaggio. Se stai aggiornando un job esistente, scarica la relativa configurazione YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Aggiorna l'attributo nvidia.com/gpu, annotations: run.googleapis.com/launch-stage per la fase di lancio e nodeSelector:
    run.googleapis.com/accelerator
    :

    apiVersion: 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:
      spec:
        template:
          spec:
            containers:
            - image: IMAGE_URL
              limits:
                cpu: 'CPU'
                memory: 'MEMORY'
                nvidia.com/gpu: 'GPU_NUMBER'
            nodeSelector:
              run.googleapis.com/accelerator: GPU_TYPE

    Sostituisci:

    • JOB_NAME con il nome del tuo job Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest
    • CPU con il numero di CPU. Devi specificare almeno 4 CPU.
    • MEMORY con la quantità di memoria. Devi specificare almeno 16Gi (16 GiB).
    • GPU_NUMBER con il valore 1 (uno) perché supportiamo l'attacco di una sola GPU per istanza Cloud Run.
    • GPU_TYPE con il valore nvidia-l4 (nvidia-L4 L minuscola, non il valore numerico quattordici).
  3. Crea o aggiorna il job utilizzando il seguente comando:

    gcloud run jobs replace job.yaml

Visualizzare le impostazioni della GPU

Per visualizzare le impostazioni GPU attuali per il job Cloud Run:

gcloud

  1. Utilizza questo comando:

    gcloud run jobs describe JOB_NAME
  2. Individua l'impostazione della GPU nella configurazione restituita.

Rimuovi GPU

Puoi rimuovere la GPU utilizzando Google Cloud CLI o YAML.

gcloud

Per rimuovere la GPU, imposta il numero di GPU su 0 utilizzando il comando gcloud beta run jobs update:

  gcloud beta run jobs update JOB_NAME --gpu 0
  

Sostituisci JOB_NAME con il nome del tuo job Cloud Run.

YAML

  1. Se stai creando un nuovo job, salta questo passaggio. Se stai aggiornando un job esistente, scarica la relativa configurazione YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Elimina le righe nvidia.com/gpu: e nodeSelector: run.googleapis.com/accelerator: nvidia-l4.

  3. Crea o aggiorna il job utilizzando il seguente comando:

    gcloud run jobs replace job.yaml

Librerie

Per impostazione predefinita, tutte le librerie dei driver NVIDIA L4 sono montate in /usr/local/nvidia/lib64. Cloud Run aggiunge automaticamente questo percorso alla variabile di ambiente LD_LIBRARY_PATH (ovvero ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64) del container con la GPU. In questo modo, il linker dinamico può trovare le librerie dei driver NVIDIA. Il linker cerca e risolve i percorsi nell'ordine in cui li elenchi nella variabile di ambiente LD_LIBRARY_PATH. I valori che specifichi in questa variabile hanno la precedenza sul percorso predefinito delle librerie dei driver Cloud Run /usr/local/nvidia/lib64.

Se vuoi utilizzare una versione di CUDA superiore a 12.2, il modo più semplice è fare affidamento a un'immagine di base NVIDIA più recente con i pacchetti di compatibilità avanzata già installati. Un'altra opzione è installare manualmente i pacchetti di compatibilità futura NVIDIA e aggiungerli a LD_LIBRARY_PATH. Consulta la matrice di compatibilità di NVIDIA per determinare quali versioni di CUDA sono compatibili con la versione del driver NVIDIA fornita (535.216.03).

Informazioni su GPU e parallelismo

Se esegui attività parallele in un'esecuzione del job, determina e imposta il valore di parallelismo su un valore inferiore al valore più basso dei limiti di quota applicabili che hai allocato per il tuo progetto. Per impostazione predefinita, la quota di istanze di job GPU è impostata su 5 per le attività eseguite in parallelo. Per richiedere un aumento della quota, vedi Come aumentare la quota. I task GPU vengono avviati il più rapidamente possibile e raggiungono un massimo che varia a seconda della quota di GPU allocata per il progetto e la regione selezionati. I deployment di Cloud Run non riescono se imposti il parallelismo su un valore superiore al limite di quota GPU.

Per calcolare la quota di GPU utilizzata dal job per esecuzione, moltiplica il numero di GPU per attività del job per il valore di parallelismo. Ad esempio, se hai una quota di GPU di 10 e deploy il tuo job Cloud Run con --gpu=1, --parallelism=10, il tuo job consuma tutta la quota di 10 GPU. In alternativa, se esegui il deployment con --gpu=1, --parallelism=20, i deployment non vanno a buon fine.

Per ulteriori informazioni, consulta Best practice: job Cloud Run con GPU.