Panduan ini menjelaskan cara men-deploy model terbuka Gemma 3 di Cloud Run menggunakan container yang telah dibuat sebelumnya, dan memberikan panduan tentang cara menggunakan layanan Cloud Run yang di-deploy dengan SDK AI Generatif Google.
Sebelum memulai
Jika Anda menggunakan Google AI Studio untuk men-deploy ke Cloud Run, lanjutkan ke bagian Berinteraksi dengan aman dengan Google Gen AI SDK.
Jika Anda tidak menggunakan Google AI Studio, ikuti langkah-langkah berikut sebelum menggunakan Cloud Run untuk membuat layanan baru.
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Siapkan lingkungan pengembangan Cloud Run di project Google Cloud Anda.
- Instal dan lakukan inisialisasi gcloud CLI.
- Pastikan Anda memiliki peran IAM berikut yang diberikan ke akun Anda:
- Cloud Run Admin (
roles/run.admin
) - Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer
)
- Cloud Run Admin (
-
Di konsol Google Cloud , buka halaman IAM.
Buka IAM - Pilih project.
- Klik Berikan akses.
-
Di kolom Akun utama baru, masukkan ID pengguna Anda. Ini biasanya berupa alamat email Akun Google yang digunakan untuk men-deploy layanan Cloud Run.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
- PROJECT_NUMBER dengan Google Cloud nomor project Anda.
- PROJECT_ID dengan Google Cloud project ID Anda.
- PRINCIPAL dengan akun yang Anda tambahkan binding-nya. Biasanya, alamat email Akun Google yang digunakan untuk men-deploy layanan Cloud Run.
- ROLE dengan peran yang Anda tambahkan ke akun deployer.
- Minta kuota
Total Nvidia L4 GPU allocation, per project per region
di bagian Cloud Run Admin API di halaman Quotas and system limits. - Tinjau halaman harga Cloud Run. Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.
SERVICE_NAME
dengan nama unik untuk layanan Cloud Run.GEMMA_PARAMETER
dengan model Gemma yang Anda gunakan:- Gemma 3 1B (
gemma-3-1b-it
):gemma3-1b
- Gemma 3 4B (
gemma-3-4b-it
):gemma3-4b
- Gemma 3 12B (
gemma-3-12b-it
):gemma3-12b
- Gemma 3 27B (
gemma-3-27b-it
):gemma3-27b
Secara opsional, ganti seluruh URL gambar dengan image Docker yang telah Anda bangun dari repositori GitHub Gemma-on-Cloudrun.
- Gemma 3 1B (
REGION
dengan region Google Cloud tempat Cloud Run Anda akan di-deploy, sepertieurope-west1
. Jika Anda perlu mengubah region, lihat Konfigurasi GPU untuk mempelajari region yang didukung untuk deployment yang mendukung GPU.Mulai proxy, dan saat diminta untuk menginstal komponen
cloud-run-proxy
, pilihY
:gcloud run services proxy ollama-gemma --port=9090
Kirim permintaan ke proxy di tab terminal terpisah, dan biarkan proxy tetap berjalan. Perhatikan bahwa proxy berjalan di
localhost:9090
:curl http://localhost:9090/api/generate -d '{ "model": "gemma3:4b", "prompt": "Why is the sky blue?" }'
Perintah ini akan memberikan output streaming yang mirip dengan ini:
{"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.641492408Z","response":"That","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.687529153Z","response":"'","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.753284927Z","response":"s","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.812957381Z","response":" a","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.889102649Z","response":" fantastic","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.925748116Z","response":",","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.958391572Z","response":" decept","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.971035028Z","response":"ively","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.989678484Z","response":" tricky","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.999321940Z","response":" question","done":false} ...
Untuk Generate Content, gunakan
/v1beta/{model=models/*}:generateContent
: Membuat respons model berdasarkan inputGenerateContentRequest
.curl "<cloud_run_url>/v1beta/models/<model>:generateContent" \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $(gcloud auth print-identity-token)" \ -X POST \ -d '{ "contents": [{ "parts":[{"text": "Write a story about a magic backpack. You are the narrator of an interactive text adventure game."}] }] }'
Untuk Stream Generate Content, gunakan
/v1beta/{model=models/*}:streamGenerateContent
: Menghasilkan respons streaming dari model yang diberi inputGenerateContentRequest
.curl "<cloud_run_url>/v1beta/models/<model>:streamGenerateContent" \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $(gcloud auth print-identity-token)" \ -X POST \ -d '{ "contents": [{ "parts":[{"text": "Write a story about a magic backpack. You are the narrator of an interactive text adventure game."}] }] }'
OLLAMA_NUM_PARALLEL
menentukan jumlah slot permintaan yang tersedia per setiap model untuk menangani permintaan inferensi secara serentak.--concurrency
menentukan jumlah permintaan yang dikirim Cloud Run ke instance Ollama secara bersamaan.- Konfigurasi GPU
- Praktik terbaik: Inferensi AI di Cloud Run dengan GPU
- Menjalankan model Gemma 3 dengan berbagai framework runtime AI
Pelajari cara memberikan peran
Konsol
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:
Men-deploy model Gemma dengan container bawaan
Cloud Run menyediakan container yang telah dibuat sebelumnya untuk menayangkan model terbuka Gemma di Cloud Run.
Untuk men-deploy model Gemma di Cloud Run, gunakan perintah gcloud CLI berikut dengan setelan yang direkomendasikan:
gcloud run deploy SERVICE_NAME \ --image us-docker.pkg.dev/cloudrun/container/gemma/GEMMA_PARAMETER \ --concurrency 4 \ --cpu 8 \ --set-env-vars OLLAMA_NUM_PARALLEL=4 \ --gpu 1 \ --gpu-type nvidia-l4 \ --max-instances 1 \ --memory 32Gi \ --no-allow-unauthenticated \ --no-cpu-throttling \ --timeout=600 \ --region REGION
Ganti:
Setelan lainnya adalah sebagai berikut:
Opsi | Deskripsi |
---|---|
--concurrency |
Jumlah maksimum permintaan yang dapat diproses secara bersamaan oleh instance tertentu, seperti |
--cpu |
Jumlah CPU yang dialokasikan untuk layanan Anda, seperti |
--set-env-vars |
Variabel lingkungan yang ditetapkan untuk layanan Anda. Contoh, |
--gpu |
Nilai GPU untuk layanan Anda, seperti |
--gpu-type |
Jenis GPU yang akan digunakan untuk layanan Anda, seperti |
--max-instances |
Jumlah maksimum instance container untuk layanan Anda, seperti |
--memory |
Jumlah memori yang dialokasikan untuk layanan Anda, seperti |
--no-invoker-iam-check |
Nonaktifkan pemeriksaan IAM pemanggil. Lihat Berinteraksi dengan Google Gen AI SDK secara aman untuk mendapatkan rekomendasi tentang cara mengamankan aplikasi Anda dengan lebih baik. |
--no-cpu-throttling |
Setelan ini menonaktifkan pembatasan CPU saat penampung tidak aktif melayani permintaan. |
--timeout |
Waktu saat respons harus ditampilkan, seperti |
Jika Anda perlu mengubah setelan default atau menambahkan setelan yang lebih disesuaikan ke layanan Cloud Run, lihat Mengonfigurasi layanan.
Setelah layanan yang di-deploy selesai, pesan berhasil akan ditampilkan beserta
URL endpoint Cloud Run yang
berakhir dengan run.app
.
Menguji layanan Gemma yang di-deploy dengan curl
Setelah men-deploy layanan Gemma, 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 front-end. Untuk mengetahui informasi selengkapnya tentang autentikasi antar layanan di Cloud Run, lihat Mengautentikasi antar layanan.
Untuk mengirim permintaan ke layanan Gemma, tambahkan header dengan token OIDC yang valid ke permintaan, misalnya menggunakan proxy developer Cloud Run:
Berinteraksi dengan aman dengan Google Gen AI SDK
Setelah men-deploy layanan Cloud Run, Anda dapat menggunakan endpoint Cloud Run dengan Google Gen AI SDK.
Sebelum Anda menggunakan Google Gen AI SDK, pastikan permintaan masuk meneruskan token identitas yang sesuai. Untuk mempelajari lebih lanjut cara menggunakan autentikasi IAM dan Cloud Run, lihat Mengautentikasi antar layanan.
Contoh berikut menunjukkan cara menggunakan Google Gen AI SDK dengan autentikasi IAM.
JavaScript atau TypeScript
Jika Anda menggunakan Google Gen AI SDK untuk Javascript dan TypeScript, kode mungkin terlihat sebagai berikut:
import { GoogleGenAI, setDefaultBaseUrls } from "@google/genai";
import { GoogleAuth} from 'google-auth-library'
const cloudrunurl = 'https://CLOUD_RUN_SERVICE_URL';
const targetAudience = url;
const auth = new GoogleAuth();
async function main() {
const client = await auth.getIdTokenClient(targetAudience);
const headers = await client.getRequestHeaders(targetAudience);
const idToken = headers['Authorization']
const ai = new GoogleGenAI({
apiKey:"placeholder",
httpOptions: { baseUrl: url, headers: {'Authorization': idToken} },
});
const response = await ai.models.generateContent({
model: "gemma-3-1b-it",
contents: "I want a pony",
});
console.log(response.text);
}
main();
curl
Jika menggunakan curl, jalankan perintah berikut untuk menjangkau endpoint Google Gen AI SDK:
Menetapkan 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.
Jika --concurrency
melebihi OLLAMA_NUM_PARALLEL
, Cloud Run dapat mengirim
lebih banyak permintaan ke model di Ollama daripada jumlah 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 sepenuhnya menghindari antrean permintaan di instance Ollama, Anda tetap harus menyetel --concurrency
agar cocok dengan OLLAMA_NUM_PARALLEL
.
Penting untuk diperhatikan bahwa peningkatan OLLAMA_NUM_PARALLEL
juga membuat permintaan paralel membutuhkan waktu lebih lama.
Optimalkan pemanfaatan
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.
Pembersihan
Hapus resource yang dibuat berikut: Google Cloud