持续集成(CI)
通过持续集成增强AI/ML工作流程。自动执行测试,提高代码质量,并轻松简化模型开发。
持续集成 (CI) 是一种软件开发实践,开发人员经常将其代码更改合并到中央存储库中,之后运行自动构建和测试。CI 的主要目标是及早发现集成问题、提高代码质量并简化开发工作流程。在人工智能 (AI)和机器学习 (ML)的背景下,CI 超越了传统的代码检查,包括数据、模型和整体管道性能的验证,构成了机器学习运维 (MLOps)的关键组成部分。
持续集成的关键原则
CI 过程建立在自动化和频繁迭代的基础之上。开发人员使用诸如Git之类的版本控制系统,将小的、频繁的更改推送到共享存储库。每次推送都会触发一个自动化的工作流程或管道,该流程或管道会执行几个关键步骤:
- 自动构建: 系统自动编译代码以确保其正确集成。 对于 ML 项目,这可能涉及使用容器化工具(如Docker)设置环境。
- 自动化测试: 运行一套测试来验证新的更改。这包括代码逻辑的单元测试、组件交互的集成测试,以及 ML 的专门测试,例如数据验证和模型评估。
- 快速反馈循环: 如果流程中的任何步骤失败,开发团队会立即收到通知。这使他们能够在问题变得更复杂并集成到主代码库之前快速解决问题。
机器学习的持续集成 (CI4ML)
将 CI 应用于 机器学习 项目会带来独特的挑战。除了代码之外,ML 系统还涉及数据和训练好的模型,这些数据和模型也必须进行版本控制和验证。一个有效的 ML 项目 CI 流水线,例如涉及 Ultralytics YOLO 模型的流水线,包括以下附加步骤:
实际应用
- 自动驾驶开发: 一个致力于目标检测模型的团队,为自动驾驶汽车使用 CI 管道。当开发人员提交代码以提高模型在夜间检测行人的能力时,管道会自动触发。它运行单元测试,在测试数据集上重新训练 YOLO11 模型的轻量级版本,并评估其 mAP。如果准确性没有下降并且所有测试都通过,则批准合并更改。像 GitHub Actions 或 Jenkins 这样的常用 CI 工具通常用于自动化这些工作流程。
- 医学影像分析: 在为医学图像中的肿瘤检测而设计的系统中,数据科学家可能会添加新的增强数据以提高鲁棒性。CI 管道验证新的数据格式和分布。然后,它会使用预训练模型触发验证运行,以确保模型在“黄金数据集”上的预测保持一致,从而防止生产中出现意外行为。此过程有助于维持对医疗保健领域的人工智能应用至关重要的可靠性高标准。
持续集成与持续交付/部署 (CD)
虽然关系密切,但 CI 与持续交付和持续部署 (CD) 有所不同。
- 持续集成 (CI): 侧重于代码更改的频繁集成和自动化测试。 输出是为下一阶段准备就绪的已验证版本。 Ultralytics 使用 CI 在合并 所有 pull request 之前对其进行测试。
- 持续交付 (CD): 通过自动准备每个经过验证的更改以发布到暂存或生产环境来扩展 CI。但是,最终的 模型部署 到生产环境需要手动批准。 Atlassian 等来源的指南中详细介绍了这种方法。
- 持续部署 (CD): 通过自动将每个经过验证的更改直接部署到生产环境,而无需任何人工干预,从而更进一步。 这代表了软件发布生命周期中最高级别的自动化。
CI和CD实践共同构成了稳健的MLOps战略的基础,该战略旨在统一机器学习系统的开发和运营,从最初的实验到部署和持续的模型监控。