上个月我们组就栽了个跟头。A同事在feature/new-model分支折腾新算法,B同事在develop分支优化特征提取。合并时没留意,直接把A同事半成品模型参数覆盖了线上版本。等发现时已经晚了——新训练的根本达不到原有准确率,原始参数还找不回来了。整整三天,全组人都在折腾回滚。

吃够苦头后,我们终于把Git流程彻底规范化了。先说最核心的分支管理:

主分支master永远对应生产环境,develop分支用于日常开发。每个新特性必须开feature分支,实验性代码严禁直接push到主分支。这规矩立下后,混乱程度直接下降70%。

具体操作上,新项目刚起步时建议这么布局:

重点来了——data和models这些大文件千万别直接进Git!通过.gitignore屏蔽,然后用DVC或Git LFS管理。不然仓库瞬间爆炸。

特征工程实验最考验版本控制功底。我习惯每个特征实验单独开分支:

模型调参更要留痕。每次超参数调整都单独提交,commit信息按规范写:

关键时刻这能救命——有次调参效果倒退了,直接git log搜索"dropout",五分钟就定位到问题提交。

数据集版本管理是另一个重灾区。推荐用dvc跟踪数据文件:

这样数据文件传对象存储,Git只保留元信息。切换数据集版本就是一句话的事:

团队协作时,MR模板里我们强制要求填写实验记录:

本次修改对准确率的影响(+1.2%/-0.5%)

训练耗时变化

需要同步更新的文档

这些看似繁琐的规范,在模型部署时就知道多管用了。上周紧急修复线上bug,从创建修复分支到测试上线,只用了两小时——因为所有依赖都明确,不会踩坑。

最后分享几个实用技巧:

用git tag给重要模型打标签:git tag -a model-v1.2 -m "上线版本"

敏感配置单独放config文件,通过gitattributes过滤

定期git gc优化仓库,特别是有大量小文件时

现在我们的项目虽然每天十几个提交,但井然有序。新同事接手也能快速理清实验脉络。记住:好的版本控制不是负担,而是机器学习项目的保险绳。

更多推荐