Thông tin về lớp học lập trình này
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ông việc trên Cloud Run để chạy quy trình suy luận hàng loạt bằng LLM Llama 3.2-1b của Meta và vLLM do GPU Công việc trên Cloud Run cung cấp. Bạn sẽ ghi trực tiếp kết quả vào Cloud Storage bằng cách sử dụng các phương tiện gắn Cloud Run.
Kiến thức bạn sẽ học được
- Cách tiến hành suy luận hàng loạt bằng GPU của Công việc trên Cloud Run
- Cách ghi vào Cloud Storage bằng cách sử dụng chế độ gắn phương tiện trên Cloud Run
2. Trước khi bắt đầu
Bật API
Trước khi bạn 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
, trong 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ật API đến khi hạn mức xuất hiện trên trang này.
Khuôn mặt ôm
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. Để lấy mô hình này, hãy yêu cầu mã thông báo truy cập của người dùng Hugging Face có quyền "Đọc". Bạn sẽ tham chiếu đến lớp 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: https://huggingface.co/meta-llama/Llama-3.2-1B
3. Cách thiết lập và các yêu cầu
Phần này bao gồm hướng dẫn 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 được liên kết.
- Khoá bí mật của Trình quản lý khoá để 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 bắt buộc, 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 Trình quản lý bí mật để 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ò là Trình truy cập bí mật của Trình quản lý bí mật:
gcloud secrets add-iam-policy-binding $SECRET_ID \
--member serviceAccount:$SERVICE_ACCOUNT_EMAIL \
--role='roles/secretmanager.secretAccessor' - Tạo một nhóm để lưu trữ mô hình đã tinh chỉnh:
gcloud storage buckets create -l us-central1 gs://${BUCKET_NAME}
- Cấp quyền truy cập vào bộ chứa cho tài khoản dịch vụ:
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \
--member=serviceAccount:$SERVICE_ACCOUNT_EMAIL \
--role=roles/storage.objectAdmin - Tạo kho lưu trữ Cấu phần phần mềm để lưu trữ hình ảnh vùng chứa. Nếu bạn đã sử dụng tính năng triển khai nguồn Cloud Run trước đó trong dự án, 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 trên 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ộ. Dữ liệu này được ghi vào Cloud Storage thông qua các phương tiện gắn.
Để tạo công việc trên Cloud Run và 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 công việc
Ở bước này, bạn sẽ tạo công việc trên Cloud Run bằng cách triển khai nguồn trê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 kết phương tiện trên Cloud Run để lưu trữ kết quả.
- Tạo công việc trên Cloud Run:
Lệnh này tạo hình ảnh từ nguồn và triển khai công việc. Quá trình này sẽ mất chút thời gian để hoàn tất.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 - Thực thi công việc:
Quá trình này sẽ mất vài phút để hoàn tất. Bạn có thể kiểm tra trạng thái bằng cách sử dụng đường liên kết được cung cấp trong kết quả 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 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 kết quả 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 bộ chứa bắt đầu bằng
inference-codelab
. - Chọn
output.txt
. - Nhấp vào Authenticated URL (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ả của các câu lệnh đó.
6. Xin chúc mừng!
Chúc mừng bạn đã hoàn thành lớp học lập trình!
Bạn nên xem tài liệu về Cloud Run.
Nội dung đã đề cập
- Cách tiến hành suy luận hàng loạt bằng GPU của Công việc trên Cloud Run
- Cách ghi vào Cloud Storage bằng cách sử dụng chế độ gắn phương tiện trên Cloud Run
7. Dọn dẹp
Để xoá công việc trên Cloud Run, hãy truy cập vào Cloud Console của Cloud Run tại https://console.cloud.google.com/run rồi xoá công việc 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 SDK trên đám mây. Bạn có thể xem danh sách tất cả dự án hiện có bằng cách chạy gcloud projects list
.