术语表

持续集成 (CI)

利用持续集成增强 AI/ML 工作流程。自动测试,提高代码质量,毫不费力地简化模型开发。

持续集成(Continuous Integration,CI)是一种软件开发实践,开发人员经常将代码变更合并到一个中央存储库中,然后运行自动构建和测试。CI 的主要目标是及早发现集成问题、提高代码质量并简化开发工作流程。在人工智能(AI)机器学习(ML)的背景下,CI 超出了传统的代码检查范围,还包括数据、模型和整体管道性能的验证,是机器学习运营(MLOps)的重要组成部分。

持续集成的关键原则

CI 流程建立在自动化和频繁迭代的基础之上。开发人员使用Git 等版本控制系统,向共享仓库推送少量、频繁的变更。每次推送都会触发一个自动化工作流或管道,执行几个关键步骤:

  • 自动构建:系统自动编译代码,确保正确集成。对于 ML 项目,这可能涉及使用Docker容器化工具设置环境。
  • 自动测试:运行一套测试来验证新的更改。这包括针对代码逻辑的单元测试、针对组件交互的集成测试,以及针对 ML 的专门测试,如数据验证和模型评估
  • 快速反馈回路:如果管道中的任何步骤出现故障,开发团队会立即得到通知。这样,他们就能在问题变得更加复杂并集成到主代码库之前,迅速解决问题。

机器学习 CI(CI4ML)

将 CI 应用于机器学习项目会带来独特的挑战。除了代码之外,ML 系统还涉及数据和训练有素的模型,而这些数据和模型也必须经过版本控制和验证。针对机器学习项目(如涉及Ultralytics YOLO模型的项目)的有效 CI 管道还包括其他步骤:

  • 数据验证:自动检查新数据的正确性、模式一致性和潜在的数据集偏差Great Expectations等工具可用于此目的。
  • 模型测试:运行测试,检查性能是否下降。这包括在标准化验证数据集上,将新模型的性能指标与基线版本进行比较。
  • 训练管道验证:确保模型训练过程本身具有可重复性和高效性。这可以通过Ultralytics HUB 等平台进行管理,该平台可以简化数据集管理和训练工作流程。

实际应用

  1. 自动驾驶开发:一个为自动驾驶汽车开发物体检测模型的团队使用了一个 CI 管道。当开发人员提交代码以提高模型在夜间检测行人的能力时,管道会自动触发。它会运行单元测试,在测试数据集上重新训练YOLO11模型的轻量级版本,并评估其mAP。如果准确率没有下降,且所有测试都通过,则批准合并变更。GitHub ActionsJenkins等流行的 CI 工具通常用于自动执行这些工作流程。
  2. 医学图像分析:在一个用于医学图像中肿瘤检测的系统中,数据科学家可能会添加新的增强数据,以提高鲁棒性。CI 管道会验证新的数据格式和分布。然后使用预先训练好的模型触发验证运行,以确保模型在 "黄金数据集 "上的预测结果保持一致,防止在生产中出现意外行为。这一流程有助于保持对医疗领域人工智能至关重要的高标准可靠性。

持续集成与持续交付/部署(CD)

虽然 CI 与持续交付和持续部署(CD)密切相关,但两者是不同的。

  • 持续集成(CI):侧重于代码变更的频繁集成和自动测试。其输出结果是经过验证的构建,可用于下一阶段。Ultralytics 使用 CI测试所有拉取请求,然后再进行合并。
  • 持续交付(CD):通过自动准备将每个经过验证的变更发布到暂存或生产环境来扩展 CI。不过,将最终模型部署到生产环境需要手动审批。这种方法在Atlassian 等提供的指南中有详细介绍。
  • 持续部署(CD):在此基础上更进一步,无需任何人工干预,自动将每一个经过验证的变更直接部署到生产中。这代表了软件发布生命周期的最高自动化水平。

CI 和 CD 实践共同构成了强大的MLOps战略的基础,该战略旨在统一机器学习系统的开发和运行,从最初的实验到部署和持续模型监控

加入 Ultralytics 社区

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

立即加入
链接复制到剪贴板