核心要点

  • ML 的 CI 不止跑 lint/单测,还要验证数据 schema 与分布、并对模型指标做回归测试

  • CD 应从模型注册表拉 artifact 自动部署,杜绝手工拷贝 checkpoint 上线

  • CT(持续训练)是 ML 独有:由新数据到达或漂移告警触发重训,而非代码提交

  • 质量门禁是核心——指标不达 baseline 或公平性不过就阻断,劣质模型进不了生产

标准回答

传统 CI/CD 针对代码;ML CI/CD 扩展为:

CI(Continuous Integration)

  • 代码:lint、单元测试、特征 transform 测试
  • 数据:schema 验证、分布快照对比
  • 模型:小数据集 smoke training、metric 回归测试(不低于 baseline)

CD(Continuous Delivery/Deployment)

  • 评估通过 → 构建推理镜像 → Staging → 金丝雀 → Production
  • 模型 artifact 从 Registry 拉取,非手工拷贝

CT(Continuous Training)——ML 特有:

  • 新数据到达或漂移告警 → 自动触发训练 pipeline
  • 新模型 beat 旧模型 → 自动进入 CD 流程

典型 GitHub Actions / GitLab CI 阶段
lint → data-test → train → evaluate → register → deploy-staging → integration-test → promote

关键:质量门禁(metric 阈值、公平性)阻断劣质模型上线。详见 MLOps 入门CI/CD 实践

常见误区

⚠️ 常见踩坑

CI 只跑 pylint 不验证数据/模型;无门禁自动部署最新 checkpoint;混淆 CI 与夜间 batch 训练。

追问

追问 1ML 流水线 CI 跑全量训练是否可行?

通常不在 CI 里跑全量训练——耗时数小时到数天、占用昂贵 GPU,会拖垮反馈速度。CI 用小样本做 smoke training 验证代码能跑通、形状/损失正常;全量训练交给独立的训练流水线(CT)异步执行,再由门禁决定是否晋级。

追问 2如何测试机器学习代码?

分层测试:单元测试覆盖数据转换、特征工程等确定性函数;用小数据集做 smoke training 验证训练循环不崩;对模型做行为/指标回归测试(关键指标不低于 baseline、不变性测试如同义改写预测应稳定);再加数据校验测试(schema、空值率、分布)。

追问 3蓝绿部署 vs 金丝雀在 ML 中?

蓝绿:流量一键切换,回滚快;金丝雀:5%→50%→100% 逐步验证线上 metric,适合观察模型真实业务影响。常结合 shadow(新模型只记录不返回)。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。