1. ভূমিকা
ওভারভিউ
এই ল্যাবে, আপনি GPU-এক্সিলারেটেড জেমা ব্যাকএন্ড সহ একটি প্রোডাকশন-রেডি এজেন্ট ডেভেলপমেন্ট কিট (ADK) এজেন্ট স্থাপন করবেন। ফোকাস সমালোচনামূলক স্থাপনার ধরণগুলির উপর: GPU-সক্ষম ক্লাউড রান পরিষেবাগুলি সেট আপ করা, ADK এজেন্টগুলির সাথে মডেল ব্যাকএন্ড একীভূত করা এবং লোডের অধীনে অটোস্কেলিং আচরণ পর্যবেক্ষণ করা৷
আপনি কি করবেন
এই ল্যাবে, আপনি সমালোচনামূলক উৎপাদন স্থাপনার দিকগুলিতে ফোকাস করবেন:
- GPU সহ ক্লাউড রানে জেমা স্থাপন করুন - একটি উচ্চ-পারফরম্যান্স জেমা মডেল ব্যাকএন্ড সেট আপ করুন
- একটি ADK এজেন্টের সাথে জেমমা স্থাপনার সংহত করুন - আপনার এজেন্টকে GPU-এক্সিলারেটেড মডেলের সাথে সংযুক্ত করুন
- ADK ওয়েব ইন্টারফেসের সাথে পরীক্ষা করুন - আপনার কথোপকথন এজেন্ট সঠিকভাবে কাজ করে তা যাচাই করুন
- লোড টেস্টিং সম্পাদন করুন - ক্লাউড রান উভয় দৃষ্টান্ত কিভাবে লোডের অধীনে স্বয়ংক্রিয়-স্কেল হয় তা পর্যবেক্ষণ করুন
ব্যাপক এজেন্ট বিকাশের পরিবর্তে উৎপাদন স্থাপনার ধরণগুলির উপর জোর দেওয়া হয়।
আপনি কি শিখবেন
- উৎপাদন ব্যবহারের জন্য ক্লাউড রানে GPU-এক্সিলারেটেড জেমা মডেল স্থাপন করুন
- ADK এজেন্টদের সাথে বাহ্যিক মডেল স্থাপনা একত্রিত করুন
- উত্পাদন-প্রস্তুত AI এজেন্ট স্থাপনা কনফিগার করুন এবং পরীক্ষা করুন
- লোডের অধীনে ক্লাউড রান অটোস্কেলিং আচরণ বুঝুন
- ট্র্যাফিক স্পাইকের সময় একাধিক ক্লাউড রান দৃষ্টান্তগুলি কীভাবে সমন্বয় করে তা পর্যবেক্ষণ করুন
- কর্মক্ষমতা এবং স্বয়ংক্রিয় স্কেলিং যাচাই করতে লোড টেস্টিং প্রয়োগ করুন
2. প্রকল্প সেটআপ
- আপনার যদি ইতিমধ্যে একটি Google অ্যাকাউন্ট না থাকে তবে আপনাকে অবশ্যই একটি Google অ্যাকাউন্ট তৈরি করতে হবে।
- কাজের বা স্কুল অ্যাকাউন্টের পরিবর্তে একটি ব্যক্তিগত অ্যাকাউন্ট ব্যবহার করুন। কর্মক্ষেত্র এবং স্কুল অ্যাকাউন্টগুলিতে বিধিনিষেধ থাকতে পারে যা আপনাকে এই ল্যাবের জন্য প্রয়োজনীয় APIগুলি সক্ষম করতে বাধা দেয়৷
- Google ক্লাউড কনসোলে সাইন-ইন করুন।
- ক্লাউড কনসোলে বিলিং সক্ষম করুন ।
- এই ল্যাবটি সম্পূর্ণ করতে ক্লাউড সংস্থানগুলিতে $1 USD-এর কম খরচ হওয়া উচিত৷
- আপনি আরও চার্জ এড়াতে সংস্থানগুলি মুছতে এই ল্যাবের শেষে পদক্ষেপগুলি অনুসরণ করতে পারেন৷
- নতুন ব্যবহারকারীরা $300 USD ফ্রি ট্রায়ালের জন্য যোগ্য৷
- একটি নতুন প্রকল্প তৈরি করুন বা একটি বিদ্যমান প্রকল্প পুনরায় ব্যবহার করতে বেছে নিন।
3. ক্লাউড শেল এডিটর খুলুন
- ক্লাউড শেল এডিটরে সরাসরি নেভিগেট করতে এই লিঙ্কে ক্লিক করুন
- আজ যেকোনো সময়ে অনুমোদনের জন্য অনুরোধ করা হলে, চালিয়ে যেতে অনুমোদন ক্লিক করুন।
- যদি টার্মিনালটি স্ক্রিনের নীচে উপস্থিত না হয় তবে এটি খুলুন:
- দেখুন ক্লিক করুন
- টার্মিনাল ক্লিক করুন
- টার্মিনালে, এই কমান্ড দিয়ে আপনার প্রকল্প সেট করুন:
- বিন্যাস:
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. APIs সক্ষম করুন এবং ডিফল্ট অঞ্চল সেট করুন৷
আমরা GPU সমর্থন সহ ক্লাউড রান পরিষেবাগুলি স্থাপন করার আগে, আমাদের প্রয়োজনীয় Google ক্লাউড APIগুলি সক্ষম করতে হবে এবং আপনার প্রকল্প সেটিংস কনফিগার করতে হবে৷
- টার্মিনালে, APIs সক্ষম করুন:
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.
- আপনার ডিফল্ট ক্লাউড রান অঞ্চল সেট করুন।
gcloud config set run/region europe-west1
5. আপনার পাইথন প্রকল্প প্রস্তুত করুন
আসুন স্টার্টার কোড সেট আপ করি যা আমাদের জেমা ব্যাকএন্ড এবং 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. GPU সহ ক্লাউড রানে জেমা ব্যাকএন্ড স্থাপন করুন
প্রথম গুরুত্বপূর্ণ পদক্ষেপটি হল একটি GPU-এক্সিলারেটেড জেমা মডেল স্থাপন করা, যা আপনার ADK এজেন্টের মস্তিষ্ক হিসেবে কাজ করবে। একটি ডিকপলড, ডিপ্লোয়ড এলএলএম থাকা আর্কিটেকচারে অনুকূল হতে পারে যেখানে আপনার একটি আলাদা ফাইন-টিউনড মডেল প্রয়োজন, বা বিচ্ছিন্ন স্কেলিং প্রয়োজন।
- ওল্লামা ব্যাকএন্ড ডিরেক্টরিতে নেভিগেট করুন:
cd ollama-backend
- ওল্লামা ডকারফাইল খুলুন এবং বাস্তবায়ন করুন:
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"]
- ভিত্তি হিসেবে অফিসিয়াল ওল্লামা ইমেজ ব্যবহার করে
- যেকোনো IP ঠিকানা থেকে সংযোগ গ্রহণ করতে
OLLAMA_HOST
সেট করে - পোর্ট 8080 প্রকাশ করে
- 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
আপনি যদি একটি "উৎস থেকে স্থাপনার জন্য একটি আর্টিফ্যাক্ট রেজিস্ট্রি ডকার সংগ্রহস্থলের প্রয়োজন হয় যাতে নির্মিত কন্টেইনারগুলি সংরক্ষণ করা যায়৷ [europe-west1] অঞ্চলে [Cloud-run-source-deploy] নামে একটি সংগ্রহস্থল তৈরি করা হবে৷" বার্তা, চালিয়ে যান।
⚙️ মূল কনফিগারেশন ব্যাখ্যা করা হয়েছে:
- GPU : NVIDIA L4 এর চমৎকার মূল্য-কর্মক্ষমতা অনুপাতের জন্য বেছে নেওয়া হয়েছে অনুমান কাজের চাপের জন্য। L4 24GB GPU মেমরি এবং অপ্টিমাইজড টেনসর অপারেশন প্রদান করে, এটি জেমার মত 270M প্যারামিটার মডেলের জন্য আদর্শ করে তোলে
- মেমরি : মডেল লোডিং, CUDA অপারেশন এবং ওল্লামার মেমরি ব্যবস্থাপনা পরিচালনার জন্য 16GB সিস্টেম মেমরি
- CPU : সর্বোত্তম I/O হ্যান্ডলিং এবং প্রিপ্রসেসিং কাজগুলির জন্য 8 কোর
- সঙ্গতি : প্রতি উদাহরণে 4টি অনুরোধ জিপিইউ মেমরি ব্যবহারের সাথে থ্রুপুট ব্যালেন্স করে
- সময়সীমা : 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 এজেন্ট তৈরি করি যা আপনার নিয়োজিত জেমা ব্যাকএন্ডের সাথে সংযোগ করে।
- 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 ক্লাউড ইন্টিগ্রেশন কনফিগার করে
- ফাস্টএপিআই সার্ভার খুলুন এবং প্রয়োগ করুন:
সমস্ত 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")
- ADK ইন্টিগ্রেশন সহ একটি FastAPI সার্ভার তৈরি করে
- পরীক্ষার জন্য ওয়েব ইন্টারফেস সক্ষম করে
- স্বাস্থ্য পরীক্ষা শেষ পয়েন্ট প্রদান করে
- ডকারফাইল খুলুন এবং বাস্তবায়ন করুন:
সমস্ত 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-100x দ্রুত। এটি একটি গ্লোবাল ক্যাশে এবং সমান্তরাল ডাউনলোড ব্যবহার করে, উল্লেখযোগ্যভাবে কন্টেইনার তৈরির সময় হ্রাস করে
- পাইথন 3.13-স্লিম : ন্যূনতম সিস্টেম নির্ভরতা সহ সর্বশেষ পাইথন সংস্করণ, কন্টেইনারের আকার এবং আক্রমণের পৃষ্ঠকে হ্রাস করে
- মাল্টি-স্টেজ বিল্ড : এর অফিসিয়াল ইমেজ থেকে ইউভি অনুলিপি করা নিশ্চিত করে যে আমরা সর্বশেষ অপ্টিমাইজড বাইনারি পেতে পারি
9. পরিবেশ কনফিগার করুন এবং এজেন্ট স্থাপন করুন
এখন আমরা ADK এজেন্টকে কনফিগার করব আপনার মোতায়েন করা জেমা ব্যাকএন্ডের সাথে সংযোগ করতে এবং এটিকে ক্লাউড রান পরিষেবা হিসাবে স্থাপন করব৷ এর মধ্যে এনভায়রনমেন্ট ভেরিয়েবল সেট আপ করা এবং সঠিক কনফিগারেশন সহ এজেন্ট স্থাপন করা জড়িত।
- আপনার পরিবেশ কনফিগারেশন সেট আপ করুন:
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
ক্লাউড রানে পরিবেশের ভেরিয়েবল বোঝা
এনভায়রনমেন্ট ভেরিয়েবল হল মূল-মানের জোড়া যা রানটাইমে আপনার অ্যাপ্লিকেশন কনফিগার করে। তারা এর জন্য বিশেষভাবে দরকারী:
- API এন্ডপয়েন্ট এবং সার্ভিস ইউআরএল (যেমন আমাদের ওল্লামা ব্যাকএন্ড)
- পরিবেশের মধ্যে পরিবর্তন হওয়া কনফিগারেশন (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টি অনুরোধ
- মেমরি : ADK এজেন্টের জন্য 4GB
- পরিবেশ : আপনার জেমা ব্যাকএন্ডের সাথে সংযোগ করে
🔒 নিরাপত্তা নোট : এই ল্যাবটি সরলতার জন্য --allow-unauthenticated
ব্যবহার করে। উত্পাদনে, ব্যবহার করে সঠিক প্রমাণীকরণ প্রয়োগ করুন:
- পরিষেবা অ্যাকাউন্টের সাথে ক্লাউড রান সার্ভিস-টু-সার্ভিস প্রমাণীকরণ
- আইডেন্টিটি অ্যান্ড অ্যাকসেস ম্যানেজমেন্ট (IAM) নীতি
- বাহ্যিক অ্যাক্সেসের জন্য API কী বা OAuth
- অ্যাক্সেস নিয়ন্ত্রণ করতে
gcloud run services add-iam-policy-binding
ব্যবহার করার কথা বিবেচনা করুন
আপনার এজেন্ট পরিষেবা URL পান:
export AGENT_URL=$(gcloud run services describe production-adk-agent \
--region=europe-west1 \
--format='value(status.url)')
echo "🎉 ADK Agent deployed at: $AGENT_URL"
✅ ক্লাউড রান এনভায়রনমেন্ট ভেরিয়েবল ডকুমেন্টেশনের উপর ভিত্তি করে এনভায়রনমেন্ট ভেরিয়েবলের সেরা অনুশীলন :
- সংরক্ষিত ভেরিয়েবল এড়িয়ে চলুন :
PORT
(ক্লাউড রান এটি স্বয়ংক্রিয়ভাবে সেট করে) বাX_GOOGLE_
দিয়ে শুরু হওয়া ভেরিয়েবল সেট করবেন না - বর্ণনামূলক নাম ব্যবহার করুন : বিরোধ এড়াতে আপনার ভেরিয়েবলের উপসর্গ দিন (যেমন,
MODEL
এর পরিবর্তেGEMMA_MODEL_NAME
) - এস্কেপ কমা : যদি আপনার মানগুলিতে কমা থাকে, তাহলে একটি ভিন্ন ডিলিমিটার ব্যবহার করুন:
--set-env-vars "^@^KEY1=value1,value2@KEY2=..."
- আপডেট বনাম প্রতিস্থাপন : অন্যদের প্রভাবিত না করে নির্দিষ্ট ভেরিয়েবল যোগ/পরিবর্তন করতে
--update-env-vars
ব্যবহার করুন
ক্লাউড রানে ভেরিয়েবল কীভাবে সেট করবেন :
- ফাইল থেকে :
gcloud run deploy SERVICE_NAME --env-vars-file .env --labels dev-tutorial codelab-adk
(একটি ফাইল থেকে একাধিক ভেরিয়েবল লোড করে) - একাধিক পতাকা : জটিল মানগুলির জন্য
--set-env-vars
পুনরাবৃত্তি করুন যা কমা দ্বারা পৃথক করা যায় না
10. ADK ওয়েব ইন্টারফেস দিয়ে পরীক্ষা করুন
উভয় পরিষেবা স্থাপনের সাথে, এটি যাচাই করার সময় এসেছে যে আপনার ADK এজেন্ট সফলভাবে GPU-অ্যাক্সিলারেটেড জেমা ব্যাকএন্ডের সাথে যোগাযোগ করতে পারে এবং ব্যবহারকারীর প্রশ্নের উত্তর দিতে পারে।
- স্বাস্থ্যের শেষ পয়েন্ট পরীক্ষা করুন:
আপনি দেখতে হবে:curl $AGENT_URL/health
{ "status": "healthy", "service": "production-adk-agent" }
- একটি নতুন ব্রাউজার ট্যাবে আপনার
production-adk-agent
URL প্রবেশ করে আপনার এজেন্টের সাথে যোগাযোগ করুন। আপনি ADK ওয়েব ইন্টারফেস দেখতে হবে. - এই নমুনা কথোপকথনের মাধ্যমে আপনার এজেন্ট পরীক্ষা করুন:
- "লাল পান্ডা সাধারণত বন্যতে কি খায়?"
- "তুমি কি আমাকে তুষার চিতা সম্পর্কে একটি মজার তথ্য বলতে পারবে?"
- "কেন বিষ ডার্ট ব্যাঙ এত উজ্জ্বল রঙের হয়?"
- "চিড়িয়াখানায় নতুন বাচ্চা ক্যাঙ্গারু কোথায় পাব?"
- এজেন্ট আপনার নিয়োজিত জেমা মডেল ব্যবহার করে প্রতিক্রিয়া জানায়। আপনি আপনার নিয়োজিত জেমা পরিষেবার লগগুলি পর্যবেক্ষণ করে এটি যাচাই করতে পারেন। আমরা পরবর্তী বিভাগে এটি করব
- প্রতিক্রিয়াগুলি 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")
- সেশন তৈরি : POST-এর সাথে সঠিক ADK API ফর্ম্যাট ব্যবহার করে
/apps/production_agent/users/{user_id}/sessions/{session_id}
। একটিsession_id
এবংuser_id
তৈরি করার পরে, এজেন্টের কাছে একটি অনুরোধ করা যেতে পারে। - বার্তা বিন্যাস :
app_name
,user_id
,session_id
, এবং কাঠামোবদ্ধnew_message
অবজেক্ট সহ ADK স্পেসিফিকেশন অনুসরণ করে - কথোপকথন এন্ডপয়েন্ট : একযোগে সমস্ত ইভেন্ট সংগ্রহ করার জন্য এন্ডপয়েন্ট ব্যবহার করে
/run
(লোড পরীক্ষার জন্য প্রস্তাবিত) - বাস্তবসম্মত লোড : স্বয়ংক্রিয় স্কেলিং ট্রিগার করার জন্য অপেক্ষাকৃত কম সময়ের সাথে কথোপকথনমূলক লোড তৈরি করে
- সেশন তৈরি : POST-এর সাথে সঠিক ADK API ফর্ম্যাট ব্যবহার করে
- নির্ভরতা ইনস্টল করুন:
uv sync
- পঙ্গপাল হল একটি ওপেন সোর্স, পাইথন-ভিত্তিক লোড টেস্টিং টুল যা ওয়েব অ্যাপ্লিকেশন এবং অন্যান্য সিস্টেমের কর্মক্ষমতা এবং লোড পরীক্ষার জন্য ডিজাইন করা হয়েছে। এর মূল বৈশিষ্ট্য হল যে পরীক্ষার পরিস্থিতি এবং ব্যবহারকারীর আচরণ স্ট্যান্ডার্ড পাইথন কোড ব্যবহার করে সংজ্ঞায়িত করা হয়, গ্রাফিকাল ইউজার ইন্টারফেস বা ডোমেন-নির্দিষ্ট ভাষার উপর নির্ভর করে এমন সরঞ্জামগুলির তুলনায় উচ্চ নমনীয়তা এবং অভিব্যক্তি প্রদান করে। আমরা আমাদের পরিষেবাগুলিতে ব্যবহারকারীর ট্র্যাফিক অনুকরণ করতে পঙ্গপাল ব্যবহার করব৷ লোড পরীক্ষা চালান৷
পরীক্ষায় পরামিতি পরিবর্তন করার চেষ্টা করুন এবং আউটপুট পর্যবেক্ষণ করুন। আপনি# 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. স্বয়ংক্রিয় স্কেলিং আচরণ পর্যবেক্ষণ করুন
লোড পরীক্ষা চলার সাথে সাথে, আপনি ক্লাউড রানের স্বয়ংক্রিয় স্কেলিং অ্যাকশনে পর্যবেক্ষণ করতে সক্ষম হবেন। এখানে আপনি GPU ব্যাকএন্ড থেকে ADK এজেন্টকে আলাদা করার মূল স্থাপত্য সুবিধাগুলি দেখতে পাবেন।
লোড পরীক্ষার সময়, আপনার কনসোলে উভয় ক্লাউড রান পরিষেবা কীভাবে স্কেল করে তা নিরীক্ষণ করুন।
- ক্লাউড কনসোলে , এখানে নেভিগেট করুন:
- ক্লাউড রান → উত্পাদন-এডিকে-এজেন্ট → মেট্রিক্স
- ক্লাউড রান → ollama-gemma3-270m-gpu → মেট্রিক্স
👀 আপনার যা পর্যবেক্ষণ করা উচিত:
🤖 ADK এজেন্ট পরিষেবা:
- ট্রাফিক বৃদ্ধির সময় 1 দৃষ্টান্তে স্থির থাকা উচিত
- উচ্চ ট্রাফিকের সময় সিপিইউ এবং মেমরির ব্যবহার বৃদ্ধি পায়
- সেশন ম্যানেজমেন্ট এবং অনুরোধ রাউটিং দক্ষতার সাথে পরিচালনা করে
🎮 জেমা ব্যাকএন্ড পরিষেবা (বাটলনেক):
- অনুমানের চাহিদার উপর ভিত্তি করে 1 থেকে 3টি দৃষ্টান্তের স্কেল
- GPU ব্যবহার লোডের অধীনে উল্লেখযোগ্যভাবে বৃদ্ধি পায়
- GPU-নিবিড় মডেল অনুমানের কারণে এই পরিষেবাটি বাধা হয়ে দাঁড়ায়
- GPU ত্বরণের কারণে মডেল অনুমানের সময়গুলি সামঞ্জস্যপূর্ণ থাকে
💡 মূল অন্তর্দৃষ্টি:
- GPU ব্যাকএন্ড হল বাধা এবং আরও আক্রমনাত্মকভাবে স্কেল করে (1-3 দৃষ্টান্ত)
- ADK এজেন্ট ধারাবাহিক থাকে
- উভয় পরিষেবাই তাদের স্বতন্ত্র লোড বৈশিষ্ট্যের উপর ভিত্তি করে স্বাধীনভাবে স্কেল করে
- অটোস্কেলিং বিভিন্ন লোড অবস্থার অধীনে কর্মক্ষমতা বজায় রাখতে সাহায্য করে
13. উপসংহার
অভিনন্দন! আপনি GPU-এক্সিলারেটেড জেমা ব্যাকএন্ড সহ একটি প্রোডাকশন-রেডি ADK এজেন্ট সফলভাবে মোতায়েন করেছেন এবং অটোস্কেলিং আচরণ পর্যবেক্ষণ করেছেন।
✅ আপনি যা সম্পন্ন করেছেন
- ✅ ক্লাউড রানে একটি GPU-এক্সিলারেটেড জেমা মডেল ব্যাকএন্ড স্থাপন করা হয়েছে
- ✅ একটি ADK এজেন্ট তৈরি এবং মোতায়েন করা হয়েছে যা Gemma ব্যাকএন্ডের সাথে একত্রিত হয়
- ✅ ADK ওয়েব ইন্টারফেস ব্যবহার করে এজেন্ট পরীক্ষা করা হয়েছে
- ✅ দুটি সমন্বিত ক্লাউড রান পরিষেবা জুড়ে অটোস্কেলিং আচরণ পর্যবেক্ষণ করা হয়েছে
💡 এই ল্যাব থেকে মূল অন্তর্দৃষ্টি
- 🎮 GPU ত্বরণ : NVIDIA L4 GPU মডেলের অনুমান কার্যক্ষমতাকে উল্লেখযোগ্যভাবে উন্নত করে
- 🔗 পরিষেবা সমন্বয় : দুটি ক্লাউড রান পরিষেবা একত্রে নির্বিঘ্নে কাজ করতে পারে
- 📈 স্বাধীন স্কেলিং : প্রতিটি পরিষেবা তার স্বতন্ত্র লোড বৈশিষ্ট্যের উপর ভিত্তি করে স্কেল করে
- 🚀 উত্পাদন প্রস্তুতি : আর্কিটেকচারটি বাস্তব-বিশ্বের ট্র্যাফিক প্যাটার্নগুলি কার্যকরভাবে পরিচালনা করে
🔄 পরবর্তী পদক্ষেপ
- বিভিন্ন লোড প্যাটার্নের সাথে পরীক্ষা করুন এবং স্কেলিং আচরণ পর্যবেক্ষণ করুন
- বিভিন্ন জেমা মডেলের আকার ব্যবহার করে দেখুন (তদনুসারে মেমরি এবং 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 এন্ডপয়েন্ট এবং টেস্টিং প্যাটার্নের জন্য সম্পূর্ণ রেফারেন্স
- ক্লাউড রানে লোড টেস্টিং
- এজেন্ট ডেভেলপমেন্ট কিট (ADK) ডকুমেন্টেশন
- ক্লাউড রান GPU ডকুমেন্টেশন
- ওল্লামা মডেল লাইব্রেরি
- গুগল ক্লাউড ট্রেস ডকুমেন্টেশন
- ক্লাউড রান নিরাপত্তার সর্বোত্তম অনুশীলন
- ইউভি পাইথন প্যাকেজ ম্যানেজার
- পঙ্গপাল লোড টেস্টিং ফ্রেমওয়ার্ক