1. Giới thiệu
Tổng quan
Trong phòng thí nghiệm này, bạn sẽ triển khai một tác nhân Agent Development Kit (ADK) sẵn sàng cho hoạt động sản xuất với phần phụ trợ Gemma được tăng tốc bằng GPU. Trọng tâm là các mẫu triển khai quan trọng: thiết lập các dịch vụ Cloud Run có hỗ trợ GPU, tích hợp các phần phụ trợ mô hình với các tác nhân ADK và quan sát hành vi tự động mở rộng quy mô khi tải.
Bạn sẽ thực hiện
Trong lớp học lập trình này, bạn sẽ tập trung vào các khía cạnh quan trọng của việc triển khai sản xuất:
- Triển khai Gemma lên Cloud Run bằng GPU – Thiết lập một phần phụ trợ mô hình Gemma hiệu suất cao
- Tích hợp việc triển khai Gemma với một tác nhân ADK – Kết nối tác nhân của bạn với mô hình được tăng tốc bằng GPU
- Kiểm thử bằng giao diện web ADK – Xác thực rằng tác nhân đàm thoại của bạn hoạt động chính xác
- Thực hiện kiểm thử tải – Quan sát cách cả hai phiên bản Cloud Run tự động mở rộng quy mô khi chịu tải
Trọng tâm là các mẫu triển khai sản xuất thay vì phát triển tác nhân trên diện rộng.
Kiến thức bạn sẽ học được
- Triển khai các mô hình Gemma được tăng tốc bằng GPU vào Cloud Run để sử dụng trong thực tế
- Tích hợp việc triển khai mô hình bên ngoài với các tác nhân ADK
- Định cấu hình và kiểm thử việc triển khai tác nhân AI sẵn sàng cho sản xuất
- Tìm hiểu hành vi tự động mở rộng quy mô của Cloud Run khi chịu tải
- Quan sát cách nhiều phiên bản Cloud Run phối hợp trong thời gian lưu lượng truy cập tăng đột biến
- Áp dụng kiểm thử tải để xác thực hiệu suất và tính năng tự động mở rộng quy mô
2. Thiết lập dự án
- Nếu chưa có Tài khoản Google, bạn phải tạo một Tài khoản Google.
- Sử dụng tài khoản cá nhân thay vì tài khoản do nơi làm việc hoặc trường học cấp. Tài khoản do nơi làm việc và trường học cấp có thể có các hạn chế khiến bạn không thể bật những API cần thiết cho lớp học này.
- Đăng nhập vào Google Cloud Console.
- Bật tính năng thanh toán trong Cloud Console.
- Việc hoàn thành bài thực hành này sẽ tốn ít hơn 1 USD cho các tài nguyên trên đám mây.
- Bạn có thể làm theo các bước ở cuối bài thực hành này để xoá tài nguyên nhằm tránh bị tính thêm phí.
- Người dùng mới sẽ đủ điều kiện dùng thử miễn phí 300 USD.
- Tạo một dự án mới hoặc chọn sử dụng lại một dự án hiện có.
3. Mở Trình chỉnh sửa Cloud Shell
- Nhấp vào đường liên kết này để chuyển trực tiếp đến Cloud Shell Editor
- Nếu được nhắc uỷ quyền vào bất kỳ thời điểm nào trong ngày hôm nay, hãy nhấp vào Uỷ quyền để tiếp tục.
- Nếu thiết bị đầu cuối không xuất hiện ở cuối màn hình, hãy mở thiết bị đầu cuối:
- Nhấp vào Xem
- Nhấp vào Terminal (Thiết bị đầu cuối)
- Trong thiết bị đầu cuối, hãy thiết lập dự án bằng lệnh sau:
- Định dạng:
gcloud config set project [PROJECT_ID]
- Ví dụ:
gcloud config set project lab-project-id-example
- Nếu bạn không nhớ mã dự án của mình, hãy làm như sau:
- Bạn có thể liệt kê tất cả mã dự án bằng cách dùng:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
- Bạn có thể liệt kê tất cả mã dự án bằng cách dùng:
- Định dạng:
- Bạn sẽ thấy thông báo sau:
Nếu thấy biểu tượngUpdated property [core/project].
WARNING
và được yêu cầuDo you want to continue (Y/n)?
, thì có thể bạn đã nhập sai mã dự án. Nhấnn
, nhấnEnter
rồi thử chạy lại lệnhgcloud config set project
.
4. Bật API và đặt khu vực mặc định
Để có thể triển khai các dịch vụ Cloud Run có hỗ trợ GPU, chúng ta cần bật các API Google Cloud bắt buộc và định cấu hình chế độ cài đặt dự án.
- Trong dòng lệnh, hãy bật các API:
gcloud services enable \
run.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com
Nếu được nhắc uỷ quyền, hãy nhấp vào Uỷ quyền để tiếp tục.
Lệnh này có thể mất vài phút để hoàn tất, nhưng cuối cùng sẽ tạo ra một thông báo thành công tương tự như thông báo này:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
- Đặt khu vực Cloud Run mặc định.
gcloud config set run/region europe-west1
5. Chuẩn bị dự án Python
Hãy thiết lập mã khởi đầu có chứa cấu trúc cơ bản cho cả dịch vụ phụ trợ Gemma và dịch vụ tác nhân ADK.
- Sao chép kho lưu trữ khởi đầu:
cd ~ git clone https://github.com/amitkmaraj/accelerate-ai-lab3-starter.git cd accelerate-ai-lab3-starter
- Tìm hiểu cấu trúc dự án:
Bạn sẽ thấy cấu trúc khởi động sau: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. Tổng quan về Cấu trúc (Architecture)
Trước khi triển khai, hãy tìm hiểu về cấu trúc hai dịch vụ:
Thông tin chi tiết quan trọng: Trong quá trình kiểm thử tải, bạn sẽ thấy cả hai dịch vụ đều mở rộng quy mô độc lập – phần phụ trợ GPU (dịch vụ nút thắt) mở rộng quy mô thành 1-3 phiên bản cho tải suy luận, trong khi tác nhân ADK vẫn ở 1 phiên bản để xử lý yêu cầu.
7. Triển khai Gemma Backend lên Cloud Run bằng GPU
Bước quan trọng đầu tiên là triển khai một mô hình Gemma được tăng tốc bằng GPU. Mô hình này sẽ đóng vai trò là bộ não cho tác nhân ADK của bạn. Việc có một LLM được tách rời và triển khai có thể mang lại lợi ích trong các cấu trúc mà bạn cần một mô hình được tinh chỉnh riêng biệt hoặc yêu cầu mở rộng quy mô riêng biệt.
- Chuyển đến thư mục phụ trợ Ollama:
cd ollama-backend
- Mở và triển khai Ollama Dockerfile:
Thay thế chú thích TODO bằng:cloudshell edit Dockerfile
🔧 Chức năng của chế độ này: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"]
- Sử dụng hình ảnh Ollama chính thức làm nền tảng
- Đặt
OLLAMA_HOST
để chấp nhận các kết nối từ mọi địa chỉ IP - Hiển thị cổng 8080
- Triển khai phần phụ trợ Gemma có hỗ trợ 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
Nếu bạn nhận được thông báo "Việc triển khai từ nguồn yêu cầu phải có một kho lưu trữ Docker Artifact Registry để lưu trữ các vùng chứa đã tạo. Một thông báo "A repository named [cloud-run-source-deploy] in region [europe-west1] will be created." (Một kho lưu trữ có tên [cloud-run-source-deploy] ở khu vực [europe-west1] sẽ được tạo), hãy tiếp tục.
⚙️ Giải thích về cấu hình khoá:
- GPU: NVIDIA L4 được chọn vì có tỷ lệ hiệu suất trên giá tuyệt vời cho khối lượng công việc suy luận. L4 cung cấp bộ nhớ GPU 24 GB và các hoạt động tối ưu hoá tensor, giúp L4 trở thành lựa chọn lý tưởng cho các mô hình có 270 triệu tham số như Gemma
- Bộ nhớ: Bộ nhớ hệ thống 16 GB để xử lý việc tải mô hình, các thao tác CUDA và hoạt động quản lý bộ nhớ của Ollama
- CPU: 8 lõi để xử lý I/O và các tác vụ tiền xử lý tối ưu
- Đồng thời: 4 yêu cầu cho mỗi phiên bản giúp cân bằng thông lượng với mức sử dụng bộ nhớ GPU
- Thời gian chờ: 600 giây để đáp ứng việc tải mô hình ban đầu và khởi động vùng chứa
💰 Cân nhắc chi phí: Các phiên bản GPU đắt hơn đáng kể so với các phiên bản chỉ có CPU (khoảng 2 – 4 USD/giờ so với khoảng 0,1 USD/giờ). Chế độ cài đặt --max-instances 1
giúp kiểm soát chi phí bằng cách ngăn chặn việc mở rộng quy mô phiên bản GPU không cần thiết.
- Đợi quá trình triển khai hoàn tất và ghi lại URL của dịch vụ:
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. Triển khai tính năng tích hợp ADK Agent
Bây giờ, hãy tạo một tác nhân ADK tối thiểu kết nối với Gemma backend mà bạn đã triển khai.
- Chuyển đến thư mục nhân viên hỗ trợ ADK:
cd ../adk-agent
- Mở và triển khai cấu hình tác nhân:
Thay thế tất cả chú thích TODO bằng cách triển khai tối giản này:cloudshell edit production_agent/agent.py
🔧 Chức năng của chế độ này: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
- Kết nối với Gemma backend đã triển khai thông qua LiteLlm
- Tạo một tác nhân đàm thoại đơn giản
- Định cấu hình chế độ tích hợp với Google Cloud
- Mở và triển khai máy chủ FastAPI:
Thay thế tất cả bình luận TODO bằng:cloudshell edit server.py
🔧 Chức năng của chế độ này: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")
- Tạo một máy chủ FastAPI có tích hợp ADK
- Bật giao diện web để kiểm thử
- Cung cấp các điểm cuối kiểm tra tình trạng
- Mở và triển khai Dockerfile:
Thay thế tất cả bình luận TODO bằng:cloudshell edit Dockerfile
Giải thích về các lựa chọn công nghệ: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: Trình quản lý gói Python hiện đại, nhanh hơn pip từ 10 đến 100 lần. Công cụ này sử dụng bộ nhớ đệm chung và các lượt tải song song, giúp giảm đáng kể thời gian tạo vùng chứa
- Python 3.13-slim: Phiên bản Python mới nhất với các phần phụ thuộc tối thiểu của hệ thống, giúp giảm kích thước vùng chứa và bề mặt tấn công
- Bản dựng nhiều giai đoạn: Việc sao chép uv từ hình ảnh chính thức của nó đảm bảo chúng ta có được tệp nhị phân được tối ưu hoá mới nhất
9. Định cấu hình môi trường và triển khai tác nhân
Bây giờ, chúng ta sẽ định cấu hình tác nhân ADK để kết nối với Gemma phụ trợ đã triển khai và triển khai tác nhân này dưới dạng một dịch vụ Cloud Run. Việc này bao gồm thiết lập các biến môi trường và triển khai tác nhân với cấu hình phù hợp.
- Thiết lập cấu hình môi trường:
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
Tìm hiểu về các biến môi trường trong Cloud Run
Biến môi trường là các cặp khoá-giá trị giúp định cấu hình ứng dụng của bạn trong thời gian chạy. Các chỉ số này đặc biệt hữu ích cho:
- Điểm cuối API và URL dịch vụ (chẳng hạn như phụ trợ Ollama của chúng tôi)
- Cấu hình thay đổi giữa các môi trường (phát triển, dàn dựng, sản xuất)
- Dữ liệu nhạy cảm không nên được mã hoá cứng
Triển khai tác nhân 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
⚙️ Cấu hình chính:
- Tự động mở rộng quy mô: Cố định ở 1 phiên bản (xử lý yêu cầu đơn giản)
- Tính đồng thời: 10 yêu cầu trên mỗi phiên bản
- Bộ nhớ: 4 GB cho tác nhân ADK
- Môi trường: Kết nối với phần phụ trợ Gemma
🔒 Lưu ý về bảo mật: Để đơn giản, lớp học lập trình này sử dụng --allow-unauthenticated
. Trong quá trình sản xuất, hãy triển khai phương thức xác thực phù hợp bằng cách sử dụng:
- Xác thực dịch vụ với dịch vụ Cloud Run bằng tài khoản dịch vụ
- Chính sách Quản lý danh tính và quyền truy cập (IAM)
- Khoá API hoặc OAuth để truy cập bên ngoài
- Cân nhắc sử dụng
gcloud run services add-iam-policy-binding
để kiểm soát quyền truy cập
Lấy URL dịch vụ của nhân viên hỗ trợ:
export AGENT_URL=$(gcloud run services describe production-adk-agent \
--region=europe-west1 \
--format='value(status.url)')
echo "🎉 ADK Agent deployed at: $AGENT_URL"
✅ Các phương pháp hay nhất về biến môi trường dựa trên tài liệu về biến môi trường Cloud Run:
- Tránh các biến dành riêng: Đừng đặt
PORT
(Cloud Run sẽ tự động đặt biến này) hoặc các biến bắt đầu bằngX_GOOGLE_
- Sử dụng tên mô tả: Thêm tiền tố vào các biến để tránh xung đột (ví dụ:
GEMMA_MODEL_NAME
thay vìMODEL
) - Thoát dấu phẩy: Nếu giá trị của bạn có chứa dấu phẩy, hãy sử dụng dấu phân cách khác:
--set-env-vars "^@^KEY1=value1,value2@KEY2=..."
- Cập nhật so với Thay thế: Sử dụng
--update-env-vars
để thêm/thay đổi các biến cụ thể mà không ảnh hưởng đến các biến khác
Cách thiết lập biến trong Cloud Run:
- Từ tệp:
gcloud run deploy SERVICE_NAME --env-vars-file .env --labels dev-tutorial codelab-adk
(tải nhiều biến từ một tệp) - Nhiều cờ: Lặp lại
--set-env-vars
cho các giá trị phức tạp không thể phân tách bằng dấu phẩy
10. Kiểm thử bằng Giao diện web ADK
Sau khi triển khai cả hai dịch vụ, bạn cần xác thực rằng tác nhân ADK có thể giao tiếp thành công với phụ trợ Gemma được tăng tốc bằng GPU và phản hồi các truy vấn của người dùng.
- Kiểm thử điểm cuối về tình trạng:
Bạn sẽ thấy:curl $AGENT_URL/health
{ "status": "healthy", "service": "production-adk-agent" }
- Tương tác với tác nhân bằng cách nhập URL cho
production-adk-agent
vào một thẻ trình duyệt mới. Bạn sẽ thấy giao diện web ADK. - Hãy thử nghiệm nhân viên hỗ trợ của bạn bằng những cuộc trò chuyện mẫu sau:
- "Gấu trúc đỏ thường ăn gì trong tự nhiên?"
- "Bạn có thể cho tôi biết một thông tin thú vị về báo tuyết không?"
- "Tại sao ếch phi tiêu độc lại có màu sắc tươi sáng?"
- "Tôi có thể tìm thấy chú kangaroo con mới ở đâu trong vườn thú?"
- Nhân viên hỗ trợ sẽ phản hồi bằng mô hình Gemma mà bạn đã triển khai. Bạn có thể xác minh điều này bằng cách quan sát nhật ký cho dịch vụ Gemma đã triển khai. Chúng ta sẽ làm việc này trong phần tiếp theo
- Câu trả lời được tạo bằng phần phụ trợ tăng tốc GPU
- Giao diện web mang lại trải nghiệm trò chuyện rõ ràng
11. Triển khai và chạy kiểm thử tải
Để hiểu cách hoạt động triển khai sản xuất của bạn xử lý lưu lượng truy cập thực tế, chúng tôi sẽ triển khai quy trình kiểm thử tải toàn diện để kích hoạt tính năng tự động mở rộng quy mô trên cả tác nhân ADK và các dịch vụ phụ trợ GPU.
- Mở và triển khai tập lệnh kiểm thử tải:
Thay thế chú thích TODO bằng:cloudshell edit load_test.py
🔧 Chức năng của chế độ này: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")
- Tạo phiên: Sử dụng đúng định dạng API ADK với POST đến
/apps/production_agent/users/{user_id}/sessions/{session_id}
. Sau khi tạosession_id
vàuser_id
, bạn có thể gửi yêu cầu đến tác nhân. - Định dạng thông báo: Tuân theo quy cách ADK với
app_name
,user_id
,session_id
và đối tượng có cấu trúcnew_message
- Điểm cuối của cuộc trò chuyện: Sử dụng điểm cuối
/run
để thu thập tất cả sự kiện cùng một lúc (nên dùng cho kiểm thử tải) - Realistic Load (Tải thực tế): Tạo tải đàm thoại với thời gian chờ ngắn hơn để kích hoạt tính năng tự động mở rộng quy mô
- Tạo phiên: Sử dụng đúng định dạng API ADK với POST đến
- Cài đặt các phần phụ thuộc:
uv sync pip install locust
- Locust là một công cụ kiểm thử tải mã nguồn mở, dựa trên Python, được thiết kế để kiểm thử hiệu suất và tải của các ứng dụng web và các hệ thống khác. Đặc điểm chính của công cụ này là các tình huống kiểm thử và hành vi của người dùng được xác định bằng mã Python tiêu chuẩn, mang lại tính linh hoạt và khả năng biểu đạt cao so với những công cụ dựa vào giao diện người dùng đồ hoạ hoặc ngôn ngữ dành riêng cho miền. Chúng ta sẽ sử dụng Locust để mô phỏng lưu lượng truy cập của người dùng vào các dịch vụ của mình.Chạy kiểm thử tải.
Hãy thử thay đổi các tham số trong bài kiểm thử và quan sát kết quả. Bạn sẽ nhận thấy số lượng# 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
tăng đột biến lên 2-3 trường hợp. 📊 Các tham số kiểm thử tải:- Thời lượng: 50 giây
- Người dùng: 3 người dùng đồng thời
- Tốc độ tạo: 1 người dùng/giây
- Mục tiêu: Kích hoạt tính năng tự động mở rộng quy mô trên cả hai dịch vụ
12. Quan sát hành vi của tính năng AutoScaling
Khi kiểm thử tải chạy, bạn sẽ có thể quan sát tính năng tự động mở rộng quy mô của Cloud Run đang hoạt động. Đây là nơi bạn sẽ thấy những lợi ích chính về cấu trúc khi tách tác nhân ADK khỏi phần phụ trợ GPU.
Trong quá trình kiểm thử tải, hãy theo dõi cách cả hai dịch vụ Cloud Run mở rộng quy mô trong bảng điều khiển.
- Trong Cloud Console, hãy chuyển đến:
- Cloud Run → production-adk-agent → Metrics
- Cloud Run → ollama-gemma3-270m-gpu → Metrics
👀 Những điều bạn nên quan sát:
🤖 Dịch vụ tác nhân ADK:
- Vẫn giữ nguyên ở 1 phiên bản trong khi lưu lượng truy cập tăng lên
- Mức sử dụng CPU và bộ nhớ tăng đột biến trong thời gian có lưu lượng truy cập cao
- Xử lý việc quản lý phiên và định tuyến yêu cầu một cách hiệu quả
🎮 Dịch vụ phụ trợ Gemma (Điểm tắc nghẽn):
- Mở rộng quy mô từ 1 đến 3 phiên bản dựa trên nhu cầu suy luận
- Mức sử dụng GPU tăng đáng kể khi chịu tải
- Dịch vụ này trở thành điểm tắc nghẽn do suy luận mô hình chuyên sâu về GPU
- Thời gian suy luận mô hình vẫn nhất quán nhờ tính năng tăng tốc GPU
💡 Thông tin chi tiết chính:
- Phần phụ trợ GPU là điểm tắc nghẽn và mở rộng quy mô mạnh mẽ hơn (1-3 phiên bản)
- Tác nhân ADK vẫn nhất quán
- Cả hai dịch vụ đều mở rộng quy mô độc lập dựa trên đặc điểm tải riêng của chúng
- Tính năng tự động mở rộng quy mô giúp duy trì hiệu suất trong các điều kiện tải khác nhau
13. Kết luận
Xin chúc mừng! Bạn đã triển khai thành công một tác nhân ADK sẵn sàng cho sản xuất với phần phụ trợ Gemma được tăng tốc bằng GPU và quan sát thấy hành vi tự động mở rộng quy mô.
✅ Thành tích bạn đạt được
- ✅ Triển khai một phần phụ trợ mô hình Gemma được tăng tốc bằng GPU trên Cloud Run
- ✅ Tạo và triển khai một tác nhân ADK tích hợp với phần phụ trợ Gemma
- ✅ Đã kiểm thử tác nhân bằng giao diện web ADK
- ✅ Quan sát hành vi tự động mở rộng quy mô trên 2 dịch vụ Cloud Run phối hợp
💡 Thông tin chi tiết chính từ lớp học này
- 🎮 Tăng tốc bằng GPU: GPU NVIDIA L4 cải thiện đáng kể hiệu suất suy luận mô hình
- 🔗 Điều phối dịch vụ: Hai dịch vụ Cloud Run có thể phối hợp hoạt động một cách liền mạch
- 📈 Mở rộng quy mô độc lập: Mỗi dịch vụ mở rộng quy mô dựa trên đặc điểm tải riêng
- 🚀 Mức độ sẵn sàng phát hành công khai: Cấu trúc xử lý hiệu quả các mẫu lưu lượng truy cập trong thế giới thực
🔄 Các bước tiếp theo
- Thử nghiệm nhiều mẫu tải và quan sát hành vi mở rộng quy mô
- Thử các kích thước mô hình Gemma khác nhau (điều chỉnh bộ nhớ và GPU cho phù hợp)
- Triển khai tính năng giám sát và cảnh báo cho các quy trình triển khai sản xuất
- Khám phá các hoạt động triển khai ở nhiều khu vực để có phạm vi cung cấp trên toàn cầu
🧹 Dọn dẹp
Để tránh bị tính phí, hãy xoá các tài nguyên khi bạn hoàn tất:
gcloud run services delete production-adk-agent --region=europe-west1
gcloud run services delete ollama-gemma3-270m-gpu --region=europe-west1
📖 Tài nguyên
- Kho lưu trữ dành cho người mới bắt đầu
- Giải pháp hoàn chỉnh
- Tài liệu về ADK của Google
- Hướng dẫn kiểm thử ADK – Tài liệu tham khảo đầy đủ về các điểm cuối API ADK và mẫu kiểm thử
- Kiểm thử tải trên Cloud Run
- Tài liệu về Agent Development Kit (ADK)
- Tài liệu về GPU trên Cloud Run
- Thư viện mô hình Ollama
- Tài liệu về Google Cloud Trace
- Các phương pháp bảo mật hay nhất cho Cloud Run
- Trình quản lý gói UV Python
- Khung kiểm thử tải Locust