算法工程师的AI项目流程


选择任务

1. 技术的成熟度

1.1 底线:人工能否解决问题

如果人工都不能解决,直接放弃。

1.2. 大厂当前的水平

不能以paper中的结论作为目标。

1.3 初期通过小demo测试准确率

准确率受数据影响很大。

1.4 团队的时间和能力

项目进度受团队的能力影响很大。

1.5 项目部署

例如:没有GPU;AMD没法布置TensorFlow或pytorch。

1.6 保守估计的交付时间

交付时间总是过于乐观

2. 需求的可控程度

客户的可变性

2.1 销售导向 OR 技术导向

销售导向的劣势:消耗技术成本,影响公司运营;技术人员无法提升(耗在扯皮上)。

2.2 客户管理能力

项目经理是否有意愿、能力控制客户的需求。

2.3 团队整体的需求控制能力

技术leader是否有担当。

3. 投入周期和成本

3.1 容易被低估
3.2 主要来自于需求的变更
3.3 其他问题
  • 标注的不可控
  • 模型调优的时间
  • 推断速度提升所需的时间
  • 环境部署所需要的时间
  • 算力成本

4. 最终交付流程

4.1明确项目目标
4.2 交付过程中的额外投入
4.3 交付的流水化能力
  • 明确的流程
  • 职责安排清晰
  • 时间规范严格遵循
  • 是否有烂尾风险

前期调研

容易被忽略的问题:

  • 学术结果常常难以复现
  • 数据的质量决定了模型的质量(需要有数据研发的能力)
  • 方法的成功取决于细节(细节只有做过的人才知道)
  • 模型的运行实效比方法的效果更重要(实际在客户部署后的效果)
  • 项目整体难度往往被低估

开发计划

数据标注

  • 前期要制定充分的标注规则(傻子也能看懂的文档)
  • 数据采集要有代表性(针对应用场景)
  • 非常不建议自动标注(通过关键词自动标注,数据分布会漂移)
  • 训练一个初步模型,只让相关人员校对,可以保证标注效率并减少成本。

算法开发

  • 千万不要采用规则的方式开发(规则会越来越多越混乱,尽量放到最后)(尽量规则写成配置的形式;可以用XGBOOST)
  • 初期就要引导客户使用和购买能够支持DL框架的硬件(涉及预算申请)
  • 算法开发的过程中,需要有量化指标并记录。(记录方案、使用什么数据测试,不然永远无法优化)
  • 开发过程中,多分解问题(遇到问题时,引导去关注整体而非局部的问题)(做的不好的地方要扩充。关注简单的问题的准确率,难的问题业界领先也做不了。)
  • 前端对接中,一定要引导何为“智能”

结果验证

效果优化

  • 时间和成本
  • 可以引导客户的评估标准
  • 一定要从数据角度出发进行优化(而不是算法)
  • 学会止损(提早和前端说)
  • 除了准确性的优化,还有代码运行效率的优化
  • 算法开发和效果优化是需要反复进行的工作(做持久战的准备)

部署

  • 提前了解客户系统,告知风险
  • 再小的项目也建议使用微服务架构(Docker不稳定,需要kubernetes)
  • 算法部署在云端(环境控制、投入都更好。先在云端做demo,测试)

你可能感兴趣的:(算法工程师的AI项目流程)