机器学习和数据分析项目_工程化流程
对比
机器学习系统
传统的软件工程项目有着非常大的差异
传统的软件工程项目
产品经理-开发(前端和后端)-测试-运维
包含通用软件工程里那些单元测试,发布流程等内容
数据项目
数据管理的难度-数据变更,数据是描述事物的,事物发生变化
数据需求方--数据开发方-数据运维方-数据使用方
数值稳定性
依赖变更推送--
AI项目
ML和数据系统具有强耦合
多了数据依赖问题
天然的交互式、实验性开发方式
机器学习pipeline一般会包括
训练数据的收集,特征生成,模型训练,模型验证,部署和服务发布等环节
数据和算法工程项目
良好的工程实践
进行系统抽象
从总体上把控代码模块结构,才能更好的平衡实验的灵活性与系统开发效率,保证整体的高效运作
精心设计配置项
把数据清洗、特征工程、模型训练等模块
特征工程
特征工程代码写相应的测试
模型:
模型说明记录
模型超参数
模型优化指标
模型时效性
模型测试流程: 基准测试比较, 多版本模型效果推演,不同数据上的表现,模型的包容性测试
模型的快速复现:
机器学习pipeline的集成测试
模型发布和部署:
灰度发布的方式
模型能够快速回滚-回滚演练
模型性能相关监控
短时间内明显的指标急剧下降外,同时也要关注长期的缓慢的下降
参考
The ML Test Score
Hidden Technical Debt in Machine Learning Systems