Mengonfigurasi GPU untuk tugas Cloud Run

Halaman ini menjelaskan konfigurasi GPU untuk tugas Cloud Run Anda. GPU berfungsi 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.
  • Saat Anda men-deploy layanan atau fungsi dari kode sumber dengan konfigurasi GPU menggunakan gcloud beta, Cloud Run menggunakan jenis mesin e2-highcpu-8, bukan jenis mesin e2-standard-2 default (Pratinjau). Jenis mesin yang lebih besar memberikan dukungan CPU yang lebih tinggi, dan bandwidth jaringan yang lebih tinggi sehingga menghasilkan waktu build yang lebih cepat.

Redundansi non-zonal GPU

Fitur tugas Cloud Run menyediakan dukungan redundansi non-zonal (dalam pratinjau) hanya untuk instance yang mendukung GPU. Dengan mengaktifkan redundansi non-zonal, 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.

Lihat mengonfigurasi tugas Cloud Run dengan GPU untuk mengetahui detail tentang cara mengaktifkan redundansi non-zonal.

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 tidak akan berubah.

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

Jumlah maksimum instance tugas GPU (tugas) 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. 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.

    Go to project selector

  5. Verify 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.
  8. 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 mengaktifkan redundansi non-zonal, Anda harus menentukan --no-gpu-zonal-redundancy. Tindakan ini diperlukan untuk menggunakan GPU dengan tugas.

    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 \
          --no-gpu-zonal-redundancy

    Ganti:

    • JOB_NAME dengan nama tugas Cloud Run Anda.
    • IMAGE_URL: 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 \
          --no-gpu-zonal-redundancy

    Ganti:

    • JOB_NAME dengan nama tugas Cloud Run Anda.
    • IMAGE_URL: 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

    Anda harus menyetel anotasi run.googleapis.com/gpu-zonal-redundancy-disabled: ke 'true'. Tindakan ini mengaktifkan redundansi non-zonal, yang diperlukan untuk GPU untuk tugas.

    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:
          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

      Ganti:

      • JOB_NAME dengan nama tugas Cloud Run Anda.
      • IMAGE_URL: 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:, run.googleapis.com/gpu-zonal-redundancy-disabled: 'true', 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.