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

持续集成(CI)

探索机器学习的持续集成(CI)。学习如何自动化测试、验证数据,Ultralytics ,实现稳健的机器学习运维(MLOps)。

持续集成(CI)是现代软件工程中的基础实践,开发人员会频繁将代码变更合并到中央代码库,从而触发自动构建和测试流程。 在机器学习(ML)这一专业领域,CI不仅涵盖标准代码验证,更延伸至数据管道、模型架构及训练配置的验证。通过在生命周期早期检测集成错误、语法缺陷和性能退化,团队能够维护稳健的代码库,并加速实验性研究向生产级计算机视觉应用的转化。

机器学习中认知情境的重要性

传统持续集成管道侧重于软件编译和单元测试运行,而以机器学习为核心的持续集成工作流必须应对概率系统的独特复杂性。单个超参数的变更或数据预处理脚本的修改都可能极大改变最终模型的行为。因此,稳健的持续集成策略确保每次代码或数据更新都能自动对照既定基准进行验证。

该流程是机器学习运维(MLOps)的关键组成部分,如同安全网般防止性能下降。高效的AI项目持续集成(CI)管道通常包含:

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

实际应用

在可靠性与安全性至关重要的行业中,实施持续集成至关重要。

  • 自动驾驶系统:自动驾驶车辆的开发过程中,工程师们持续优化行人与车道检测算法。通过持续集成管道,团队能够自动将新型物体检测模型与海量回归场景(如暴雨或低光环境下的驾驶)进行测试,确保代码更新不会意外降低系统detect 的能力。
  • 医学诊断成像: 在医疗应用中,例如通过MRI扫描检测肿瘤时,可重复性是法规要求。持续集成确保每个版本的诊断软件均可追溯且经过测试。若开发人员为提升速度优化推理引擎,持续集成系统会在更新部署至医院前验证诊断准确性保持不变。

CI 与持续交付 (CD) 与机器学习运维 (MLOps)

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

  • 持续集成(CI):专注于集成阶段——代码合并、自动化测试和构建验证。它回答的问题是:"新代码是否破坏了现有功能?"
  • 持续交付(CD):在持续集成(CI)基础上,专注于发布阶段。它自动化了将验证模型部署到生产环境(如云服务器或边缘设备)所需的步骤。 了解更多模型部署信息
  • MLOps:这是涵盖持续集成(CI)、持续交付(CD)和持续监控的统领性学科。虽然 CI是具体实践,但MLOps是管理整个AI生命周期的文化体系与工具集。

人工智能集成工具与平台

开发者利用各种工具来协调这些管道。通用平台如GitHub Actions或Jenkins常用于在代码提交时触发工作流。然而,管理大型数据集和模型版本控制通常需要专用工具。

Ultralytics 作为中央枢纽,可与持续集成(CI)工作流协同运作。该平台支持团队管理数据集、track 实验并可视化性能指标。当CI管道成功训练出新的YOLO26模型时,训练结果可直接记录至平台,从而提供项目健康状况的集中视图,并促进数据科学家之间的协作。

自动化测试示例

在持续集成管道中,您通常需要验证模型能否正确加载并执行推理,且不出现错误。以下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 用于加载轻量级模型并验证其功能符合预期的测试包。在生产级持续集成环境中,这将作为更大测试套件的一部分,该套件会利用诸如 Pytest 确保全面覆盖。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入