درباره این codelab
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 برای ذخیره نتیجه استنتاج شما.
برای تنظیم منابع مورد نیاز، مراحل زیر را دنبال کنید:
- متغیرهای محیطی را برای این کد لبه تنظیم کنید:
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=- - به حساب سرویس خود نقش دسترسی مخفی مدیر مخفی را بدهید:
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}
- به حساب سرویس خود اجازه دسترسی به سطل بدهید:
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \
--member=serviceAccount:$SERVICE_ACCOUNT_EMAIL \
--role=roles/storage.objectAdmin - یک مخزن رجیستری 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، این مراحل را دنبال کنید:
- یک دایرکتوری برای میزبانی کد شغلی تنظیم دقیق خود ایجاد کنید:
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 source deploy ایجاد میکنید، سپس آن را اجرا میکنید. این مرحله همچنین شامل پرچمهای نصب حجمی Cloud Run برای ذخیره نتایج است.
- 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 - انجام کار:
کار چند دقیقه طول می کشد تا کامل شود. با استفاده از لینک ارائه شده در خروجی آخرین دستور می توانید وضعیت را بررسی کنید.gcloud run jobs execute inference-job --region $REGION --async
تایید موفقیت
برای تأیید اجرای موفقیت آمیز کار خود، گزارش های کار را مانند خروجی آخرین دستور مشاهده کنید.
نتایج را در سطل ذخیره سازی ابری بررسی کنید:
در کنسول:
- به Cloud Storage بروید.
- سطلی را که با
inference-codelab
شروع می شود انتخاب کنید. -
output.txt
را انتخاب کنید. - برای مشاهده محتویات در مرورگر روی 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
می توانید لیست تمام پروژه های موجود را مشاهده کنید.