深圳Yolo 视觉
深圳
立即加入
词汇表

持续集成(CI)

探索机器学习中的持续集成(CI)。了解如何自动化测试、验证数据以及部署Ultralytics YOLO26模型,以实现稳健的MLOps。

持续集成 (CI) 是现代软件工程中的一项基本实践,开发人员频繁地将代码更改合并到中央仓库,从而触发自动化构建和测试序列。在机器学习 (ML)这一专业领域,CI超越了标准的代码验证,扩展到包括数据管道、模型架构和训练配置的验证。通过在生命周期早期检测集成错误、语法缺陷和性能退化,团队可以维护一个健壮的代码库,并加速从实验研究到生产级计算机视觉应用的过渡。

CI在机器学习中的重要性

传统的CI管道侧重于编译软件和运行单元测试,而以ML为中心的CI工作流必须处理概率系统的独特复杂性。单个超参数的更改或数据预处理脚本的修改都可能显著改变最终模型的行为。因此,一个健壮的CI策略确保对代码或数据的每一次更新都能够根据既定基线进行自动化验证。

这一过程是机器学习运维 (MLOps)的关键组成部分,充当防止性能退化的安全网。针对AI项目的有效CI管道通常包含:

  • 代码质量检查: 使用 静态分析工具 和代码检查器来强制执行编码标准并在执行前捕获语法错误。
  • 数据验证: 验证传入的训练数据是否符合预期的模式和统计分布,从而防止出现损坏的图像文件或缺失的标注等问题。
  • 自动化测试:对实用函数运行单元测试,以及可能涉及训练一个小模型几个epochs以确保收敛的集成测试。
  • 模型基准测试:根据固定的验证集评估模型,以检查平均精度 (mAP)等关键指标是否已降至可接受的阈值以下。

实际应用

对于可靠性和安全性至关重要的行业来说,实施持续集成至关重要。

  • 自动驾驶系统:autonomous vehicles 的开发中,工程师不断完善行人 detect 和车道 detect 算法。CI 流水线允许团队针对大量的回归场景(例如在大雨或弱光下驾驶)自动测试新的 object detection 模型,确保代码更新不会意外降低系统 detect 危险的能力。
  • 医学诊断成像:对于 医疗应用,例如在MRI扫描中detect肿瘤,可复现性是一项监管要求。CI确保诊断软件的每个版本都可追溯且经过测试。如果开发人员为提高速度而优化 推理引擎,CI系统会验证诊断的准确性是否保持不变,然后才将更新部署到医院。

CI 与 持续交付 (CD) 与 MLOps

在开发生命周期中,区分持续集成与相关概念非常重要。

  • 持续集成(CI):专注于集成阶段——合并代码、自动化测试和验证构建。它回答了“这段新代码是否破坏了现有功能?”这个问题。
  • 持续交付(CD):紧随CI之后,专注于发布阶段。它自动化了将经过验证的模型部署到生产环境(例如云服务器或边缘设备)所需的步骤。了解更多关于模型部署的信息。
  • MLOps:这是一门涵盖 CI、CD 和持续监控的总体学科。CI 是一种特定的实践,而 MLOps 则是用于管理整个 AI 生命周期的一套文化和工具。

AI集成工具与平台

开发人员利用各种工具来编排这些管道。GitHub ActionsJenkins等通用平台常用于在代码提交时触发工作流。然而,管理大型数据集和模型版本控制通常需要专门的工具。

Ultralytics Platform作为一个中央枢纽,补充了CI工作流。它允许团队管理数据集、跟踪训练实验并可视化性能指标。当CI管道成功训练一个新的YOLO26模型时,结果可以直接记录到该平台,从而提供项目健康状况的集中视图,并促进数据科学家之间的协作。

自动化测试示例

在CI管道中,通常需要验证模型能否正确加载并无误地执行inference。以下python脚本演示了一个简单的“健全性检查”,可以在代码推送到仓库时自动运行。

from ultralytics import YOLO

# Load the YOLO26 model (using the nano version for speed in CI tests)
model = YOLO("yolo26n.pt")

# Perform inference on a dummy image or a standard test asset
# 'bus.jpg' is a standard asset included in the package
results = model("bus.jpg")

# Assert that detections were made to ensure the pipeline isn't broken
# If len(results[0].boxes) is 0, something might be wrong with the model or input
assert len(results[0].boxes) > 0, "CI Test Failed: No objects detected!"

print("CI Test Passed: Model loaded and inference successful.")

该脚本利用 ultralytics 包来加载轻量级模型并验证其功能是否符合预期。在生产CI环境中,这将是更大测试套件的一部分,该套件利用诸如 Pytest 等框架以确保全面的覆盖。

让我们一起共建AI的未来!

开启您的机器学习未来之旅