Cách chạy quy trình suy luận hàng loạt trên các công việc trên Cloud Run

Cách chạy quy trình suy luận hàng loạt trên các công việc trên Cloud Run

Thông tin về lớp học lập trình này

subjectLần cập nhật gần đây nhất: thg 6 4, 2025
account_circleTác giả: Một nhân viên của Google

1. Giới thiệu

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 MetavLLM 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.

  • 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:

  1. 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}
  2. 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"
  3. 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=-
  4. 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'
  5. 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}
  6. 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
  7. 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:

  1. 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
  2. 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.")
  3. 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ả.

  1. Tạo công việc trên 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
    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.
  2. Thực thi công việc:
    gcloud run jobs execute inference-job --region $REGION --async
    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.

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:

  1. Chuyển đến Cloud Storage.
  2. Chọn bộ chứa bắt đầu bằng inference-codelab.
  3. Chọn output.txt.
  4. 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.