1. مقدمه
نمای کلی
در این آزمایشگاه، یک عامل آماده تولید Agent Development Kit (ADK) با Gemma backend با شتاب GPU را مستقر خواهید کرد. تمرکز روی الگوهای استقرار حیاتی است: راهاندازی سرویسهای Cloud Run مجهز به GPU، ادغام مدلهای پشتیبان با عوامل ADK، و مشاهده رفتار مقیاس خودکار تحت بار.
کاری که خواهی کرد
در این آزمایشگاه، شما بر جنبه های حیاتی استقرار تولید تمرکز خواهید کرد:
- استقرار Gemma در Cloud Run با GPU - راهاندازی یک باطن مدل Gemma با کارایی بالا
- استقرار Gemma را با یک عامل ADK ادغام کنید - عامل خود را به مدل شتاب دهنده GPU متصل کنید
- تست با رابط وب ADK - اعتبارسنجی کنید که عامل مکالمه شما به درستی کار می کند
- آزمایش بار را انجام دهید - مشاهده کنید که چگونه هر دو نمونه Cloud Run تحت بارگذاری به صورت خودکار مقیاس می شوند
تاکید بر الگوهای استقرار تولید به جای توسعه گسترده عامل است.
چیزی که یاد خواهید گرفت
- برای استفاده در تولید، مدلهای GPU شتابدهنده را در Cloud Run اجرا کنید
- استقرار مدل های خارجی را با عوامل ADK ادغام کنید
- پیکربندی و آزمایش استقرار عامل هوش مصنوعی آماده تولید
- رفتار مقیاس خودکار Cloud Run تحت بار را درک کنید
- مشاهده کنید که چگونه چندین نمونه Cloud Run در هنگام افزایش ترافیک هماهنگ می شوند
- برای تأیید عملکرد و مقیاس خودکار، آزمایش بار را اعمال کنید
2. راه اندازی پروژه
- اگر قبلاً یک حساب Google ندارید، باید یک حساب Google ایجاد کنید .
- از حساب شخصی به جای حساب کاری یا مدرسه استفاده کنید. حسابهای محل کار و مدرسه ممکن است محدودیتهایی داشته باشند که شما را از فعال کردن APIهای مورد نیاز برای این آزمایشگاه باز میدارد.
- به Google Cloud Console وارد شوید.
- صورتحساب را در کنسول Cloud فعال کنید .
- تکمیل این آزمایشگاه باید کمتر از 1 دلار آمریکا در منابع Cloud هزینه داشته باشد.
- برای جلوگیری از هزینه های بیشتر، می توانید مراحل انتهای این آزمایشگاه را برای حذف منابع دنبال کنید.
- کاربران جدید واجد شرایط استفاده از نسخه آزمایشی رایگان 300 دلاری هستند.
- یک پروژه جدید ایجاد کنید یا استفاده مجدد از یک پروژه موجود را انتخاب کنید.
3. Cloud Shell Editor را باز کنید
- برای رفتن مستقیم به Cloud Shell Editor روی این پیوند کلیک کنید
- اگر امروز در هر نقطهای از شما خواسته شد مجوز دهید، برای ادامه روی تأیید کلیک کنید.
- اگر ترمینال در پایین صفحه ظاهر نشد، آن را باز کنید:
- روی View کلیک کنید
- روی ترمینال کلیک کنید
- در ترمینال، پروژه خود را با این دستور تنظیم کنید:
- قالب:
gcloud config set project [PROJECT_ID]
- مثال:
gcloud config set project lab-project-id-example
- اگر نمی توانید شناسه پروژه خود را به خاطر بسپارید:
- می توانید تمام شناسه های پروژه خود را با موارد زیر فهرست کنید:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
- می توانید تمام شناسه های پروژه خود را با موارد زیر فهرست کنید:
- قالب:
- شما باید این پیام را ببینید:
اگر یکUpdated property [core/project].
WARNING
مشاهده کردید و ازDo you want to continue (Y/n)?
، پس احتمالاً شناسه پروژه را اشتباه وارد کرده اید.n
را فشار دهید،Enter
را فشار دهید و دوباره دستورgcloud config set project
اجرا کنید.
4. API ها را فعال کنید و منطقه پیش فرض را تنظیم کنید
قبل از اینکه بتوانیم خدمات Cloud Run را با پشتیبانی GPU اجرا کنیم، باید APIهای Google Cloud مورد نیاز را فعال کرده و تنظیمات پروژه شما را پیکربندی کنیم.
- در ترمینال، API ها را فعال کنید:
gcloud services enable \
run.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com
اگر از شما خواسته شد که مجوز دهید، برای ادامه روی تأیید کلیک کنید.
تکمیل این دستور ممکن است چند دقیقه طول بکشد، اما در نهایت باید یک پیام موفقیت آمیز مشابه این پیام تولید کند:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
- منطقه Cloud Run پیش فرض خود را تنظیم کنید.
gcloud config set run/region europe-west1
5. پروژه پایتون خود را آماده کنید
بیایید کد شروعی را تنظیم کنیم که شامل ساختار اصلی برای هر دو سرویس Gemma Backend و Agent ADK ما باشد.
- کلون کردن مخزن استارت:
cd ~ git clone https://github.com/amitkmaraj/accelerate-ai-lab3-starter.git cd accelerate-ai-lab3-starter
- بررسی ساختار پروژه:
شما باید ساختار شروع زیر را ببینید:ls -R
accelerate-ai-lab3-starter/ ├── README.md # Project overview ├── ollama-backend/ # Ollama backend (separate deployment) │ └── Dockerfile # Backend container (🚧 to implement) └── adk-agent/ # ADK agent (separate deployment) ├── pyproject.toml # Python dependencies (✅ completed) ├── server.py # FastAPI server (🚧 to implement) ├── Dockerfile # Container config (🚧 to implement) ├── load_test.py # Load testing (🚧 to implement) └── production_agent/ # Agent implementation ├── __init__.py # Package init (✅ completed) └── agent.py # Agent logic (🚧 to implement)
6. نمای کلی معماری
قبل از پیاده سازی، بیایید معماری دو سرویس را درک کنیم:
بینش کلیدی : در طول آزمایش بار، مقیاس هر دو سرویس را به طور مستقل مشاهده خواهید کرد - باطن GPU (سرویس گلوگاه) برای بار استنتاج به 1-3 نمونه مقیاس میشود، در حالی که عامل ADK برای رسیدگی به درخواست در 1 نمونه باقی میماند.
7. Gemma Backend را در Cloud Run با GPU اجرا کنید
اولین مرحله حیاتی، استقرار یک مدل Gemma با شتاب GPU است که به عنوان مغز عامل ADK شما عمل خواهد کرد. داشتن یک LLM جدا شده و مستقر ممکن است در معماری هایی که به یک مدل دقیق تنظیم شده جداگانه نیاز دارید یا به مقیاس بندی جدا شده نیاز دارید، مطلوب باشد.
- به دایرکتوری Ollama Backend بروید:
cd ollama-backend
- Ollama Dockerfile را باز و اجرا کنید:
کامنت TODO را با:cloudshell edit Dockerfile
🔧 این چه کاری انجام می دهد:FROM ollama/ollama:latest # Listen on all interfaces, port 8080 ENV OLLAMA_HOST 0.0.0.0:8080 # Store model weight files in /models ENV OLLAMA_MODELS /models # Reduce logging verbosity ENV OLLAMA_DEBUG false # Never unload model weights from the GPU ENV OLLAMA_KEEP_ALIVE -1 # Store the model weights in the container image ENV MODEL gemma3:270m RUN ollama serve & sleep 5 && ollama pull $MODEL # Start Ollama ENTRYPOINT ["ollama", "serve"]
- از تصویر رسمی اولاما به عنوان پایه استفاده می کند
-
OLLAMA_HOST
برای پذیرش اتصالات از هر آدرس IP تنظیم می کند - پورت 8080 را در معرض دید قرار می دهد
- استقرار باطن Gemma با پشتیبانی GPU:
gcloud run deploy ollama-gemma3-270m-gpu \
--source . \
--region europe-west1 \
--concurrency 4 \
--cpu 8 \
--set-env-vars OLLAMA_NUM_PARALLEL=4 \
--gpu 1 \
--gpu-type nvidia-l4 \
--max-instances 3 \
--memory 16Gi \
--allow-unauthenticated \
--no-cpu-throttling \
--no-gpu-zonal-redundancy \
--timeout 600 \
--labels dev-tutorial=codelab-agent-gpu
اگر شما یک "استقرار از منبع نیاز به یک مخزن Artifact Registry Docker برای ذخیره کانتینرهای ساخته شده دارد. یک مخزن به نام [cloud-run-source-deploy] در منطقه [europe-west1] ایجاد می شود." پیام، ادامه
⚙️ پیکربندی کلید توضیح داده شده است:
- پردازنده گرافیکی : NVIDIA L4 به دلیل نسبت قیمت به عملکرد عالی برای بارهای کاری استنتاج انتخاب شده است. L4 حافظه 24 گیگابایتی GPU و عملیات تانسور بهینه را ارائه می دهد که آن را برای مدل های پارامتری 270 میلیونی مانند Gemma ایده آل می کند.
- حافظه : 16 گیگابایت حافظه سیستم برای کنترل بارگذاری مدل، عملیات CUDA و مدیریت حافظه Ollama
- CPU : 8 هسته برای مدیریت بهینه I/O و وظایف پیش پردازش
- همزمانی : 4 درخواست در هر نمونه، توان عملیاتی را با استفاده از حافظه GPU متعادل می کند
- مهلت زمانی : 600 ثانیه برای بارگیری مدل اولیه و راه اندازی کانتینر مناسب است
💰 در نظر گرفتن هزینه : نمونه های GPU به طور قابل توجهی گران تر از نمونه های فقط CPU هستند (~ 2-4 دلار در ساعت در مقابل ~ 0.10 دلار در ساعت). تنظیم --max-instances 1
با جلوگیری از مقیاسگذاری غیرضروری نمونه GPU به کنترل هزینهها کمک میکند.
- منتظر بمانید تا استقرار کامل شود و URL سرویس را یادداشت کنید:
export OLLAMA_URL=$(gcloud run services describe ollama-gemma3-270m-gpu \ --region=europe-west1 \ --format='value(status.url)') echo "🎉 Gemma backend deployed at: $OLLAMA_URL"
8. یکپارچه سازی عامل ADK را پیاده سازی کنید
حال بیایید یک عامل ADK حداقل ایجاد کنیم که به باطن Gemma مستقر شما متصل می شود.
- به دایرکتوری عامل ADK بروید:
cd ../adk-agent
- پیکربندی عامل را باز کرده و اجرا کنید:
همه نظرات TODO را با این حداقل پیاده سازی جایگزین کنید:cloudshell edit production_agent/agent.py
🔧 این چه کاری انجام می دهد:import os from pathlib import Path from dotenv import load_dotenv from google.adk.agents import Agent from google.adk.models.lite_llm import LiteLlm import google.auth # Load environment variables root_dir = Path(__file__).parent.parent dotenv_path = root_dir / ".env" load_dotenv(dotenv_path=dotenv_path) # Configure Google Cloud try: _, project_id = google.auth.default() os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id) except Exception: pass os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "europe-west1") # Configure model connection gemma_model_name = os.getenv("GEMMA_MODEL_NAME", "gemma3:270m") # Production Gemma Agent - GPU-accelerated conversational assistant gemma_agent = Agent( model=LiteLlm(model=f"ollama_chat/{gemma_model_name}"), name="gemma_agent", description="A production-ready conversational assistant powered by GPU-accelerated Gemma.", instruction="""You are 'Gem', a friendly, knowledgeable, and enthusiastic zoo tour guide. Your main goal is to make a zoo visit more fun and educational for guests by answering their questions. You can provide general information and interesting facts about different animal species, such as: - Their natural habitats and diet. 🌲🍓 - Typical lifespan and behaviors. - Conservation status and unique characteristics. IMPORTANT: You do NOT have access to any tools. This means you cannot look up real-time, specific information about THIS zoo. You cannot provide: - The names or ages of specific animals currently at the zoo. - The exact location or enclosure for an animal. - The daily schedule for feedings or shows. Always answer based on your general knowledge about the animal kingdom. Keep your tone cheerful, engaging, and welcoming for visitors of all ages. 🦁✨""", tools=[], # Gemma focuses on conversational capabilities ) # Set as root agent root_agent = gemma_agent
- از طریق LiteLlm به باطن Gemma مستقر شما متصل می شود
- یک عامل مکالمه ساده ایجاد می کند
- ادغام Google Cloud را پیکربندی می کند
- سرور FastAPI را باز و اجرا کنید:
جایگزین همه نظرات TODO با:cloudshell edit server.py
🔧 این چه کاری انجام می دهد:import os from dotenv import load_dotenv from fastapi import FastAPI from google.adk.cli.fast_api import get_fast_api_app # Load environment variables load_dotenv() AGENT_DIR = os.path.dirname(os.path.abspath(__file__)) app_args = {"agents_dir": AGENT_DIR, "web": True} # Create FastAPI app with ADK integration app: FastAPI = get_fast_api_app(**app_args) # Update app metadata app.title = "Production ADK Agent - Lab 3" app.description = "Gemma agent with GPU-accelerated backend" app.version = "1.0.0" @app.get("/health") def health_check(): return {"status": "healthy", "service": "production-adk-agent"} @app.get("/") def root(): return { "service": "Production ADK Agent - Lab 3", "description": "GPU-accelerated Gemma agent", "docs": "/docs", "health": "/health" } if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8080, log_level="info")
- یک سرور FastAPI با ادغام ADK ایجاد می کند
- رابط وب را برای آزمایش فعال می کند
- نقاط پایانی بررسی سلامت را ارائه می دهد
- Dockerfile را باز کرده و اجرا کنید:
جایگزین همه نظرات TODO با:cloudshell edit Dockerfile
انتخاب های فناوری توضیح داد:FROM python:3.13-slim # Copy uv from the official image COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv # Install system dependencies RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* # Set working directory WORKDIR /app # Copy all files COPY . . # Install Python dependencies RUN uv sync # Expose port EXPOSE 8080 # Run the application CMD ["uv", "run", "uvicorn", "server:app", "--host", "0.0.0.0", "--port", "8080"]
- uv : مدیر بسته مدرن پایتون که 10-100 برابر سریعتر از pip است. از یک کش جهانی و دانلودهای موازی استفاده می کند که زمان ساخت کانتینر را به میزان قابل توجهی کاهش می دهد
- Python 3.13-slim : آخرین نسخه پایتون با حداقل وابستگی به سیستم، کاهش اندازه کانتینر و سطح حمله
- ساخت چند مرحله ای : کپی کردن uv از تصویر رسمی آن تضمین می کند که جدیدترین باینری بهینه شده را دریافت کنیم
9. Environment و Deploy Agent را پیکربندی کنید
اکنون ما عامل ADK را پیکربندی می کنیم تا به باطن Gemma مستقر شما متصل شود و آن را به عنوان یک سرویس Cloud Run استقرار دهد. این شامل تنظیم متغیرهای محیطی و استقرار عامل با پیکربندی مناسب است.
- پیکربندی محیط خود را تنظیم کنید:
cat << EOF > .env GOOGLE_CLOUD_PROJECT=$(gcloud config get-value project) GOOGLE_CLOUD_LOCATION=europe-west1 GEMMA_MODEL_NAME=gemma3:270m OLLAMA_API_BASE=$OLLAMA_URL EOF
درک متغیرهای محیطی در Cloud Run
متغیرهای محیطی جفت های کلید-مقدار هستند که برنامه شما را در زمان اجرا پیکربندی می کنند. آنها به ویژه برای موارد زیر مفید هستند:
- نقاط پایانی API و نشانیهای وب سرویس (مانند باطن Ollama ما)
- پیکربندی که بین محیطها تغییر میکند (dev, staging, prod)
- داده های حساسی که نباید کدگذاری شوند
عامل ADK را مستقر کنید:
export PROJECT_ID=$(gcloud config get-value project)
gcloud run deploy production-adk-agent \
--source . \
--region europe-west1 \
--allow-unauthenticated \
--memory 4Gi \
--cpu 2 \
--max-instances 1 \
--concurrency 10 \
--timeout 300 \
--set-env-vars GOOGLE_CLOUD_PROJECT=$PROJECT_ID \
--set-env-vars GOOGLE_CLOUD_LOCATION=europe-west1 \
--set-env-vars GEMMA_MODEL_NAME=gemma3:270m \
--set-env-vars OLLAMA_API_BASE=$OLLAMA_URL \
--labels dev-tutorial=codelab-agent-gpu
⚙️ پیکربندی کلید:
- مقیاسبندی خودکار : در 1 نمونه ثابت شد (بررسی درخواستهای سبک وزن)
- همزمانی : 10 درخواست در هر نمونه
- حافظه : 4 گیگابایت برای عامل ADK
- محیط : به باطن Gemma شما متصل می شود
🔒 نکته امنیتی : این آزمایشگاه --allow-unauthenticated
برای سادگی استفاده می کند. در تولید، احراز هویت مناسب را با استفاده از:
- Cloud احراز هویت سرویس به سرویس را با حسابهای سرویس اجرا کنید
- سیاست های مدیریت هویت و دسترسی (IAM).
- کلیدهای API یا OAuth برای دسترسی خارجی
- استفاده از
gcloud run services add-iam-policy-binding
برای کنترل دسترسی در نظر بگیرید
نشانی وب سرویس نماینده خود را دریافت کنید:
export AGENT_URL=$(gcloud run services describe production-adk-agent \
--region=europe-west1 \
--format='value(status.url)')
echo "🎉 ADK Agent deployed at: $AGENT_URL"
✅ بهترین شیوه های متغیرهای محیطی بر اساس مستندات متغیرهای محیطی Cloud Run :
- اجتناب از متغیرهای رزرو شده :
PORT
تنظیم نکنید (Cloud Run این را به طور خودکار تنظیم می کند) یا متغیرهایی که باX_GOOGLE_
شروع می شوند - از نامهای توصیفی استفاده کنید : برای جلوگیری از تداخل، متغیرهای خود را پیشوند قرار دهید (مثلاً
GEMMA_MODEL_NAME
به جایMODEL
) - کاماهای فرار : اگر مقادیر شما حاوی کاما هستند، از یک جداکننده متفاوت استفاده کنید:
--set-env-vars "^@^KEY1=value1,value2@KEY2=..."
- بهروزرسانی در مقابل جایگزینی : از
--update-env-vars
برای افزودن/تغییر متغیرهای خاص بدون تأثیرگذاری بر دیگران استفاده کنید.
نحوه تنظیم متغیرها در Cloud Run :
- از فایل :
gcloud run deploy SERVICE_NAME --env-vars-file .env --labels dev-tutorial codelab-adk
(چند متغیر را از یک فایل بارگیری می کند) - چند پرچم : تکرار
--set-env-vars
برای مقادیر پیچیده ای که نمی توانند با کاما از هم جدا شوند.
10. تست با رابط وب ADK
با استقرار هر دو سرویس، وقت آن رسیده است که تأیید کنید که عامل ADK شما میتواند با موفقیت با پشتیبانی Gemma با شتاب GPU ارتباط برقرار کند و به سؤالات کاربر پاسخ دهد.
- تست نقطه پایانی سلامتی:
باید ببینید:curl $AGENT_URL/health
{ "status": "healthy", "service": "production-adk-agent" }
- با وارد کردن URL مربوط به
production-adk-agent
خود در یک برگه مرورگر جدید، با نماینده خود تعامل کنید. شما باید رابط وب ADK را ببینید. - نماینده خود را با این مکالمات نمونه آزمایش کنید:
- پانداهای قرمز معمولاً در طبیعت چه می خورند؟
- "می توانید یک واقعیت جالب در مورد پلنگ برفی به من بگویید؟"
- "چرا قورباغه های دارت سمی اینقدر رنگارنگ هستند؟"
- "از کجا می توانم بچه کانگورو جدید را در باغ وحش پیدا کنم؟"
- عامل با استفاده از مدل Gemma مستقر شده شما پاسخ می دهد. میتوانید این موضوع را با مشاهده گزارشهای سرویس Gemma مستقر خود تأیید کنید. در بخش بعدی این کار را انجام خواهیم داد
- پاسخ ها توسط باطن با شتاب GPU تولید می شوند
- رابط وب یک تجربه چت تمیز را فراهم می کند
11. تست بار را اجرا و اجرا کنید
برای درک اینکه چگونه استقرار تولید شما ترافیک دنیای واقعی را مدیریت می کند، آزمایش بار جامعی را اجرا می کنیم که مقیاس خودکار را در هر دو عامل ADK و خدمات باطن GPU آغاز می کند.
- اسکریپت تست بار را باز و اجرا کنید:
کامنت TODO را با:cloudshell edit load_test.py
🔧 این چه کاری انجام می دهد:import random import uuid from locust import HttpUser, task, between class ProductionAgentUser(HttpUser): """Load test user for the Production ADK Agent.""" wait_time = between(1, 3) # Faster requests to trigger scaling def on_start(self): """Set up user session when starting.""" self.user_id = f"user_{uuid.uuid4()}" self.session_id = f"session_{uuid.uuid4()}" # Create session for the Gemma agent using proper ADK API format session_data = {"state": {"user_type": "load_test_user"}} self.client.post( f"/apps/production_agent/users/{self.user_id}/sessions/{self.session_id}", headers={"Content-Type": "application/json"}, json=session_data, ) @task(4) def test_conversations(self): """Test conversational capabilities - high frequency to trigger scaling.""" topics = [ "What do red pandas typically eat in the wild?", "Can you tell me an interesting fact about snow leopards?", "Why are poison dart frogs so brightly colored?", "Where can I find the new baby kangaroo in the zoo?", "What is the name of your oldest gorilla?", "What time is the penguin feeding today?" ] # Use proper ADK API format for sending messages message_data = { "app_name": "production_agent", "user_id": self.user_id, "session_id": self.session_id, "new_message": { "role": "user", "parts": [{ "text": random.choice(topics) }] } } self.client.post( "/run", headers={"Content-Type": "application/json"}, json=message_data, ) @task(1) def health_check(self): """Test the health endpoint.""" self.client.get("/health")
- ایجاد جلسه : از قالب مناسب ADK API با POST به
/apps/production_agent/users/{user_id}/sessions/{session_id}
استفاده میکند. پس از ایجادsession_id
وuser_id
، میتوان درخواستی را به نماینده ارسال کرد. - فرمت پیام : از مشخصات ADK با
app_name
،user_id
،session_id
و شیء ساختار یافتهnew_message
پیروی می کند. - نقطه پایان مکالمه : از نقطه پایانی
/run
برای جمع آوری همه رویدادها به طور همزمان استفاده می کند (برای آزمایش بار توصیه می شود) - بار واقعی : بار مکالمه را با زمان انتظار کوتاهتر ایجاد میکند تا مقیاس خودکار را فعال کند
- ایجاد جلسه : از قالب مناسب ADK API با POST به
- نصب وابستگی ها:
uv sync
- Locust یک ابزار تست بار منبع باز و مبتنی بر پایتون است که برای آزمایش عملکرد و بارگذاری برنامه های کاربردی وب و سایر سیستم ها طراحی شده است. ویژگی کلیدی آن این است که سناریوهای آزمایشی و رفتار کاربر با استفاده از کد استاندارد پایتون تعریف میشوند و در مقایسه با ابزارهایی که به رابطهای کاربری گرافیکی یا زبانهای دامنه خاص متکی هستند، انعطافپذیری و بیان بالایی را ارائه میدهند. ما از Locust برای شبیه سازی ترافیک کاربر به خدمات خود استفاده خواهیم کرد. تست بارگذاری را اجرا کنید.
سعی کنید پارامترهای تست را تغییر دهید و خروجی را مشاهده کنید. متوجه افزایش# Run a load test to trigger autoscaling uv run locust -f load_test.py \ -H $AGENT_URL \ --headless \ -t 50s \ -u 3 \ -r 1
ollama-gemma3-270m-gpu
به 2-3 مورد خواهید شد. 📊 پارامترهای تست بار:- مدت زمان : 50 ثانیه
- کاربران : 3 کاربر همزمان
- نرخ تخم ریزی : 1 کاربر در ثانیه
- هدف : مقیاس خودکار را در هر دو سرویس فعال کنید
12. رفتار مقیاس بندی خودکار را مشاهده کنید
همانطور که تست بار اجرا می شود، می توانید مقیاس خودکار Cloud Run را در عمل مشاهده کنید. اینجاست که مزایای اصلی معماری جداسازی عامل ADK از باطن GPU را خواهید دید.
در طول تست بارگذاری، بر میزان مقیاس هر دو سرویس Cloud Run در کنسول خود نظارت کنید.
- در Cloud Console به مسیر زیر بروید:
- Cloud Run → production-adk-agent → Metrics
- Cloud Run → olama-gemma3-270m-gpu → Metrics
👀 آنچه باید رعایت کنید:
🤖 خدمات نمایندگی ADK:
- زمانی که ترافیک افزایش مییابد، باید در ۱ مورد ثابت بماند
- مصرف CPU و حافظه در هنگام ترافیک بالا افزایش می یابد
- مدیریت جلسه و مسیریابی درخواست را به طور موثر مدیریت می کند
🎮 Gemma Backend Service (گلوگاه):
- بر اساس تقاضای استنتاج از 1 تا 3 نمونه مقیاس میکند
- استفاده از GPU تحت بارگذاری به طور قابل توجهی افزایش می یابد
- این سرویس به دلیل استنتاج مدل فشرده GPU به گلوگاه تبدیل می شود
- زمان استنتاج مدل به دلیل شتاب GPU ثابت می ماند
💡 بینش های کلیدی:
- باطن GPU یک گلوگاه است و با شدت بیشتری مقیاس می شود (1-3 نمونه)
- عامل ADK ثابت می ماند
- هر دو سرویس به طور مستقل بر اساس ویژگی های بار فردی خود مقیاس می شوند
- مقیاس خودکار به حفظ عملکرد در شرایط بار مختلف کمک می کند
13. نتیجه گیری
تبریک می گویم! شما با موفقیت یک عامل ADK آماده تولید را با باطن Gemma تسریع شده توسط GPU مستقر کرده اید و رفتار مقیاس پذیری خودکار را مشاهده کرده اید.
✅ آنچه را که انجام دادید
- ✅ یک باطن مدل Gemma با شتاب GPU در Cloud Run مستقر شده است
- ✅ یک عامل ADK ایجاد و مستقر کرد که با باطن Gemma ادغام می شود
- ✅ عامل را با استفاده از رابط وب ADK تست کرد
- ✅ رفتار مقیاس خودکار را در دو سرویس هماهنگ Cloud Run مشاهده کرد
💡 بینش های کلیدی از این آزمایشگاه
- 🎮 شتاب پردازنده گرافیکی : GPU NVIDIA L4 به طور قابل توجهی عملکرد استنتاج مدل را بهبود می بخشد
- 🔗 هماهنگی سرویس : دو سرویس Cloud Run می توانند به طور یکپارچه با هم کار کنند
- 📈 مقیاس بندی مستقل : هر سرویس بر اساس ویژگی های بار فردی خود مقیاس می گیرد
- 🚀 آمادگی تولید : معماری الگوهای ترافیک دنیای واقعی را به طور موثر مدیریت می کند
🔄 مراحل بعدی
- الگوهای بار مختلف را آزمایش کنید و رفتار مقیاس بندی را مشاهده کنید
- اندازه های مختلف مدل Gemma را امتحان کنید (حافظه و GPU را بر اساس آن تنظیم کنید)
- اجرای نظارت و هشدار برای استقرار تولید
- استقرار چند منطقه ای را برای در دسترس بودن جهانی کاوش کنید
🧹 پاکسازی کنید
برای جلوگیری از تحمیل هزینه، پس از اتمام کار، منابع را حذف کنید:
gcloud run services delete production-adk-agent --region=europe-west1
gcloud run services delete ollama-gemma3-270m-gpu --region=europe-west1
📖 منابع
- مخزن استارتر
- راه حل کامل
- اسناد Google ADK
- راهنمای تست ADK - مرجع کامل برای نقاط پایانی ADK API و الگوهای آزمایش
- تست بارگذاری در Cloud Run
- مستندات کیت توسعه عامل (ADK).
- Cloud Run مستندات GPU
- کتابخانه مدل اولاما
- Google Cloud Trace Documentation
- بهترین روشهای امنیتی Cloud Run
- مدیر بسته UV Python
- چارچوب تست بار ملخ