项目流程
AI项目流程
- 如何判断是否要做一个 AI 项目
- 如何做前期的调研
- 如何做开发的计划
- 如何对结果进行验证
- 如何进行部署
如何判断是否要做一个 AI 项目
- 技术的成熟度
- 需求的可控程度
- 项目投入的周期和成本
- 项目最终的交付流程
技术的成熟度
- 底线:人工是否可以解决这个问题
- Paper 中技术的复现性 VS 领先厂商当前的水平
- 初期通过小 Demo 测试准确率
- 团队的时间和能力
- 项目部署问题
- 保守估计项目的交付时间
需求的可控程度
- 销售导向 OR 技术导向
- 客户管理能力
- 团队整体的需求控制能力
项目投入的周期和成本
- 大多数时候,人们会低估项目投入的周期和成本。
- 项目周期和成本不可控的原因主要来源于需求的变更。
- 其他可能出现的问题:
- 标注的不可控性
- 模型效果调优所需要的时间
- 推断速度提升所需要的时间
- 环境部署所需要的时间
- 运行模型所需要的算力成本
项目最终的交付流程
- 明确项目目标
- 不要忽略交付流程中的额外投入
- 组织的项目交付的流水化能力:
- 是否有明确的交付流程
- 人员职责安排是否清晰
- 是否严格遵循时间规范
- 项目是否有烂尾的风险
项目的一般流程
- 前期调研和方案确定
- 数据标注和开发
- 效果调优(包括准确性和速度)
- 代码部署
前期调研和方案确定
容易被忽略的问题:
- 很多时候,学术结果难以复现。
- 很多方法在某些数据上可能会非常好用,但是在另一些数据上则会失效。
- 很多方法的成功取决于一些细节,而这些细节只有真正做过的人才会知道。
- 很多时候人们会过于关注方法的效果,而忽略了整体的运行实效。
- 在绝大多数的时候,人们都会低估整个项目的难度。
数据标注
我的建议:
- 前期一定要制定充分的标注规则
- 数据的采集一定要具有代表性
- 非常不建议采用自动标注的方式
- 先训练一个初步模型,然后只让相关人员进行校对,可以保证标注效率并减少标注成本
算法开发
我的建议:
- 千万不要采用规则的方式进行开发
- 初期就要引导客户使用和购买能够支持深度学习框架的硬件
- 算法开发的过程中,一定要有量化的指标并记录下来
- 开发的过程中,多分解问题
- 前端对接的时候一定要去引导何为“智能”
效果优化
我的建议:
- 初期要充分考虑到效果优化所需要的时间和成本
- 客户并不知道通过什么标准来评估一个系统的好坏
- 一定要从数据的角度出发进行优化
- 学会止损
- 出了准确性的优化,还要注重代码运算效率的优化
- 算法开发和效果优化常常是需要反复进行的工作
算法部署
我的建议:
- 如果客户的系统比较奇怪,或者难以满足一些要求,要提前让客户知晓这些风险。
- 即使再小的项目,我也强烈建议用微服务架构进行部署。
- 不要把算法部署在本地,尽量采用云端部署。