Mengonfigurasi GPU untuk tugas Cloud Run

Halaman ini menjelaskan konfigurasi GPU untuk tugas Cloud Run Anda. GPU berfungsi dengan baik untuk workload AI seperti, melatih model bahasa besar (LLM) menggunakan framework pilihan Anda, melakukan inferensi batch atau offline pada LLM, dan menangani tugas intensif komputasi lainnya seperti pemrosesan video dan rendering grafis sebagai tugas latar belakang. Google menyediakan GPU NVIDIA L4 dengan memori GPU (VRAM) sebesar 24 GB, yang terpisah dari memori instance.

GPU di Cloud Run dikelola sepenuhnya, tanpa memerlukan driver atau library tambahan. Fitur GPU menawarkan ketersediaan on-demand tanpa perlu reservasi, mirip dengan cara kerja CPU on-demand dan memori on-demand di Cloud Run.

Instance Cloud Run dengan GPU L4 yang terpasang dan driver yang telah diinstal sebelumnya dimulai dalam waktu sekitar 5 detik, dan pada saat itu proses yang berjalan di container Anda dapat mulai menggunakan GPU.

Anda dapat mengonfigurasi satu GPU per instance Cloud Run. Jika Anda menggunakan container sidecar, perhatikan bahwa GPU hanya dapat dilampirkan ke satu container.

Region yang didukung

  • asia-southeast1 (Singapura)
  • asia-south1 (Mumbai) . Region ini hanya tersedia berdasarkan undangan. Hubungi tim Akun Google Anda jika Anda tertarik dengan wilayah ini.
  • europe-west1 (Belgia) ikon daun CO2 Rendah
  • europe-west4 (Belanda) ikon daun CO2 Rendah
  • us-central1 (Iowa) ikon daun CO2 Rendah
  • us-east4 (North Virginia)

Jenis GPU yang didukung

Anda dapat menggunakan satu GPU L4 per instance Cloud Run. GPU L4 memiliki driver yang telah diinstal sebelumnya berikut:

  • Versi driver NVIDIA saat ini: 535.216.03 (CUDA 12.2)

Dampak harga

Lihat Harga Cloud Run untuk mengetahui detail harga GPU. Perhatikan persyaratan dan pertimbangan berikut:

  • GPU untuk tugas mengikuti Harga tanpa redundansi zona (dalam pratinjau).
  • Anda harus menggunakan minimal 4 CPU dan memori 16 GiB.
  • GPU ditagih selama seluruh durasi siklus proses instance.

Redundansi non-zonal GPU

Tugas Cloud Run menyediakan dukungan redundansi non-zonal (dalam pratinjau) untuk instance yang diaktifkan GPU. Jika redundansi non-zonal diaktifkan, Cloud Run mencoba melakukan failover untuk tugas yang mendukung GPU dengan upaya terbaik. Cloud Run merutekan eksekusi tugas ke zona lain hanya jika kapasitas GPU yang memadai tersedia pada saat itu. Opsi ini tidak menjamin kapasitas yang dicadangkan untuk skenario failover, tetapi menghasilkan biaya per detik GPU yang lebih rendah.

Meminta penambahan kuota

Jika project Anda tidak memiliki kuota GPU, deploy layanan Cloud Run untuk otomatis menerima pemberian kuota GPU 3 nvidia-l4 (redundansi zona nonaktif) untuk region tersebut. Perhatikan bahwa pemberian kuota otomatis ini bergantung pada ketersediaan berdasarkan kapasitas CPU dan memori Anda. Saat Anda menghapus layanan yang tidak digunakan, kuota yang dialokasikan tetap tidak berubah.

Jika Anda memerlukan GPU Cloud Run tambahan untuk tugas, minta penambahan kuota.

Jumlah maksimum instance (tugas) pekerjaan GPU yang dapat dijalankan secara paralel dibatasi oleh kuota berikut:

Nilai paralelisme harus lebih kecil dari kuota GPU tanpa redundansi zona atau kuota instance GPU tugas tanpa redundansi zona, bergantung pada kuota mana yang lebih ketat.

Sebelum memulai

Daftar berikut menjelaskan persyaratan dan batasan saat menggunakan GPU di 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. Lihat Praktik terbaik: Tugas Cloud Run dengan GPU untuk mengoptimalkan performa saat menggunakan tugas Cloud Run dengan GPU.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengonfigurasi tugas Cloud Run, minta administrator Anda untuk memberi Anda peran IAM berikut pada tugas:

  • Cloud Run Developer (roles/run.developer) - tugas Cloud Run
  • Pengguna Akun Layanan (roles/iam.serviceAccountUser) - identitas layanan

Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika tugas Cloud Run Anda berinteraksi dengan Google Cloud API, seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.

Mengonfigurasi tugas Cloud Run dengan GPU

Anda dapat menggunakan Google Cloud konsol, Google Cloud CLI, atau YAML untuk mengonfigurasi GPU.

gcloud

Untuk membuat tugas dengan GPU yang diaktifkan, gunakan perintah gcloud beta run jobs create:

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

Ganti:

  • JOB_NAME dengan nama tugas Cloud Run Anda.
  • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/job:latest.

Untuk mengupdate konfigurasi GPU untuk tugas, gunakan perintah 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

