在 AI 系統進入生產環境後,最常遇到的問題包括:
這些問題的共同點,就是「缺乏可觀測性(Observability)」。
今天我們會帶你了解:
可觀測性不只是「監控」,而是一種 能夠理解系統內部狀態的能力。
| 概念 | 說明 |
|---|---|
| Monitoring(監控) | 收集指標(如 CPU 使用率、延遲、錯誤數) |
| Logging(日誌) | 記錄事件與錯誤詳情 |
| Tracing(追蹤) | 追蹤單次請求在系統中的完整路徑 |
| Observability(可觀測性) | 整合以上三者,讓開發者能「理解」問題根源 |
在 AI 系統中,可觀測性還要加上:
| 面向 | 說明 | 常見指標 |
|---|---|---|
| 基礎資源(Infra) | VM / GPU 使用率、記憶體、磁碟、佇列長度 | CPU%, GPU%, Memory%, Disk IO |
| 服務層(Service) | API 延遲、請求量、錯誤率、吞吐量 | Latency, Error Rate, QPS |
| 模型層(Model) | 預測準確率、漂移、模型版本差異 | Accuracy, Drift, Confidence |
| 資料層(Data) | 輸入資料分布、異常值偵測 | Mean, Variance, Outlier Ratio |
Azure 提供完整的監控與可觀測性工具組:
📘 範例:
from opentelemetry import trace
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor(connection_string="InstrumentationKey=<your-key>")
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("AI_Inference_Request"):
result = model.predict(input_data)
2️⃣ Azure Monitor + Log Analytics
整合所有 VM、GPU、App Service 的指標
可查詢:
模型延遲分布
GPU 使用率趨勢
佇列壅塞情況
requests
| where cloud_RoleName == "AIModelAPI"
| summarize avg(duration), count() by bin(timestamp, 1m)
3️⃣ Model Monitoring(MLOps)
可自動追蹤模型的輸入資料分布與預測結果
檢測 Data Drift(資料漂移)與 Concept Drift(概念漂移)
可設定告警條件,例如當輸入資料分布偏離超過 ±20% 時通知開發者
實務最佳實踐建議
監控延遲與錯誤率
為每個模型 Endpoint 設定延遲閾值與錯誤率警報。
例如:90th Percentile 延遲超過 800ms 時觸發通知。
建立模型版本追蹤
每次模型更新都應保留版本紀錄。
方便對比新舊模型效能。
實作 Data Drift 偵測
定期比較輸入資料與訓練資料的統計分布。
若變化過大,需重新訓練模型。
集中化 Logging
使用 Log Analytics 或 Cloud Logging 統一收集所有服務日誌。
加上追蹤 ID(Trace ID)以便跨服務排錯。
整合儀表板(Dashboard)
將 CPU/GPU、延遲、錯誤率、Data Drift 全部可視化。
讓運維與開發團隊能在單一畫面掌握 AI 健康狀況。