Menjalankan inferensi LLM di GPU dengan Gemma 4 dan Ollama

Tujuan

Gemma 4 adalah lini model open source Google yang paling efisien, dengan kemampuan penalaran dan agentik yang kuat. Konteks panjang, multimodalitas, penalaran, dan pemanggilan alat memungkinkan Gemma 4 menangani logika yang kompleks, perencanaan multilangkah, coding, dan alur kerja agentic.

Panduan ini menunjukkan cara menjalankan inferensi LLM di GPU Cloud Run dengan Gemma dan Ollama, serta memiliki tujuan berikut:

  • Men-deploy Ollama dengan model Gemma 4 di layanan Cloud Run yang didukung GPU.
  • Kirim perintah ke layanan Ollama di endpoint pribadinya.

Untuk mempelajari cara alternatif men-deploy model terbuka Gemma 4 di Cloud Run menggunakan container vLLM, lihat Menjalankan model Gemma 4 di Cloud Run.

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy 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. Mengaktifkan Cloud Run API.

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    Mengaktifkan API

  7. Instal dan lakukan inisialisasi gcloud CLI.
  8. Minta kuota Total Nvidia RTX Pro 6000 GPU allocation, in milli GPU, without zonal redundancy, per project per region di bagian Cloud Run Admin API di halaman Kuota dan batas sistem untuk menyelesaikan tutorial ini.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Memberikan peran

Konsol

  1. Di konsol Google Cloud , buka halaman IAM.

    Buka IAM
  2. Pilih project.
  3. Klik Grant access.
  4. Di kolom New principals, masukkan ID pengguna Anda. Identitas ini biasanya berupa alamat email yang digunakan untuk men-deploy layanan Cloud Run.

  5. Di daftar Select a role, pilih peran.
  6. Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
  7. Klik Simpan.

gcloud

Untuk memberikan peran IAM yang diperlukan ke akun Anda di project Anda:

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

Ganti:

  • PROJECT_NUMBER dengan nomor project Google Cloud Anda.
  • PROJECT_ID dengan project ID Google Cloud Anda.
  • PRINCIPAL dengan akun yang Anda tambahkan binding-nya. Biasanya, alamat email ini adalah alamat yang digunakan untuk men-deploy layanan Cloud Run.
  • ROLE dengan peran yang Anda tambahkan ke akun deployer.

Men-deploy layanan Ollama untuk inferensi LLM

Men-deploy layanan ke 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"

Ganti:

  • SERVICE-NAME dengan nama unik untuk layanan Cloud Run.
  • PROJECT dengan ID Project Google Cloud Anda.
  • REGION dengan region Google Cloud tempat GPU nvidia-rtx-pro-6000 didukung untuk Cloud Run, seperti us-central1. Untuk mengetahui daftar lengkap region yang didukung untuk deployment yang mendukung GPU, lihat Konfigurasi GPU.

  • MODEL_NAME dengan nama lengkap varian Gemma 4.

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

Gemma 4 26B dan 31B memerlukan konfigurasi Cloud Run dan vLLM tingkat lanjut dengan Direct VPC Egress dan Run:ai Model Streamer.

Perhatikan tanda penting berikut dalam perintah ini:

  • --concurrency 16 disetel agar cocok dengan nilai variabel lingkungan OLLAMA_NUM_PARALLEL.
  • --gpu 1 dengan --gpu-type nvidia-rtx-pro-6000 menetapkan 1 GPU NVIDIA RTX PRO 6000 Blackwell ke setiap instance Cloud Run dalam layanan.
  • --max-instances 1 menentukan jumlah maksimum instance yang akan diskalakan. Nilainya harus sama dengan atau lebih rendah dari kuota GPU NVIDIA RTX Pro 6000 (Total NVIDIA RTX Pro 6000 GPU allocation, in milli GPU, without zonal redundancy, per project per region) project Anda.
  • --no-allow-unauthenticated membatasi akses yang tidak diautentikasi ke layanan. Dengan menjaga layanan tetap bersifat pribadi, Anda dapat mengandalkan autentikasi Identity and Access Management (IAM) bawaan Cloud Run untuk komunikasi layanan-ke-layanan. Lihat Mengelola akses menggunakan IAM.
  • --no-cpu-throttling diperlukan untuk mengaktifkan GPU.
  • --no-gpu-zonal-redundancy menetapkan opsi redundansi zona bergantung pada persyaratan failover zona dan kuota yang tersedia. Lihat Opsi redundansi per zona GPU untuk mengetahui detailnya.