Ganti:

  • JOB_NAME dengan nama tugas Cloud Run Anda.
  • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/job:latest.
  • CPU dengan minimal 4 CPU untuk tugas Anda. Nilai yang direkomendasikan adalah 8.
  • MEMORY dengan minimum 16Gi (16 GiB). Nilai yang direkomendasikan adalah 32Gi.
  • GPU_NUMBER dengan nilai 1 (satu). Jika tidak ditentukan, tetapi GPU_TYPE ada, defaultnya adalah 1.
  • GPU_TYPE dengan jenis GPU. Jika tidak ditentukan, tetapi GPU_NUMBER ada, defaultnya adalah nvidia-l4 (nvidia L4 huruf kecil L, bukan nilai numerik empat belas).
  • PARALLELISM dengan nilai bilangan bulat yang kurang dari nilai terendah batas kuota yang berlaku yang Anda alokasikan untuk project Anda.

YAML

  1. Jika Anda membuat tugas baru, lewati langkah ini. Jika Anda memperbarui tugas yang ada, download konfigurasi YAML-nya:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Perbarui atribut nvidia.com/gpu, annotations: run.googleapis.com/launch-stage untuk tahap peluncuran, dan 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

    Ganti:

    • JOB_NAME dengan nama tugas Cloud Run Anda.
    • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/job:latest
    • CPU dengan jumlah CPU. Anda harus menentukan minimal 4 CPU.
    • MEMORY dengan jumlah memori. Anda harus menentukan setidaknya 16Gi (16 GiB).
    • GPU_NUMBER dengan nilai 1 (satu) karena kami hanya mendukung pemasangan satu GPU per instance Cloud Run.
    • GPU_TYPE dengan nilai nvidia-l4 (nvidia-L4 huruf kecil L, bukan nilai numerik empat belas).
  3. Buat atau perbarui tugas menggunakan perintah berikut:

    gcloud run jobs replace job.yaml

Melihat setelan GPU

Untuk melihat setelan GPU saat ini untuk tugas Cloud Run Anda:

gcloud

  1. Gunakan perintah berikut:

    gcloud run jobs describe JOB_NAME
  2. Temukan setelan GPU dalam konfigurasi yang ditampilkan.

Menghapus GPU

Anda dapat menghapus GPU menggunakan Google Cloud CLI atau YAML.

gcloud

Untuk menghapus GPU, tetapkan jumlah GPU ke 0 menggunakan perintah gcloud beta run jobs update:

  gcloud beta run jobs update JOB_NAME --gpu 0
  

Ganti JOB_NAME dengan nama tugas Cloud Run Anda.

YAML

  1. Jika Anda membuat tugas baru, lewati langkah ini. Jika Anda memperbarui tugas yang ada, download konfigurasi YAML-nya:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Hapus baris nvidia.com/gpu: dan nodeSelector: run.googleapis.com/accelerator: nvidia-l4.

  3. Buat atau perbarui tugas menggunakan perintah berikut:

    gcloud run jobs replace job.yaml

Library

Secara default, semua library driver NVIDIA L4 di-mount di bawah /usr/local/nvidia/lib64. Cloud Run secara otomatis menambahkan jalur ini ke variabel lingkungan LD_LIBRARY_PATH (yaitu ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64) dari container dengan GPU. Hal ini memungkinkan linker dinamis menemukan library driver NVIDIA. Linker menelusuri dan menyelesaikan jalur dalam urutan yang Anda cantumkan dalam variabel lingkungan LD_LIBRARY_PATH. Nilai yang Anda tentukan dalam variabel ini diprioritaskan daripada jalur library driver Cloud Run default /usr/local/nvidia/lib64.

Jika Anda ingin menggunakan versi CUDA yang lebih tinggi dari 12.2, cara termudah adalah dengan mengandalkan image dasar NVIDIA yang lebih baru dengan paket kompatibilitas ke depan yang sudah diinstal. Opsi lainnya adalah menginstal paket kompatibilitas penerusan NVIDIA secara manual dan menambahkannya ke LD_LIBRARY_PATH. Lihat matriks kompatibilitas NVIDIA untuk menentukan versi CUDA mana yang kompatibel ke depan dengan versi driver NVIDIA yang diberikan (535.216.03).

Tentang GPU dan paralelisme

Jika Anda menjalankan tugas paralel dalam eksekusi tugas, tentukan dan tetapkan nilai paralelisme ke nilai yang lebih rendah dari nilai terendah batas kuota yang berlaku yang Anda alokasikan untuk project Anda. Secara default, kuota instance tugas GPU ditetapkan ke 5 untuk tugas yang berjalan secara paralel. Untuk meminta penambahan kuota, lihat Cara menambah kuota. Tugas GPU dimulai secepat mungkin dan dapat mencapai maksimum yang bervariasi, bergantung pada jumlah kuota GPU yang Anda alokasikan untuk project dan region yang dipilih. Deployment Cloud Run akan gagal jika Anda menyetel paralelisme ke lebih dari batas kuota GPU.

Untuk menghitung kuota GPU yang digunakan tugas Anda per eksekusi, kalikan jumlah GPU per tugas dengan nilai paralelisme. Misalnya, jika Anda memiliki kuota GPU sebesar 10, dan men-deploy tugas Cloud Run dengan --gpu=1, --parallelism=10, maka tugas Anda akan menggunakan semua kuota GPU 10. Atau, jika Anda men-deploy dengan --gpu=1, --parallelism=20, deployment akan gagal.

Untuk mengetahui informasi selengkapnya, lihat Praktik terbaik: Tugas Cloud Run dengan GPU.