AI Model Wiki

    Skip to main content
    20 min
    Lesson 3 of 4

    Monitoring and Optimization

    From the course AI Model Serving at Scale

    Monitor production inference systems and continuously optimize for cost and performance.

    Observability Stack

    Prometheus Metrics

    from prometheus_client import Counter, Histogram, Gauge
    
    # Define metrics
    inference_requests = Counter('inference_requests_total', 'Total inference requests')
    inference_latency = Histogram('inference_latency_seconds', 'Inference latency')
    model_gpu_util = Gauge('model_gpu_utilization', 'GPU utilization %')
    
    @app.post("/predict")
    async def predict(request):
        inference_requests.inc()
        
        with inference_latency.time():
            output = model.generate(request["prompt"])
        
        # Update GPU metrics
        model_gpu_util.set(get_gpu_utilization())
        
        return output
    

    Key Performance Indicators

    • Throughput: Requests per second
    • Latency: P50, P95, P99 response times
    • GPU Utilization: Target 80%+ for cost-efficiency
    • Error Rate: < 0.1% for production
    • Cost per Prediction: Optimize for ROI

    Performance Tuning

    • Profile with nvidia-smi dmon and nsys
    • Adjust batch sizes based on throughput/latency tradeoff
    • Enable GPU memory pooling for allocation efficiency
    • Use multiple model instances per GPU for high concurrency

    Key Takeaways

    • •Prometheus metrics track throughput, latency, GPU utilization, and errors
    • •Target 80%+ GPU utilization for cost-efficient inference
    • •Monitor P95/P99 latencies to catch tail latency issues
    • •Continuous profiling and tuning optimize cost per prediction
    0 of 4 lessons marked complete

    Progress is kept in this browser only.