Cách chạy suy luận LLM trên GPU Cloud Run bằng vLLM

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.