目標
Gemma 4 是 Google 最高效的開放權重模型系列,可提供強大的推論和代理能力。Gemma 4 具備長脈絡、多模態、推論和工具呼叫功能,可處理複雜的邏輯、多步驟規劃、程式碼和代理工作流程。
本指南說明如何使用 Gemma 和 Ollama,在 Cloud Run GPU 上執行 LLM 推論,並達成下列目標:
如要瞭解如何使用 vLLM 容器,在 Cloud Run 上部署 Gemma 4 開放模型,請參閱「在 Cloud Run 上執行 Gemma 4 模型」。
費用
在本文件中,您會使用下列 Google Cloud的計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify 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.
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
啟用 Cloud Run API。
啟用 API 時所需的角色
如要啟用 API,您需要服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。- 安裝並初始化 gcloud CLI。
- 在「配額和系統限制」頁面中,要求 Cloud Run Admin API 下的
Total Nvidia RTX Pro 6000 GPU allocation, in milli GPU, without zonal redundancy, per project per region配額,完成本教學課程。
必要的角色
如要取得完成本教學課程所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
- Cloud Run 管理員 (
roles/run.admin) - 專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin) -
服務帳戶使用者 (
roles/iam.serviceAccountUser) -
服務使用情形消費者 (
roles/serviceusage.serviceUsageConsumer)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
授予角色
控制台
-
前往 Google Cloud 控制台的「IAM」頁面。
前往「IAM」頁面 - 選取專案。
- 按一下 「授予存取權」。
-
在「New principals」(新增主體) 欄位中,輸入您的使用者 ID。這通常是部署 Cloud Run 服務時使用的電子郵件地址。
- 在「Select a role」(選取角色) 清單中,選取角色。
- 如要授予其他角色,請按一下「Add another role」(新增其他角色),然後新增其他角色。
- 按一下 [儲存]。
gcloud
如要在專案中授予帳戶必要的 IAM 角色,請按照下列步驟操作:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
更改項目:
- 將 PROJECT_NUMBER 改成您的 Google Cloud 專案編號。
- 將 PROJECT_ID 替換為 Google Cloud 專案 ID。
- PRINCIPAL,並使用您要新增繫結的帳戶。這通常是用於部署 Cloud Run 服務的電子郵件地址。
- ROLE,並將角色新增至部署者帳戶。
部署 Ollama 服務,用於 LLM 推論
將服務部署至 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"更改項目:
SERVICE-NAME,並為 Cloud Run 服務指定專屬名稱。- 將
PROJECT改成您的 Google Cloud 專案 ID。 REGION,請將REGION換成nvidia-rtx-pro-6000支援 Cloud Run GPU 的 Google Cloud 區域,例如us-central1。如需支援 GPU 部署作業的完整區域清單,請參閱「GPU 設定」。將
MODEL_NAME替換為 Gemma 4 變體版本的全名。- Gemma 4 E2B:
gemma4:e2b - Gemma 4 E4B:
gemma4:e4b
- Gemma 4 E2B:
Gemma 4 26B 和 31B 需要進階 Cloud Run 和 vLLM 設定,並搭配 Direct VPC Egress 和 Run:ai Model Streamer。
請注意這個指令中的下列重要標記:
--concurrency 16會設為與環境變數OLLAMA_NUM_PARALLEL的值相符。--gpu 1--gpu-type nvidia-rtx-pro-6000會為服務中的每個 Cloud Run 執行個體指派 1 個 NVIDIA RTX PRO 6000 Blackwell GPU。--max-instances 1指定要擴充的執行個體數量上限。必須等於或低於專案的 NVIDIA RTX Pro 6000 GPU (Total NVIDIA RTX Pro 6000 GPU allocation, in milli GPU, without zonal redundancy, per project per region) 配額。--no-allow-unauthenticated會限制未經驗證的服務存取權。不公開服務可讓您依靠 Cloud Run 的內建 Identity and Access Management (IAM) 驗證,進行服務間的通訊。請參閱「使用 IAM 管理存取權」。- 啟用 GPU 時必須使用
--no-cpu-throttling。 --no-gpu-zonal-redundancy會根據可用區容錯移轉需求和可用配額,設定可用區備援選項。詳情請參閱「GPU 區域備援機制選項」。
並行設定,爭取最佳成效
本節提供建議並行設定的背景資訊。為達到最佳要求延遲時間,請確保 --concurrency 設定等於 Ollama 的 OLLAMA_NUM_PARALLEL 環境變數。
OLLAMA_NUM_PARALLEL決定每個模型可用的要求配額數量,以便同時處理推論要求。--concurrency決定 Cloud Run 同時傳送給 Ollama 執行個體的要求數量。
如果 --concurrency 超過 OLLAMA_NUM_PARALLEL,Cloud Run 傳送至 Ollama 中模型的請求數量,可能會超過可用的請求時段。這會導致 Ollama 內的要求排隊,增加排隊要求的延遲時間。此外,由於佇列中的要求不會觸發 Cloud Run 水平擴展及啟動新執行個體,自動調度資源的反應也會較慢。
Ollama 也支援從單一 GPU 提供多個模型。為避免 Ollama 執行個體上的要求排隊,請將 --concurrency 設為與 OLLAMA_NUM_PARALLEL 相符。
增加 OLLAMA_NUM_PARALLEL 也會導致平行要求耗費更多時間。
盡可能提高 GPU 使用率
為達到最佳 GPU 使用率,請增加 --concurrency,但不要超過 OLLAMA_NUM_PARALLEL 值的兩倍。雖然這會導致 Ollama 中的要求排入佇列,但有助於提高使用率:Ollama 執行個體可以立即處理佇列中的要求,而佇列則有助於吸收流量尖峰。
使用 curl 測試已部署的 Ollama 服務
Ollama 服務部署完成後,您就可以傳送要求。不過,如果您直接傳送要求,Cloud Run 會以 HTTP 401 Unauthorized 回應。這是刻意設計,因為 LLM 推論 API 適用於其他服務呼叫,例如前端應用程式。如要進一步瞭解 Cloud Run 的服務對服務驗證,請參閱「服務對服務驗證」。
如要將要求傳送至 Ollama 服務,請在要求中加入含有有效 OIDC 權杖的標頭,例如使用 Cloud Run 開發人員 Proxy:
啟動 Proxy,並在系統提示安裝
cloud-run-proxy元件時選擇Y:gcloud run services proxy SERVICE-NAME \ --project PROJECT_ID \ --region REGION \ --port=9090在另一個終端機分頁中傳送要求,讓 Proxy 保持執行狀態。請注意,Proxy 會在
localhost:9090上執行:curl http://localhost:9090/api/generate -d '{ "model": "MODEL_NAME", "prompt": "Why is the sky blue?", "stream": false }' | jq -r '.response'這個指令應會提供類似以下的串流輸出內容:
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**. ...
清除所用資源
為避免系統向您的 Google Cloud 帳戶收取額外費用,請刪除您在本教學課程中部署的所有資源。
刪除專案
如果您是為了這個教學課程建立新專案,請刪除該專案。如果您使用現有專案,並想保留專案,但不要本教學課程新增的變更,請刪除為本教學課程建立的資源。
如要避免付費,最簡單的方法就是刪除您為了本教學課程所建立的專案。
刪除專案的方法如下:
- 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。
- 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。
刪除教學課程資源
刪除您在本教學課程中部署的 Cloud Run 服務。 Cloud Run 服務收到要求後才會開始計費。
如要刪除 Cloud Run 服務,請執行下列指令:
gcloud run services delete SERVICE-NAME
將 SERVICE-NAME 改為您的服務名稱。
您也可以從Google Cloud 控制台刪除 Cloud Run 服務。
移除您在教學課程設定期間新增的
gcloud預設區域設定:gcloud config unset run/region移除專案設定:
gcloud config unset project