Observability
探索 AI 和 ML 中可观测性的重要性。学习如何调试复杂系统、监控 Ultralytics YOLO26 的性能并获得深刻的模型洞察。
可观测性是指仅根据系统的外部输出了解复杂系统内部状态的能力。在**人工智能 (AI)和机器学习 (ML)这两个快速发展的领域中,可观测性超越了简单的状态检查,能够深入洞察模型为什么会表现出某种特定的行为。随着现代深度学习 (DL)架构(例如最先进的YOLO26**)变得越来越复杂,它们往往会像“黑盒”一样运作。可观测性工具为这些系统创建了一个透明的窗口,使工程团队能够调试意外行为、追踪错误的根本原因,并确保生产环境中的可靠性。
可观测性与监控#
尽管经常被互换使用,但可观测性和**模型监控在MLOps**生命周期中服务于不同但互补的目的。
- 模型监控具有被动性,专注于“已知的不确定性”。它涉及根据既定阈值跟踪预定义指标,例如推理延迟、CPU 使用率或错误率。监控回答了这样一个问题:“系统是否健康?”
- 可观测性是主动的,旨在解决“未知的不确定性”。它提供了调查**训练数据准备期间未预料到的新问题所需的细粒度数据——日志、追踪和高基数事件。正如Google SRE Book**中所述,可观测的系统使你能够在不发布新代码的情况下了解新的行为。它回答了这样一个问题:“系统为什么会这样运作?”
可观测性的三大支柱#
为了在**计算机视觉 (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**等工具的标准集成允许数据科学家在整个模型生命周期中保持严格的实验跟踪和可观测性。






