1. Giới thiệu
Tổng quan
Cloud Run là một nền tảng vùng chứa trên Google Cloud, giúp bạn dễ dàng chạy mã trong vùng chứa mà không cần quản lý một cụm.
Cloud Run cung cấp GPU L4 hoặc NVIDIA RTX PRO 6000 Blackwell. Mỗi phiên bản Cloud Run có một GPU và tính năng tự động mở rộng quy mô của Cloud Run vẫn được áp dụng, kể cả việc giảm quy mô xuống 0 phiên bản khi không có yêu cầu.
Một trường hợp sử dụng GPU là chạy các mô hình ngôn ngữ lớn (LLM) mở của riêng bạn. Hướng dẫn này sẽ hướng dẫn bạn triển khai một dịch vụ chạy LLM.
Lớp học lập trình này mô tả cách triển khai các mô hình nguồn mở Gemma 4 trên Cloud Run bằng cách sử dụng một vùng chứa tạo sẵn có thư viện suy luận vLLM.
Kiến thức bạn sẽ học được
- Cách sử dụng GPU trên Cloud Run.
- Cách triển khai mô hình được tinh chỉnh theo hướng dẫn Gemma 4 2B của Google trên Cloud Run bằng vLLM làm công cụ suy luận.
2. Thiết lập và yêu cầu
Điều kiện tiên quyết
- Bạn đã đăng nhập vào Cloud Console.
- Trước đây, bạn đã triển khai một dịch vụ Cloud Run. Ví dụ: bạn có thể làm theo hướng dẫn triển khai dịch vụ web từ mã nguồn để bắt đầu.
3. Bật API và đặt các biến môi trường
Bật API
Để có thể bắt đầu sử dụng lớp học lập trình này, bạn cần bật một số API. Lớp học lập trình này yêu cầu bạn sử dụng các API sau. Bạn có thể bật các API đó bằng cách chạy lệnh sau:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com
Đặt các biến môi trường
Định cấu hình mã dự án của bạn ở bên dưới.
export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=europe-west4
export SERVICE_NAME=gemma4-cr-codelab
export SERVICE_ACCOUNT_NAME=gemma4-cr-sa
export SERVICE_ACCOUNT_ADDRESS=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com
4. Tạo một tài khoản dịch vụ
Tài khoản dịch vụ này được dùng làm danh tính dịch vụ Cloud Run.
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
--display-name="Cloud Run gemma 4 SA"
5. Triển khai dịch vụ
Để triển khai các mô hình Gemma trên Cloud Run, hãy sử dụng lệnh gcloud CLI sau đây với các chế độ cài đặt được đề xuất:
CONTAINER_ARGS=(
"serve"
"google/gemma-4-E2B-it"
"--enable-chunked-prefill"
"--enable-prefix-caching"
"--generation-config=auto"
"--enable-auto-tool-choice"
"--tool-call-parser=gemma4"
"--reasoning-parser=gemma4"
"--dtype=bfloat16"
"--max-num-seqs=64"
"--gpu-memory-utilization=0.95"
"--tensor-parallel-size=1"
"--port=8080"
"--host=0.0.0.0"
)
gcloud beta run deploy $SERVICE_NAME \
--image "us-docker.pkg.dev/vertex-ai/vertex-vision-model-garden-dockers/pytorch-vllm-serve:gemma4" \
--project $PROJECT_ID \
--region $REGION \
--execution-environment gen2 \
--no-allow-unauthenticated \
--cpu 20 \
--memory 80Gi \
--gpu 1 \
--gpu-type nvidia-rtx-pro-6000 \
--no-gpu-zonal-redundancy \
--no-cpu-throttling \
--max-instances 3 \
--concurrency 64 \
--timeout 600 \
--service-account $SERVICE_ACCOUNT_ADDRESS \
--startup-probe tcpSocket.port=8080,initialDelaySeconds=240,failureThreshold=1,timeoutSeconds=240,periodSeconds=240 \
--command "vllm" \
--args=$(IFS=','; echo "${CONTAINER_ARGS[*]}")
6. Kiểm thử dịch vụ
Sau khi triển khai, bạn có thể sử dụng dịch vụ proxy phát triển Cloud Run (dịch vụ này sẽ tự động thêm mã nhận dạng cho bạn) hoặc trực tiếp sử dụng URL dịch vụ.
Sử dụng dịch vụ proxy dành cho nhà phát triển Cloud Run
Trước tiên, hãy khởi động proxy
gcloud run services proxy $SERVICE_NAME \
--project $PROJECT \
--region $REGION \
--port=9090
Chạy lệnh sau để gửi yêu cầu trong một thẻ dòng lệnh riêng, để proxy tiếp tục chạy. Proxy chạy trên localhost:9090
curl http://localhost:9090/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemma-4-E2B-it",
"messages": [{"role": "user", "content": "Why is the sky blue?"}],
"chat_template_kwargs": {
"enable_thinking": true
},
"skip_special_tokens": false
}'
Bạn sẽ thấy kết quả tương tự như dưới đây:
{
"id": "chatcmpl-9cf1ab1450487047",
"object": "chat.completion",
"created": 1774904187,
"model": "google/gemma-4-E2B-it",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The short answer is a phenomenon called **Rayleigh scattering**...",
"function_call": null,
"tool_calls": [],
"reasoning": "* Question: \"Why is the sky blue?\"\n..."
},
"finish_reason": "stop",
"stop_reason": 106
}
],
"usage": {
"prompt_tokens": 21,
"total_tokens": 877,
"completion_tokens": 856
}
}
Sử dụng trực tiếp URL dịch vụ
Trước tiên, hãy truy xuất URL cho dịch vụ đã triển khai.
SERVICE_URL=$(gcloud run services describe $SERVICE_NAME --region $REGION --format 'value(status.url)')
Curl dịch vụ
curl $SERVICE_URL/v1/chat/completions \
-H "Authorization: bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemma-4-E2B-it",
"messages": [{"role": "user", "content": "Why is the sky blue?"}],
"chat_template_kwargs": {
"enable_thinking": true
},
"skip_special_tokens": false
}'
7. Xin chúc mừng!
Chúc mừng bạn đã hoàn thành lớp học lập trình này!
Bạn nên xem tài liệu Cloud Run
Nội dung đã đề cập
- Cách sử dụng GPU trên Cloud Run.
- Cách triển khai mô hình Gemma 4 (2B) của Google trên Cloud Run bằng vLLM làm công cụ suy luận.
8. Dọn dẹp
Để tránh bị tính phí ngoài ý muốn (ví dụ: nếu các dịch vụ Cloud Run được gọi nhiều lần hơn hạn mức gọi Cloud Run hằng tháng của bạn trong cấp miễn phí), bạn có thể xoá Cloud Run hoặc xoá dự án mà bạn đã tạo ở Bước 2.
Để xoá dịch vụ Cloud Run, hãy truy cập Cloud Console của Cloud Run tại https://console.cloud.google.com/run rồi xoá dịch vụ gemma4-cr-codelab. Bạn cũng có thể muốn xoá tài khoản dịch vụ gemma4-cr-codelab-sa.
Nếu chọn xoá toàn bộ dự án, bạn có thể truy cập vào https://console.cloud.google.com/cloud-resource-manager, chọn dự án bạn đã tạo ở Bước 2 rồi chọn Xoá. Nếu xoá dự án, bạn sẽ cần thay đổi dự án trong Cloud SDK. Bạn có thể xem danh sách tất cả các dự án có sẵn bằng cách chạy gcloud projects list.