Observability
探索可观测性在 AI 和 ML 中的重要性。了解如何调试复杂系统、监控 Ultralytics YOLO26 性能,并深入洞察模型。
可观测性是指仅依据复杂系统的外部输出,就能理解其内部状态的能力。在快速发展的**人工智能(AI)和机器学习(ML)领域,可观测性超越了简单的状态检查,能够深入了解模型为何以某种方式运行。随着现代深度学习(DL)架构(例如最先进的YOLO26**)日益复杂,它们往往会成为“黑盒”。可观测性工具为这些系统提供了透明的观察窗口,使工程团队能够调试意外行为、追踪错误的根本原因,并确保系统在生产环境中的可靠性。
可观测性与监控的区别#
虽然可观测性和**模型监控经常被混用,但二者在MLOps**生命周期中发挥着不同但互补的作用。
- 模型监控具有响应式特点,重点关注“已知的未知问题”。它会根据既定阈值,跟踪预先定义的指标,例如推理延迟、CPU 使用率或错误率。监控回答的是:“系统是否健康?”
- 可观测性具有主动性,旨在应对“未知的未知问题”。它提供日志、追踪和高基数事件等细粒度数据,用于调查在准备**训练数据时未曾预料到的新问题。正如《Google SRE 运维解密》**中所述,可观测系统无需发布新代码,就能帮助你理解新的行为。它回答的是:“系统为什么会这样运行?”
可观测性的三大支柱#
要在**计算机视觉(CV)**流水线中实现真正的可观测性,系统通常依赖三种主要类型的遥测数据:
-
**日志:带时间戳的、不可变的离散事件记录。在检测流水线中,日志可能会记录输入图像的分辨率,或某次运行期间使用的特定超参数调优配置。结构化日志通常采用JSON**格式,便于进行复杂查询和分析。
-
指标:随时间测量的聚合数值数据,例如平均精确率、内存消耗或**GPU利用率。Prometheus和Grafana**等工具是存储此类时间序列数据并将趋势可视化的标准工具。
-
**追踪:追踪会记录请求流经各种微服务时的完整生命周期。对于分布式 AI 应用,OpenTelemetry等标准有助于绘制请求路径,并突出显示推理引擎中的瓶颈或网络延迟。Jaeger**等专用工具有助于将这些分布式事务可视化。
在 Python 中实现可观测性#
你可以使用回调函数记录特定的内部状态,从而增强训练流水线的可观测性。以下示例演示了如何向一次**YOLO26**训练会话中添加自定义回调,以实时监控性能指标。
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Define a custom callback for observability
def on_train_epoch_end(trainer):
# Access and print specific metrics at the end of each epoch
map50 = trainer.metrics.get("metrics/mAP50(B)", 0)
print(f"Observability Log - Epoch {trainer.epoch + 1}: mAP50 is {map50:.4f}")
# Register the callback and start training
model.add_callback("on_train_epoch_end", on_train_epoch_end)
model.train(data="coco8.yaml", epochs=3)实际应用#
在动态环境中部署高性能模型时,可观测性至关重要,因为**测试数据**可能无法完全匹配现实世界的情况。
- **自动驾驶车辆:在开发自动驾驶车辆时,可观测性使工程师能够重建系统在接管事件期间的确切状态。通过将目标检测**输出与传感器日志和控制命令关联起来,团队可以确定制动错误是由传感器噪声、模型预测故障,还是规划模块中的逻辑错误引起的。
- 医疗诊断:在医疗领域的 AI中,确保性能一致性对患者安全至关重要。如果模型应用于来自新型 MRI 扫描仪的图像时性能下降,可观测性工具便能检测到数据漂移。追踪可以揭示问题是源于图像**数据预处理发生变化,还是输入分布发生偏移,从而在不影响AI 安全**的情况下快速修复问题。
与现代工具集成#
现代工作流通常会将可观测性直接集成到训练平台中。**Ultralytics Platform的用户可以使用内置功能可视化损失曲线、系统性能和数据集分析。此外,与TensorBoard和MLflow**等工具的标准集成,使数据科学家能够在整个模型生命周期中进行严格的实验跟踪和可观测性管理。









