نحوه اجرای استنتاج دسته ای در کارهای Cloud Run

نحوه اجرای استنتاج دسته ای در کارهای Cloud Run

درباره این codelab

subjectآخرین به‌روزرسانی: ژوئن ۴, ۲۰۲۵
account_circleنویسنده: یکی از کارمندان Google

1. مقدمه

در این کد لبه، شما از کارهای Cloud Run برای اجرای استنتاج دسته ای با استفاده از Llama 3.2-1b LLM و vLLM متا که توسط GPU Cloud Run Jobs پشتیبانی می شود، استفاده خواهید کرد. شما نتایج را مستقیماً در Cloud Storage با استفاده از پایه‌های حجمی Cloud Run می‌نویسید.

  • نحوه انجام استنتاج دسته ای با استفاده از GPU Cloud Run Jobs
  • نحوه نوشتن در Cloud Storage با استفاده از پایه‌های تنظیم حجم Cloud Run

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 را با مجوز «خواندن» درخواست کنید. بعداً به آن به عنوان YOUR_HF_TOKEN ارجاع خواهید داد.

همچنین برای استفاده از مدل باید با شرایط استفاده موافقت کنید: https://huggingface.co/meta-llama/Llama-3.2-1B

3. راه اندازی و الزامات

این بخش شامل دستورالعمل هایی برای تنظیم منابع زیر است:

  • حساب سرویس IAM و مجوزهای IAM مرتبط.
  • راز Secret Manager برای ذخیره توکن Hugging Face شما.
  • سطل Cloud Storage برای ذخیره نتیجه استنتاج شما.

برای تنظیم منابع مورد نیاز، مراحل زیر را دنبال کنید:

  1. متغیرهای محیطی را برای این کد لبه تنظیم کنید:
    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. با اجرای:
    gcloud iam service-accounts create ${SERVICE_ACCOUNT} \
      --display-name="Service account for batch inference codelab"
  3. از Secret Manager برای ذخیره نشانه دسترسی Hugging Face استفاده کنید:
    gcloud secrets create $SECRET_ID \
         
    --replication-policy="automatic"

    printf $HF_TOKEN
    | gcloud secrets versions add $SECRET_ID --data-file=-
  4. به حساب سرویس خود نقش دسترسی مخفی مدیر مخفی را بدهید:
    gcloud secrets add-iam-policy-binding $SECRET_ID \
     
    --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \
     
    --role='roles/secretmanager.secretAccessor'
  5. یک سطل برای میزبانی مدل دقیق تنظیم شده خود ایجاد کنید:
    gcloud storage buckets create -l us-central1 gs://${BUCKET_NAME}
  6. به حساب سرویس خود اجازه دسترسی به سطل بدهید:
    gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \
     
    --member=serviceAccount:$SERVICE_ACCOUNT_EMAIL \
     
    --role=roles/storage.objectAdmin
  7. یک مخزن رجیستری Artifact ایجاد کنید تا تصویر ظرف را ذخیره کنید. اگر قبلاً از استقرار منبع Cloud Run در پروژه خود استفاده کرده اید، این مرحله را رد کنید.
    gcloud artifacts repositories create cloud-run-source-deploy \
       
    --repository-format=docker \
       
    --location=$REGION \
       
    --project=$PROJECT_ID

4. کار Cloud Run را ایجاد کنید

در این بخش، کدی را ایجاد می کنید که کارهای زیر را انجام می دهد:

  • مدل لاما را از Hugging Face وارد می کند
  • استنتاج دسته ای را روی مدل انجام می دهد. این کار از واحد پردازش گرافیکی L4 استفاده می کند.
  • نتایج را روی دیسک محلی می نویسد. این از طریق نصب‌های ولوم برای ذخیره‌سازی ابری نوشته می‌شود.

برای ایجاد کار Cloud Run و Dockerfile، این مراحل را دنبال کنید:

  1. یک دایرکتوری برای میزبانی کد شغلی تنظیم دقیق خود ایجاد کنید:
    mkdir codelab-inference-job
    cd codelab
    -inference-job
  2. یک فایل به نام 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. یک 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 source deploy ایجاد می‌کنید، سپس آن را اجرا می‌کنید. این مرحله همچنین شامل پرچم‌های نصب حجمی Cloud Run برای ذخیره نتایج است.

  1. Cloud Run Job را ایجاد کنید:
    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
    این دستور تصویر را از منبع می سازد و کار را مستقر می کند. مدتی طول می کشد تا تکمیل شود.
  2. انجام کار:
    gcloud run jobs execute inference-job --region $REGION --async
    کار چند دقیقه طول می کشد تا کامل شود. با استفاده از لینک ارائه شده در خروجی آخرین دستور می توانید وضعیت را بررسی کنید.

تایید موفقیت

برای تأیید اجرای موفقیت آمیز کار خود، گزارش های کار را مانند خروجی آخرین دستور مشاهده کنید.

نتایج را در سطل ذخیره سازی ابری بررسی کنید:

در کنسول:

  1. به Cloud Storage بروید.
  2. سطلی را که با inference-codelab شروع می شود انتخاب کنید.
  3. output.txt را انتخاب کنید.
  4. برای مشاهده محتویات در مرورگر روی URL تأیید شده کلیک کنید.

محتویات فایل باید چهار فرمان و خروجی آنها باشد.

6. تبریک می گویم!

برای تکمیل کد لبه تبریک می گویم!

توصیه می کنیم اسناد Cloud Run را مرور کنید.

آنچه را پوشش داده ایم

  • نحوه انجام استنتاج دسته ای با استفاده از GPU Cloud Run Jobs
  • نحوه نوشتن در Cloud Storage با استفاده از پایه‌های تنظیم حجم Cloud Run

7. پاک کن

برای حذف کار Cloud Run، به Cloud Run Cloud Console در https://console.cloud.google.com/run بروید و کار inference-job حذف کنید.

برای حذف کل پروژه، به Manage Resources بروید، پروژه ای را که در مرحله 2 ایجاد کردید انتخاب کنید و Delete را انتخاب کنید. اگر پروژه را حذف کنید، باید پروژه ها را در Cloud SDK خود تغییر دهید. با اجرای gcloud projects list می توانید لیست تمام پروژه های موجود را مشاهده کنید.