整体研发流程
- 接受需求
- 需求分析和相关类似项目的方案调研
- 判断开发的必要性
- 明确输入和输出
- 确定评价指标和评价方法
- 取数,并进行数据的基本统计分析
- 数据的清洗和筛选
- 数据标注
- 有标签的评估标签的质量,随机取50-100条进行评估。【重要】
- 无标签标注
- 使用开源接口进行相关数据标注
- 看是否能总结基本的规则,使用规则标注
- 看是否有类似的开源数据集,或先小部分标注数据进行初步训练,然后用训练模型进行初步标注。
- 最后才使用人工标注。
- 应用算法与优化策略
- 策略效果评估,判断是否符合预期,否则重新进行9
- 开发服务接口,进行代码review,上线对接,构建相关的监测和例行维护。
细节
需求想法
- jira上同步提出需求和想法,构建对应jira号的钉钉群,关联后续的算法服务接口的提交分支。
- 后续对应的算法任务优化继续复用第一步的jira和讨论群。保证一个识别能力同时只做一个优化点。
正常的迭代【保证一切都有迹可循,不需艰难考古】
- 按月作为迭代周期
- 需求规划月:
- 产品进行新项目开发或者客户需求的调研,确定功能的规划、基本的需求分析,明确开发同学需要解决的问题。
- 召集开发同学进行需求评审,确认可行性和开发目标。
- 开发月:
- 周:
- 取数,确定取数的范围,是否需要按时间或其他指标进行排序,以及取数的量级。明确测试集。
- 明确需要达到的评价指标如精度和召回,作为量化标准。
- 理清相关的标签体系,如需标注需要产品和算法同事共同标注,并将落实的标签体系同步到wiki或钉钉文档。
- 周:
- 算法:识别能力开发
- 标注:更大范围的标注【可选】
- 周:算法:
- 输出对应标签的识别质量评估报告。优先保证精度。
- 进行压测、qps、内存占用、相关资源的下载成功率、下载时间等基本分析。
- 进行服务接口的开发。
- 周:
- 上线:不选周末或节假日前上线,上线后进行大范围数据【全量数据重跑】识别输出。
- 如有严重性能和成本的限制,优化识别代码或模型复杂度。
- 周:
- 上线月:
- 相关服务上线并例行运行,评估使用情况,可以用sql构建对应的监控面板。
- 根据情况进行定期每月小批量数据的质量评估报告。
- 处理badcases,并进行记录【这部分可直接修改数据表,将修改过的数据的部分字段进行更改,便于后续取数用于服务的迭代优化】。
- 相关项目代码进行整理并提交,保证后续人员可复现。
- 需求规划月:
人员工作
-
同时处理的算法需求每人不超两个,至少有一个是处于例行的优化工作。(避免单任务卡依赖,如等标注数据、没有思路可以换方向调剂下)