Setelan serentak untuk performa optimal

Bagian ini memberikan konteks tentang setelan serentak yang direkomendasikan. Untuk latensi permintaan yang optimal, pastikan setelan --concurrency sama dengan variabel lingkungan OLLAMA_NUM_PARALLEL Ollama.

  • OLLAMA_NUM_PARALLEL menentukan jumlah slot permintaan yang tersedia per setiap model untuk menangani permintaan inferensi secara bersamaan.
  • --concurrency menentukan jumlah permintaan yang dikirim Cloud Run ke instance Ollama secara bersamaan.

Jika --concurrency melebihi OLLAMA_NUM_PARALLEL, Cloud Run dapat mengirim lebih banyak permintaan ke model di Ollama daripada slot permintaan yang tersedia. Hal ini menyebabkan antrean permintaan dalam Ollama, sehingga meningkatkan latensi permintaan untuk permintaan yang diantrekan. Hal ini juga menyebabkan penskalaan otomatis yang kurang responsif, karena permintaan yang diantrekan tidak memicu Cloud Run untuk melakukan penskalaan dan memulai instance baru.

Ollama juga mendukung penyajian beberapa model dari satu GPU. Untuk menghindari antrean permintaan pada instance Ollama, tetapkan --concurrency agar cocok dengan OLLAMA_NUM_PARALLEL.

Meningkatkan OLLAMA_NUM_PARALLEL juga membuat permintaan paralel membutuhkan waktu lebih lama.

Mengoptimalkan pemanfaatan GPU

Untuk pemanfaatan GPU yang optimal, tingkatkan --concurrency, dengan mempertahankannya dalam dua kali nilai OLLAMA_NUM_PARALLEL. Meskipun menyebabkan antrean permintaan di Ollama, hal ini dapat membantu meningkatkan pemanfaatan: Instance Ollama dapat segera memproses permintaan dari antreannya, dan antrean membantu menyerap lonjakan traffic.

Menguji layanan Ollama yang di-deploy dengan curl

Setelah men-deploy layanan Ollama, Anda dapat mengirim permintaan ke layanan tersebut. Namun, jika Anda mengirim permintaan secara langsung, Cloud Run akan merespons dengan HTTP 401 Unauthorized. Hal ini disengaja, karena API inferensi LLM ditujukan untuk dipanggil oleh layanan lain, seperti aplikasi frontend. Untuk mengetahui informasi selengkapnya tentang autentikasi antar layanan di Cloud Run, lihat Mengautentikasi antar layanan.

Untuk mengirim permintaan ke layanan Ollama, tambahkan header dengan token OIDC yang valid ke permintaan, misalnya menggunakan proxy developer Cloud Run:

  1. Mulai proxy, dan saat diminta untuk menginstal komponen cloud-run-proxy, pilih Y:

    gcloud run services proxy SERVICE-NAME \
       --project PROJECT_ID \
       --region REGION \
       --port=9090
  2. Kirim permintaan ke proxy di tab terminal terpisah, biarkan proxy tetap berjalan. Perhatikan bahwa proxy berjalan di localhost:9090:

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

    Perintah ini akan memberikan output streaming yang mirip dengan ini:

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

Pembersihan

Agar tidak menimbulkan biaya tambahan pada akun Google Cloud Anda, hapus semua resource yang Anda deploy dengan tutorial ini.

Menghapus project

Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan perlu mempertahankannya tanpa perubahan yang Anda tambahkan dalam tutorial ini, hapus resource yang Anda buat untuk tutorial.

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.

Untuk menghapus project:

  1. Di Konsol Google Cloud , buka halaman Manage resources.

    Buka Kelola resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus resource tutorial

  1. Hapus layanan Cloud Run yang Anda deploy dalam tutorial ini. Layanan Cloud Run tidak menimbulkan biaya hingga menerima permintaan.

    Untuk menghapus layanan Cloud Run, jalankan perintah berikut:

    gcloud run services delete SERVICE-NAME

    Ganti SERVICE-NAME dengan nama layanan Anda.

    Anda juga dapat menghapus layanan Cloud Run dari konsolGoogle Cloud .

  2. Hapus konfigurasi region default gcloud yang Anda tambahkan selama penyiapan tutorial:

     gcloud config unset run/region
    
  3. Hapus konfigurasi project:

     gcloud config unset project
    

Langkah berikutnya