1. 簡介
總覽
在本程式碼研究室中,您將使用 Cloud Run 工作,透過 Meta 的 Llama 3.2-1b LLM 和 vLLM 執行批次推論,並由 Cloud Run Jobs GPU 提供支援。您將使用 Cloud Run 磁碟區掛接,直接將結果寫入 Cloud Storage。
課程內容
- 如何使用 Cloud Run Jobs GPU 執行批次推論
- 如何使用 Cloud Run 磁碟區掛接將資料寫入 Cloud Storage
2. 事前準備
啟用 API
開始使用本程式碼研究室前,請先執行下列指令,啟用下列 API:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com
GPU 配額
申請提高支援區域的配額。配額為 nvidia_l4_gpu_allocation_no_zonal_redundancy,位於 Cloud Run Admin API 下方。
注意:如果您使用新專案,啟用 API 後,配額可能需要幾分鐘才會顯示在這個頁面。
Hugging Face
本程式碼研究室會使用 Hugging Face 託管的模型。如要取得這個模型,請申請具備「讀取」權限的 Hugging Face 使用者存取權杖。您稍後會以 YOUR_HF_TOKEN 參照這個位址。
您也必須同意使用條款才能使用模型:https://huggingface.co/meta-llama/Llama-3.2-1B
3. 設定和需求
本節包含下列資源的設定說明:
- IAM 服務帳戶和相關聯的 IAM 權限。
- Secret Manager 密鑰,用於儲存 Hugging Face 權杖。
- 用於儲存推論結果的 Cloud Storage bucket。
如要設定必要資源,請按照下列步驟操作:
- 為本程式碼研究室設定環境變數:
export PROJECT_ID=<your_project_id> export REGION=<your_region> export HF_TOKEN=<YOUR_HF_TOKEN> export SERVICE_ACCOUNT=inference-service-account export SERVICE_ACCOUNT_EMAIL=${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com export SECRET_ID=hugging-face-token export BUCKET_NAME=inference-codelab-${PROJECT_ID} - 執行下列指令來建立服務帳戶:
gcloud iam service-accounts create ${SERVICE_ACCOUNT} \ --display-name="Service account for batch inference codelab" - 使用 Secret Manager 儲存 Hugging Face 存取權杖:
gcloud secrets create $SECRET_ID \ --replication-policy="automatic" printf $HF_TOKEN | gcloud secrets versions add $SECRET_ID --data-file=- - 將 Secret Manager 密鑰存取者角色授予服務帳戶:
gcloud secrets add-iam-policy-binding $SECRET_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role='roles/secretmanager.secretAccessor' - 建立 bucket 來代管微調後的模型:
gcloud storage buckets create -l us-central1 gs://${BUCKET_NAME} - 授予服務帳戶 bucket 的存取權:
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \ --member=serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role=roles/storage.objectAdmin - 建立 Artifact Registry 存放區來儲存容器映像檔。如果您先前已在專案中使用 Cloud Run 來源部署,請略過這個步驟。
gcloud artifacts repositories create cloud-run-source-deploy \ --repository-format=docker \ --location=$REGION \ --project=$PROJECT_ID
4. 建立 Cloud Run 工作
在本節中,您將建立執行下列操作的程式碼:
- 從 Hugging Face 匯入 Llama 模型
- 對模型執行批次推論。這項工作會使用單一 L4 GPU 執行此程序。
- 將結果寫入本機磁碟。這會透過磁碟區掛接寫入 Cloud Storage。
如要建立 Cloud Run 工作和 Dockerfile,請按照下列步驟操作:
- 建立目錄來存放微調工作程式碼:
mkdir codelab-inference-job cd codelab-inference-job - 建立名為
main.py的檔案# SPDX-License-Identifier: Apache-2.0 from vllm import LLM, SamplingParams # Sample prompts. prompts = [ "Cloud Run is", "The future of AI is", "The capital of Germany is", "python as a programming language is", ] # Create a sampling params object. sampling_params = SamplingParams(temperature=0.8, top_p=0.95) # Create an LLM. llm = LLM(model="meta-llama/Llama-3.2-1B") # Generate texts from the prompts. The output is a list of RequestOutput objects # that contain the prompt, generated text, and other information. outputs = llm.generate(prompts, sampling_params) # Save the outputs to disk with open("/results/output.txt", "w") as f: for output in outputs: prompt = output.prompt generated_text = output.outputs[0].text f.write(f"Prompt: {prompt!r}, Generated text: {generated_text!r}\n") print(f"Wrote {len(outputs)} to disk.") - 建立
Dockerfile:FROM python:3.12 ADD main.py . RUN python -m pip install --upgrade pip setuptools RUN pip install vllm CMD ["python", "./main.py"]
5. 部署及執行工作
在這個步驟中,您將使用 Cloud Run 來源部署建立 Cloud Run 工作,然後執行該工作。這個步驟也包含 Cloud Run 磁碟區掛接標記,可儲存結果。
- 建立 Cloud Run 工作:
這個指令會從來源建構映像檔,並部署工作。這項作業需要一段時間才能完成。gcloud run jobs deploy inference-job \ --region $REGION \ --source . \ --gpu=1 \ --set-secrets HF_TOKEN=${SECRET_ID}:latest \ --add-volume name=results,type=cloud-storage,bucket=${BUCKET_NAME} \ --add-volume-mount volume=results,mount-path=/results \ --service-account $SERVICE_ACCOUNT_EMAIL - 執行工作:
這項工作需要幾分鐘才能完成。您可以透過最後一個指令輸出內容中提供的連結,查看狀態。gcloud run jobs execute inference-job --region $REGION --async
確認成功
如要確認工作是否成功執行,請查看工作記錄,如上一個指令的輸出內容所示。
在 Cloud Storage bucket 中查看結果:
在控制台中:
- 前往 Cloud Storage。
- 選取以
inference-codelab開頭的 bucket。 - 選取「
output.txt」。 - 按一下「已驗證網址」,即可在瀏覽器中查看內容。
檔案內容應為四個提示及其輸出內容。
6. 恭喜!
恭喜您完成本程式碼研究室!
建議參閱 Cloud Run 說明文件。
涵蓋內容
- 如何使用 Cloud Run Jobs GPU 執行批次推論
- 如何使用 Cloud Run 磁碟區掛接將資料寫入 Cloud Storage
7. 清除所用資源
如要刪除 Cloud Run 工作,請前往 Cloud Run Cloud 控制台 (https://console.cloud.google.com/run) 並刪除 inference-job 工作。
如要刪除整個專案,請前往「管理資源」,選取您在步驟 2 中建立的專案,然後選擇「刪除」。刪除專案後,您必須在 Cloud SDK 中變更專案。如要查看所有可用專案的清單,請執行 gcloud projects list。