CI/CD for ML:当你的模型训练需要跑72小时,持续集成还靠谱吗?
那个跑了3天然后失败的CI Job 2026年4月,我们在GitHub Actions上配了一个ML CI流水线。流程很简单:代码push → 触发训练 → 评估模型 → 如果AUC提升则自动部署。 第一次运行,第72小时,由于OOM失败了。不是因为代码Bug,而是因为训练数据比上次大了20%。GitHub Actions的免费额度直接烧光。这是"传统CI/CD思维"在ML场景下的经典翻车。 金句:传统CI/CD是"代码编译+测试",ML CI/CD是"模型训练+评估"——前者几分钟,后者几小时到几天。 ML CI/CD的三个范式 范式一:流水线式(Pipeline CI/CD)。 适用于训练时间 < 1小时的小模型。CI直接执行训练+评估+部署。用自托管GPU Runner,不要用GitHub托管Runner。 范式二:触发式(Trigger-based CI/CD)。 适用于训练时间 > 1小时的大模型。CI只做代码检查和单元测试,训练由Kubeflow Pipelines或Airflow DAG触发。 范式三:事件驱动式(Event-driven CI/CD)。 适用于"数据更新 → 触发训练"的场景。当新数据到达S3时,自动触发训练Pipeline。使用AWS Lambda + Step Functions或Argo Events。 2026年ML CI/CD工具链推荐 代码CI:GitHub Actions / GitLab CI。Pipeline编排:Kubeflow Pipelines / Argo Workflows。模型注册:MLflow Model Registry。部署:ArgoCD / KServe。监控:Prometheus + Grafana。 ML CI/CD的独特挑战 挑战1:训练时间不可预测。 解决方案:用自托管Runner + 长时间超时 + checkpoint恢复。 挑战2:GPU资源昂贵。 解决方案:用Kubernetes GPU节点池 + 自动扩缩容,训练时拉起节点,训练后释放。 ...