Giới thiệu
Trong bài viết này, chúng ta sẽ khám phá cách thêm khả năng quan sát cho Gemma 2B trên Kubernetes bằng cách sử dụng Prometheus và Grafana. Khi thiết lập ban đầu, tôi đã mong đợi thấy những bảng điều khiển trực quan với các thông số như:
- Số lượng token trên mỗi yêu cầu
- Độ trễ trên mỗi lần suy luận
- Số lần suy luận đã xử lý
Tuy nhiên, những gì chúng tôi nhận được chỉ là các chỉ số container nhàm chán: % CPU, mức sử dụng bộ nhớ, số lần khởi động lại.
Rõ ràng, họ đã cho chúng tôi biết pod đang hoạt động, nhưng không có thông tin gì về mô hình chính nó. Chúng tôi không biết liệu suy luận có chậm hay không, yêu cầu có bị hết thời gian hay không, hay có bao nhiêu token đã được xử lý.
🔍 Khắc Phục Vấn Đề Chỉ Số
Chúng tôi đã kiểm tra các vấn đề sau:
- Prometheus có đang quét pod Ollama không? ✅
- Các bảng điều khiển Grafana đã kết nối chưa? ✅
- Điểm cuối chỉ số trên Ollama? ❌
Lúc đó, chúng tôi nhận ra rằng:
- Ollama theo mặc định không cung cấp các chỉ số cấp mô hình.
- Nó chỉ phục vụ API cho suy luận, không có gì khác.
- Prometheus đang quét… nhưng không có thông tin hữu ích.
💡 Giải Pháp: Ollama Exporter như Sidecar
Trong quá trình tìm kiếm trên GitHub, chúng tôi đã tìm thấy một dự án: Ollama Exporter. Nó hoạt động như một container sidecar bên trong cùng một pod với Ollama, giao tiếp với API của Ollama và cung cấp các chỉ số thực tế tại /metrics cho Prometheus.
Cấu trúc sẽ như sau:
[ Pod Ollama ]
├── Ollama Server (API → 11434)
└── Ollama Exporter (Metrics → 11435)
🛠 Cách Chúng Tôi Tích Hợp
Dưới đây là đoạn mã mà chúng tôi đã thêm vào triển khai Ollama:
- name: ollama-exporter
image: ghcr.io/jmorganca/ollama-exporter:latest
ports:
- containerPort: 11435
env:
- name: OLLAMA_HOST
value: "http://localhost:11434"
Và trong cấu hình Prometheus:
scrape_configs:
- job_name: 'ollama'
static_configs:
- targets: ['ollama-service:11435']
📊 Các Chỉ Số Chúng Tôi Cuối Cùng Nhận Được
Sau khi thêm exporter, Grafana đã sáng rực với:
Tên Chỉ Số Nội Dung Chỉ Số
ollama_requests_total Số lượng yêu cầu suy luận
ollama_latency_seconds Độ trễ trên mỗi yêu cầu suy luận
ollama_tokens_processed Số token đã được xử lý
ollama_model_load_time Thời gian tải mô hình Gemma 2B
Đột nhiên, chúng tôi có khả năng quan sát mô hình thực sự, không chỉ là sức khỏe của pod.
🚀 Bài Học Rút Ra
- Các chỉ số mặc định của Kubernetes không phải là chỉ số mô hình → Bạn cần một sidecar như Ollama Exporter.
- Chỉ cần một công việc quét → Prometheus sẽ không quét những gì bạn không chỉ định.
- Chỉ số giúp điều chỉnh → Chúng tôi đã sử dụng các chỉ số này để thiết lập yêu cầu CPU/bộ nhớ một cách hợp lý.
🔮 Bước Tiếp Theo
- Giờ đây, khi chúng tôi đã có khả năng quan sát cấp mô hình, bước tiếp theo sẽ là:
- Thêm quy tắc cảnh báo cho các đỉnh độ trễ hoặc lỗi token.
- Xuất các chỉ số lịch sử vào kho lưu trữ dài hạn (ví dụ: Loki, Thanos).
Thử nghiệm nhiều mô hình Gemma 3, LLaMA 3, Phi-3 và so sánh độ trễ suy luận giữa chúng.
💬 Kết Nối Với Tôi
Nếu bạn thử thiết lập này hoặc cải thiện nó, tôi rất mong nhận được phản hồi từ bạn!
Hãy để lại một sao ⭐ trên repo nếu nó giúp ích cho bạn — điều này sẽ giúp tôi có động lực để viết thêm nhiều thử nghiệm như thế này!