1. Giriş
Genel Bakış
Bu laboratuvarda, GPU hızlandırmalı Gemma arka ucuyla üretime hazır bir Agent Development Kit (ADK) aracısı dağıtacaksınız. Bu eğitimde, kritik dağıtım kalıplarına odaklanılmaktadır: GPU özellikli Cloud Run hizmetlerini ayarlama, model arka uçlarını ADK aracılarıyla entegre etme ve yük altındaki otomatik ölçeklendirme davranışını gözlemleme.
Yapacaklarınız
Bu laboratuvarda, önemli üretim dağıtımı yönlerine odaklanacaksınız:
- GPU ile Gemma'yı Cloud Run'a dağıtma: Yüksek performanslı bir Gemma modeli arka ucu oluşturun.
- Gemma dağıtımını bir ADK aracısıyla entegre edin: Aracınızı GPU hızlandırmalı modele bağlayın.
- ADK Web arayüzü ile test etme: Sohbet aracınızın doğru şekilde çalıştığını doğrulayın.
- Yük testi gerçekleştirme: Her iki Cloud Run örneğinin de yük altında otomatik olarak nasıl ölçeklendiğini gözlemleyin.
Burada kapsamlı aracı geliştirme yerine üretim dağıtım kalıplarına odaklanılır.
Neler öğreneceksiniz?
- Üretimde kullanılmak üzere GPU hızlandırmalı Gemma modellerini Cloud Run'a dağıtma
- Harici model dağıtımlarını ADK aracılarıyla entegre etme
- Üretime hazır yapay zeka aracısı dağıtımlarını yapılandırma ve test etme
- Yük altında Cloud Run'ın otomatik ölçeklendirme davranışını anlama
- Trafik artışları sırasında birden fazla Cloud Run örneğinin nasıl koordineli çalıştığını gözlemleyin.
- Performansı ve otomatik ölçeklendirmeyi doğrulamak için yük testi uygulama
2. Proje Ayarları
- Google Hesabınız yoksa Google Hesabı oluşturmanız gerekir.
- İş veya okul hesabı yerine kişisel hesap kullanıyorsanız. İş ve okul hesaplarında, bu laboratuvar için gereken API'leri etkinleştirmenizi engelleyen kısıtlamalar olabilir.
- Google Cloud Console'da oturum açın.
- Cloud Console'da faturalandırmayı etkinleştirin.
- Bu laboratuvarı tamamlamak için 1 ABD dolarından daha az tutarda bulut kaynağı kullanmanız gerekir.
- Daha fazla ödeme alınmaması için bu laboratuvarın sonundaki adımları uygulayarak kaynakları silebilirsiniz.
- Yeni kullanıcılar 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
- Yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanmayı seçin.
3. Cloud Shell Düzenleyici'yi açma
- Doğrudan Cloud Shell Düzenleyici'ye gitmek için bu bağlantıyı tıklayın.
- Bugün herhangi bir noktada yetkilendirmeniz istenirse devam etmek için Yetkilendir'i tıklayın.
- Terminal ekranın alt kısmında görünmüyorsa açın:
- Görünüm'ü tıklayın.
- Terminal'i tıklayın.
- Terminalde şu komutla projenizi ayarlayın:
- Biçim:
gcloud config set project [PROJECT_ID]
- Örnek:
gcloud config set project lab-project-id-example
- Proje kimliğinizi hatırlamıyorsanız:
- Tüm proje kimliklerinizi şu komutla listeleyebilirsiniz:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
- Tüm proje kimliklerinizi şu komutla listeleyebilirsiniz:
- Biçim:
- Şu mesajı görmeniz gerekir:
Updated property [core/project].
WARNING
simgesini görüyorsanız veDo you want to continue (Y/n)?
soruluyorsa proje kimliğini yanlış girmiş olabilirsiniz.n
tuşuna,Enter
tuşuna basın vegcloud config set project
komutunu tekrar çalıştırmayı deneyin.
4. API'leri etkinleştirme ve varsayılan bölgeyi ayarlama
GPU destekli Cloud Run hizmetlerini dağıtabilmemiz için gerekli Google Cloud API'lerini etkinleştirmemiz ve proje ayarlarınızı yapılandırmamız gerekir.
- Terminalde API'leri etkinleştirin:
gcloud services enable \
run.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com
Yetkilendirmeniz istenirse devam etmek için Yetkilendir'i tıklayın.
Bu komutun tamamlanması birkaç dakika sürebilir ancak sonunda aşağıdakine benzer bir başarılı mesajı oluşturması gerekir:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
- Varsayılan Cloud Run bölgenizi ayarlayın.
gcloud config set run/region europe-west1
5. Python projenizi hazırlama
Hem Gemma arka ucumuz hem de ADK aracısı hizmetlerimiz için temel yapıyı içeren başlangıç kodunu ayarlayalım.
- Başlangıç deposunu klonlayın:
cd ~ git clone https://github.com/amitkmaraj/accelerate-ai-lab3-starter.git cd accelerate-ai-lab3-starter
- Proje yapısını inceleyin:
Aşağıdaki başlangıç yapısını görmeniz gerekir: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. Mimarisine Genel Bakış
Uygulamadan önce iki hizmetli mimariyi anlayalım:
Önemli analiz: Yük testi sırasında, her iki hizmetin de bağımsız olarak ölçeklendiğini gözlemlersiniz. GPU arka ucu (darboğaz hizmeti), çıkarım yükü için 1-3 örneğe ölçeklenirken ADK aracısı, istek işleme için 1 örnekte kalır.
7. Gemma arka ucunu GPU ile Cloud Run'a dağıtma
İlk kritik adım, ADK aracınızın beyni olarak hizmet verecek GPU hızlandırmalı bir Gemma modeli dağıtmaktır. Ayrı bir ince ayar yapılmış modele ihtiyaç duyduğunuz veya izole ölçeklendirme gerektiren mimarilerde, bağlantısı kaldırılmış ve dağıtılmış bir LLM kullanmak avantajlı olabilir.
- Ollama arka uç dizinine gidin:
cd ollama-backend
- Ollama Dockerfile'ı açın ve uygulayın:
TODO yorumunu aşağıdakilerle değiştirin:cloudshell edit Dockerfile
🔧 Ne işe yarar?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"]
- Temel olarak resmi Ollama görüntüsünü kullanır.
OLLAMA_HOST
ürününün herhangi bir IP adresinden gelen bağlantıları kabul etmesini sağlar.- 8080 numaralı bağlantı noktasını kullanıma açar
- GPU desteğiyle Gemma arka ucunu dağıtın:
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
"Kaynak kodundan dağıtım için oluşturulan container'ları depolamak üzere bir Artifact Registry Docker deposu gerekir. [europe-west1] bölgesinde [cloud-run-source-deploy] adlı bir depo oluşturulacak." mesajını görürseniz devam edin.
⚙️ Temel yapılandırma açıklanıyor:
- GPU: Çıkarım iş yükleri için mükemmel fiyat-performans oranı nedeniyle NVIDIA L4 seçilmiştir. L4, 24 GB GPU belleği ve optimize edilmiş tensör işlemleri sunar. Bu nedenle Gemma gibi 270 milyon parametreli modeller için idealdir.
- Bellek: Model yükleme, CUDA işlemleri ve Ollama'nın bellek yönetimini gerçekleştirmek için 16 GB sistem belleği
- CPU: Optimum G/Ç işleme ve ön işleme görevleri için 8 çekirdek
- Eşzamanlılık: Örnek başına 4 istek, GPU bellek kullanımıyla işleme hızını dengeler.
- Zaman aşımı: 600 saniye, ilk model yükleme ve kapsayıcı başlatma işlemlerini kapsar.
💰 Maliyet Değerlendirmesi: GPU örnekleri, yalnızca CPU içeren örneklerden önemli ölçüde daha pahalıdır (saat başına ~2-4 ABD doları ile saat başına ~0,10 ABD doları). --max-instances 1
ayarı, gereksiz GPU örneği ölçeklendirmesini önleyerek maliyetleri kontrol etmenize yardımcı olur.
- Dağıtımın tamamlanmasını bekleyin ve hizmet URL'sini not edin:
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 aracısı entegrasyonunu uygulama
Şimdi de dağıtılan Gemma arka ucunuza bağlanan minimum bir ADK aracısı oluşturalım.
- ADK temsilcisi dizinine gidin:
cd ../adk-agent
- Aracı yapılandırmasını açın ve uygulayın:
Tüm TODO yorumlarını bu minimum uygulamayla değiştirin:cloudshell edit production_agent/agent.py
🔧 Ne işe yarar?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 aracılığıyla dağıtılan Gemma arka ucunuza bağlanır.
- Basit bir konuşma aracısı oluşturur
- Google Cloud entegrasyonunu yapılandırır.
- FastAPI sunucusunu açın ve uygulayın:
Tüm TODO yorumlarını şu yorumla değiştirin:cloudshell edit server.py
🔧 Ne işe yarar?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 entegrasyonuyla FastAPI sunucusu oluşturur.
- Test için web arayüzünü etkinleştirir.
- Durum denetimi uç noktaları sağlar
- Dockerfile'ı açın ve uygulayın:
Tüm TODO yorumlarını şu yorumla değiştirin:cloudshell edit Dockerfile
Teknoloji seçenekleri açıklanıyor: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: pip'ten 10-100 kat daha hızlı olan modern Python paket yöneticisi. Küresel bir önbellek ve paralel indirmeler kullanarak kapsayıcı derleme sürelerini önemli ölçüde kısaltır.
- Python 3.13-slim: En son Python sürümü, minimum sistem bağımlılıklarıyla container boyutunu ve saldırı yüzeyini azaltır.
- Çok aşamalı derleme: uv'yi resmi görüntüsünden kopyalamak, en yeni optimize edilmiş ikili programı elde etmemizi sağlar.
9. Ortamı Yapılandırma ve Aracıyı Dağıtma
Şimdi ADK aracısını, dağıtılan Gemma arka ucunuza bağlanacak şekilde yapılandırıp Cloud Run hizmeti olarak dağıtacağız. Bu işlem, ortam değişkenlerinin ayarlanmasını ve aracının doğru yapılandırmayla dağıtılmasını içerir.
- Ortam yapılandırmanızı ayarlayın:
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'daki ortam değişkenlerini anlama
Ortam değişkenleri, uygulamanızı çalışma zamanında yapılandıran anahtar/değer çiftleridir. Bu reklamlar özellikle şu durumlarda yararlıdır:
- API uç noktaları ve hizmet URL'leri (ör. Ollama arka ucumuz)
- Ortamlar (geliştirme, hazırlama, üretim) arasında değişen yapılandırma
- Sabit kodlanmaması gereken hassas veriler
ADK aracısını dağıtın:
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
⚙️ Anahtar yapılandırması:
- Otomatik ölçeklendirme: 1 örnekte sabitlenmiştir (basit istek işleme)
- Eşzamanlılık: Örnek başına 10 istek
- Bellek: ADK aracısı için 4 GB
- Ortam: Gemma arka ucunuza bağlanır.
🔒 Güvenlik Notu: Bu laboratuvarda basitlik için --allow-unauthenticated
kullanılır. Üretimde, aşağıdakileri kullanarak uygun kimlik doğrulama uygulayın:
- Hizmet hesaplarıyla Cloud Run hizmetler arası kimlik doğrulaması
- Kimlik ve Erişim Yönetimi (IAM) politikaları
- Harici erişim için API anahtarları veya OAuth
- Erişimi kontrol etmek için
gcloud run services add-iam-policy-binding
kullanmayı düşünün.
Temsilci hizmeti URL'nizi alın:
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 ortam değişkenleri belgelerine dayalı ✅ Ortam değişkenleriyle ilgili en iyi uygulamalar:
- Ayrılmış değişkenlerden kaçının:
PORT
(Cloud Run bunu otomatik olarak ayarlar) veyaX_GOOGLE_
ile başlayan değişkenleri ayarlamayın. - Açıklayıcı adlar kullanın: Çakışmaları önlemek için değişkenlerinize önek ekleyin (ör.
MODEL
yerineGEMMA_MODEL_NAME
) - Virgüllerden kaçma: Değerleriniz virgül içeriyorsa farklı bir ayırıcı kullanın:
--set-env-vars "^@^KEY1=value1,value2@KEY2=..."
- Güncelleme ve Değiştirme: Diğer değişkenleri etkilemeden belirli değişkenleri eklemek/değiştirmek için
--update-env-vars
simgesini kullanın.
Cloud Run'da değişkenleri ayarlama:
- Dosyadan:
gcloud run deploy SERVICE_NAME --env-vars-file .env --labels dev-tutorial codelab-adk
(bir dosyadan birden fazla değişken yükler) - Birden fazla işaret: Virgülle ayrılamayan karmaşık değerler için
--set-env-vars
öğesini tekrarlayın.
10. ADK Web Arayüzü ile test etme
Her iki hizmet de dağıtıldıktan sonra ADK aracınızın GPU hızlandırmalı Gemma arka ucuyla başarıyla iletişim kurabildiğini ve kullanıcı sorgularına yanıt verebildiğini doğrulamanız gerekir.
- Durum bitiş noktasını test edin:
Şunları görürsünüz:curl $AGENT_URL/health
{ "status": "healthy", "service": "production-adk-agent" }
production-adk-agent
URL'nizi yeni bir tarayıcı sekmesine girerek temsilcinizle etkileşimde bulunun. ADK web arayüzünü görürsünüz.- Temsilcinizi aşağıdaki örnek görüşmelerle test edin:
- "Kızıl pandalar genellikle doğada ne yer?"
- "Kar leoparları hakkında ilginç bir bilgi verebilir misin?"
- "Neden zehirli ok kurbağaları bu kadar parlak renklidir?"
- "Hayvanat bahçesinde yeni doğan kanguruyu nerede bulabilirim?"
- Temsilci, dağıtılmış Gemma modelinizi kullanarak yanıt verir. Dağıtılan Gemma hizmetinizin günlüklerini inceleyerek bunu doğrulayabilirsiniz. Bu işlemi bir sonraki bölümde yapacağız.
- Yanıtlar, GPU hızlandırmalı arka uç tarafından oluşturulur.
- Web arayüzü, temiz bir sohbet deneyimi sunar.
11. Yük Testini Uygulama ve Çalıştırma
Üretim dağıtımınızın gerçek dünya trafiğini nasıl işlediğini anlamak için hem ADK aracısında hem de GPU arka uç hizmetlerinde otomatik ölçeklendirmeyi tetikleyecek kapsamlı bir yük testi uygulayacağız.
- Yük testi komut dosyasını açıp uygulayın:
TODO yorumunu aşağıdakilerle değiştirin:cloudshell edit load_test.py
🔧 Ne işe yarar?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")
- Oturum oluşturma:
/apps/production_agent/users/{user_id}/sessions/{session_id}
için POST ile uygun ADK API biçimini kullanır.session_id
veuser_id
oluşturulduktan sonra aracıya istek gönderilebilir. - Mesaj Biçimi:
app_name
,user_id
,session_id
ve yapılandırılmışnew_message
nesnesiyle ADK spesifikasyonuna uygundur. - Conversation Endpoint: Tüm etkinlikleri tek seferde toplamak için
/run
uç noktasını kullanır (yük testi için önerilir). - Gerçekçi Yük: Otomatik ölçeklendirmeyi tetiklemek için daha kısa bekleme süreleriyle sohbet yükü oluşturur.
- Oturum oluşturma:
- Bağımlılıkları yükleyin:
uv sync pip install locust
- Locust, web uygulamalarının ve diğer sistemlerin performans ve yük testi için tasarlanmış, Python tabanlı açık kaynaklı bir yük testi aracıdır. Temel özelliği, test senaryolarının ve kullanıcı davranışının standart Python kodu kullanılarak tanımlanmasıdır. Bu sayede, grafik kullanıcı arayüzlerine veya alana özgü dillere dayanan araçlara kıyasla yüksek esneklik ve ifade gücü sunar. Hizmetlerimize yönelik kullanıcı trafiğini simüle etmek için Locust'u kullanacağız.Yük testini çalıştırın.
Testteki parametreleri değiştirmeyi deneyin ve çıkışı gözlemleyin.# Run a load test to trigger autoscaling locust -f load_test.py \ -H $AGENT_URL \ --headless \ -t 50s \ -u 3 \ -r 1
ollama-gemma3-270m-gpu
değerinin 2-3 örneğe yükseldiğini görürsünüz. 📊 Yük testi parametreleri:- Süre: 50 saniye
- Kullanıcılar: 3 eşzamanlı kullanıcı
- Oluşturma hızı: Saniyede 1 kullanıcı
- Hedef: Her iki hizmette de otomatik ölçeklendirmeyi tetikleyin.
12. Otomatik ölçeklendirme davranışını gözlemleme
Yük testi çalışırken Cloud Run'ın otomatik ölçeklendirme özelliğini gözlemleyebilirsiniz. ADK aracısını GPU arka ucundan ayırmanın temel mimari avantajlarını burada görebilirsiniz.
Yük testi sırasında, konsolunuzda Cloud Run hizmetlerinin nasıl ölçeklendiğini izleyin.
- Cloud Console'da şu bölüme gidin:
- Cloud Run → production-adk-agent → Metrikler
- Cloud Run → ollama-gemma3-270m-gpu → Metrikler
👀 Gözlemlemeniz gerekenler:
🤖 ADK Agent Service:
- Trafik artarken 1 örnekte sabit kalmalıdır.
- Yüksek trafik sırasında CPU ve bellek kullanımında ani artış
- Oturum yönetimini ve istek yönlendirmeyi verimli bir şekilde gerçekleştirir.
🎮 Gemma Arka Uç Hizmeti (Darboğaz):
- Çıkarım talebine göre 1 ila 3 örnek arasında ölçeklendirilir.
- Yük altında GPU kullanımı önemli ölçüde artıyor
- Bu hizmet, GPU yoğun model çıkarımı nedeniyle darboğaz haline gelir.
- GPU hızlandırma sayesinde model çıkarım süreleri tutarlı kalır.
💡 Önemli Analizler:
- GPU arka ucu darboğazdır ve daha agresif bir şekilde ölçeklenir (1-3 örnek).
- ADK aracısı tutarlı kalır
- Her iki hizmet de kendi yük özelliklerine göre bağımsız olarak ölçeklenir.
- Otomatik ölçeklendirme, farklı yük koşullarında performansı korumaya yardımcı olur.
13. Sonuç
Tebrikler! GPU hızlandırmalı Gemma arka ucuyla üretime hazır bir ADK aracısını başarıyla dağıttınız ve otomatik ölçeklendirme davranışını gözlemlediniz.
✅ Başarılarınız
- ✅ Cloud Run'da GPU hızlandırmalı bir Gemma modeli arka ucu dağıtıldı
- ✅ Gemma arka ucuyla entegre olan bir ADK aracısı oluşturup dağıtma
- ✅ ADK web arayüzünü kullanarak aracıyı test etme
- ✅ İki koordineli Cloud Run hizmetinde otomatik ölçeklendirme davranışı gözlemlendi.
💡 Bu laboratuvarda öne çıkan önemli noktalar
- 🎮 GPU Hızlandırma: NVIDIA L4 GPU, model çıkarım performansını önemli ölçüde artırır.
- 🔗 Hizmet Koordinasyonu: İki Cloud Run hizmeti sorunsuz bir şekilde birlikte çalışabilir.
- 📈 Bağımsız Ölçeklendirme: Her hizmet, kendi yük özelliklerine göre ölçeklendirilir.
- 🚀 Üretime Hazır Olma Durumu: Mimaride gerçek dünyadaki trafik kalıpları etkili bir şekilde ele alınır.
🔄 Sonraki adımlar
- Farklı yükleme kalıplarıyla denemeler yapın ve ölçeklendirme davranışını gözlemleyin
- Farklı Gemma modeli boyutlarını deneyin (belleği ve GPU'yu buna göre ayarlayın)
- Üretim dağıtımları için izleme ve uyarı oluşturma işlevlerini uygulama
- Global kullanılabilirlik için çok bölgeli dağıtımları keşfedin
🧹 Temizleme
Ücretlendirilmemek için işiniz bittiğinde kaynakları silin:
gcloud run services delete production-adk-agent --region=europe-west1
gcloud run services delete ollama-gemma3-270m-gpu --region=europe-west1
📖 Kaynaklar
- Başlangıç deposu
- Complete Solution
- Google ADK Belgeleri
- ADK Test Kılavuzu: ADK API uç noktaları ve test kalıpları için eksiksiz referans
- Cloud Run'da Yük Testi
- Aracı Geliştirme Kiti (ADK) Dokümanları
- Cloud Run GPU Belgeleri
- Ollama Model Library
- Google Cloud Trace Belgeleri
- Cloud Run Güvenliğiyle İlgili En İyi Uygulamalar
- UV Python Paket Yöneticisi
- Locust Yük Testi Çerçevesi