1. Giới thiệu
Tổng quan
Trong lớp học lập trình này, bạn sẽ sử dụng các công việc Cloud Run để chạy suy luận hàng loạt bằng LLM Llama 3.2-1b của Meta và vLLM do GPU Cloud Run Jobs cung cấp. Bạn sẽ ghi kết quả trực tiếp vào Cloud Storage bằng cách sử dụng các điểm gắn kết ổ đĩa Cloud Run.
Kiến thức bạn sẽ học được
- Cách thực hiện suy luận hàng loạt bằng GPU Cloud Run Jobs
- Cách ghi vào Cloud Storage bằng cách sử dụng các điểm gắn kết ổ đĩa Cloud Run
2. Trước khi bắt đầu
Bật API
Trước khi có thể bắt đầu sử dụng lớp học lập trình này, hãy bật các API sau bằng cách chạy:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com
Hạn mức GPU
Yêu cầu tăng hạn mức cho một khu vực được hỗ trợ. Hạn mức là nvidia_l4_gpu_allocation_no_zonal_redundancy, theo Cloud Run Admin API.
Lưu ý: Nếu bạn đang sử dụng một dự án mới, thì có thể mất vài phút từ khi bạn bật API cho đến khi hạn mức xuất hiện trên trang này.
Hugging Face
Lớp học lập trình này sử dụng một mô hình được lưu trữ trên Hugging Face. Để nhận được mô hình này, hãy yêu cầu mã truy cập người dùng Hugging Face có quyền "Đọc". Bạn sẽ tham chiếu đến thông tin này sau dưới dạng YOUR_HF_TOKEN.
Bạn cũng cần đồng ý với các điều khoản sử dụng để sử dụng mô hình này: https://huggingface.co/meta-llama/Llama-3.2-1B
3. Thiết lập và yêu cầu
Phần này hướng dẫn cách thiết lập các tài nguyên sau:
- Tài khoản dịch vụ IAM và các quyền IAM liên kết.
- Khoá bí mật của Secret Manager để lưu trữ mã thông báo Hugging Face.
- Bộ chứa Cloud Storage để lưu trữ kết quả suy luận.
Để thiết lập các tài nguyên cần thiết, hãy làm theo các bước sau:
- Thiết lập các biến môi trường cho lớp học lập trình này:
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} - Tạo tài khoản dịch vụ bằng cách chạy:
gcloud iam service-accounts create ${SERVICE_ACCOUNT} \ --display-name="Service account for batch inference codelab" - Sử dụng Secret Manager để lưu trữ mã truy cập Hugging Face:
gcloud secrets create $SECRET_ID \ --replication-policy="automatic" printf $HF_TOKEN | gcloud secrets versions add $SECRET_ID --data-file=- - Cấp cho tài khoản dịch vụ của bạn vai trò Secret Manager Secret Accessor:
gcloud secrets add-iam-policy-binding $SECRET_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role='roles/secretmanager.secretAccessor' - Tạo một vùng chứa để lưu trữ mô hình được tinh chỉnh:
gcloud storage buckets create -l us-central1 gs://${BUCKET_NAME} - Cấp cho tài khoản dịch vụ của bạn quyền truy cập vào bộ chứa:
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \ --member=serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role=roles/storage.objectAdmin - Tạo một kho lưu trữ Artifact Registry để lưu trữ hình ảnh vùng chứa. Nếu bạn đã từng sử dụng tính năng triển khai nguồn Cloud Run trong dự án của mình, hãy bỏ qua bước này.
gcloud artifacts repositories create cloud-run-source-deploy \ --repository-format=docker \ --location=$REGION \ --project=$PROJECT_ID
4. Tạo công việc Cloud Run
Trong phần này, bạn sẽ tạo mã thực hiện những việc sau:
- Nhập mô hình Llama từ Hugging Face
- Thực hiện suy luận hàng loạt trên mô hình. Công việc này sử dụng một GPU L4 trong quy trình này.
- Ghi kết quả vào ổ đĩa cục bộ. Thao tác này được ghi vào Cloud Storage thông qua các điểm gắn kết ổ đĩa.
Để tạo một tác vụ Cloud Run và một Dockerfile, hãy làm theo các bước sau:
- Tạo một thư mục để lưu trữ mã công việc tinh chỉnh:
mkdir codelab-inference-job cd codelab-inference-job - Tạo một tệp có tên là
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.") - Tạo một
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. Triển khai và thực thi lệnh
Trong bước này, bạn sẽ tạo công việc Cloud Run bằng cách sử dụng tính năng triển khai nguồn Cloud Run, sau đó thực thi công việc đó. Bước này cũng bao gồm các cờ gắn ổ đĩa Cloud Run để lưu trữ kết quả.
- Tạo Cloud Run Job:
Lệnh này tạo hình ảnh từ nguồn và triển khai tác vụ. Quá trình này sẽ mất một chút thời gian để hoàn tất.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 - Thực thi lệnh:
Quá trình này mất vài phút để hoàn tất. Bạn có thể kiểm tra trạng thái bằng đường liên kết có trong đầu ra của lệnh cuối cùng.gcloud run jobs execute inference-job --region $REGION --async
Xác nhận thành công
Để xác nhận rằng công việc của bạn đã thực thi thành công, hãy xem nhật ký của công việc như trong đầu ra của lệnh cuối cùng.
Kiểm tra kết quả trong bộ chứa Cloud Storage:
Trong bảng điều khiển:
- Chuyển đến Cloud Storage.
- Chọn nhóm bắt đầu bằng
inference-codelab. - Chọn
output.txt. - Nhấp vào URL đã xác thực để xem nội dung trong trình duyệt.
Nội dung của tệp phải là 4 câu lệnh và kết quả tương ứng.
6. 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 về Cloud Run.
Nội dung đã đề cập
- Cách thực hiện suy luận hàng loạt bằng GPU Cloud Run Jobs
- Cách ghi vào Cloud Storage bằng cách sử dụng các điểm gắn kết ổ đĩa Cloud Run
7. Dọn dẹp
Để xoá tác vụ Cloud Run, hãy truy cập Cloud Run Cloud Console tại https://console.cloud.google.com/run rồi xoá tác vụ inference-job.
Để xoá toàn bộ dự án, hãy chuyển đến phần Quản lý tài nguyên, 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.