1. 簡介
總覽
在本程式碼研究室中,您將使用 Cloud Run 作業,搭配 Meta 的 Llama 3.2-1b LLM 和 vLLM (由 Cloud Run 作業 GPU 提供動力) 執行批次推論。您將使用 Cloud Run 掛載的磁碟機積體,直接將結果寫入 Cloud Storage。
課程內容
- 如何使用 Cloud Run 作業 GPU 進行批次推論
- 如何使用 Cloud Run 掛接的磁碟映像檔寫入 Cloud Storage
2. 事前準備
啟用 API
開始使用本程式碼研究室前,請先執行以下 API 啟用作業:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com
GPU 配額
申請提高支援地區的配額。在 Cloud Run Admin API 下,配額為 nvidia_l4_gpu_allocation_no_zonal_redundancy
。
注意:如果您使用的是新專案,啟用 API 後,可能需要幾分鐘,這個頁面才會顯示配額。
Hugging Face
本程式碼研究室使用 Hugging Face 託管的模型。如要取得這個模型,請使用「Read」權限要求 Hugging Face 使用者存取權杖。您稍後會以 YOUR_HF_TOKEN
的形式參照這個值區。
您也必須同意使用條款才能使用模型:https://huggingface.co/meta-llama/Llama-3.2-1B
3. 設定和需求
本節包含設定下列資源的操作說明:
- IAM 服務帳戶和相關 IAM 權限。
- Secret Manager 密鑰:用於儲存 Hugging Face 權杖。
- Cloud Storage 值區,用於儲存推論結果。
如要設定必要資源,請按照下列步驟操作:
- 為本程式講義設定環境變數:
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'
- 建立值區來代管微調後的模型:
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 beta 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 值區中查看結果:
在控制台中:
- 前往「Cloud Storage」。
- 選取開頭為
inference-codelab
的值區。 - 選取「
output.txt
」。 - 按一下「Authenticated URL」(已驗證網址),即可在瀏覽器中查看內容。
檔案內容應為四個提示和輸出內容。
6. 恭喜!
恭喜您完成程式碼研究室!
建議您參閱 Cloud Run 說明文件。
涵蓋內容
- 如何使用 Cloud Run 作業 GPU 進行批次推論
- 如何使用 Cloud Run 掛接的磁碟映像檔寫入 Cloud Storage
7. 清理
如要刪除 Cloud Run 工作,請前往 Cloud Run 控制台 (https://console.cloud.google.com/run) 並刪除 inference-job
工作。
如要刪除整個專案,請前往「Manage Resources」,選取您在步驟 2 中建立的專案,然後選擇「Delete」(刪除)。如果您刪除專案,就必須在 Cloud SDK 中變更專案。您可以執行 gcloud projects list
來查看所有可用專案的清單。