组建机器学习团队

机器学习项目需要由具备机器学习相关技能、专业知识和职责的团队成员组成。以下是典型机器学习团队中常见的角色:

角色 知识和技能 主要交付成果
机器学习产品经理 机器学习产品经理对机器学习的优势和劣势以及机器学习开发流程有深入的了解。他们会直接与机器学习团队、最终用户和其他利益相关方合作,将业务问题与机器学习解决方案相结合。他们负责制定产品愿景、定义用例和要求,以及规划和确定项目优先级。 产品要求文档 (PRD)。
工程经理 工程经理通过设定、传达和实现团队优先事项来实现业务目标。与机器学习产品经理一样,他们负责将机器学习解决方案与业务问题相结合。 他们会为团队成员设定明确的期望,开展绩效评估,并协助团队成员实现职业和专业发展。 设计文档、项目计划和效果评估。
数据科学家 数据科学家使用定量和统计分析从数据中提取洞见和价值。它们有助于识别和测试特征、构建模型原型,并有助于提高模型的可解释性。 报告和数据可视化图表,可通过统计分析回答业务问题。
机器学习工程师 机器学习工程师负责设计、构建、部署到生产环境和管理机器学习模型。 他们是出色的软件工程师,对机器学习技术和最佳实践有深入的了解。 部署的模型具有足够的预测质量,可满足业务目标。
数据工程师 数据工程师负责构建数据流水线,以存储、汇总和处理大量数据。他们开发基础架构和系统,用于收集原始数据并将其转换为有用的格式,以便进行模型训练和服务。数据工程师负责整个机器学习开发流程中的数据。 已全面投入生产的数据流水线,并配备必要的监控和提醒功能。
开发者运维 (DevOps) 工程师 DevOps 工程师负责开发、部署、扩缩和监控机器学习模型的服务基础架构。 一种自动化流程,用于提供、监控、测试和提醒模型行为。

成功的机器学习项目的团队中,每个角色都有充分的代表。在较小的团队中,个人需要承担多个角色的职责。

建立团队做法

由于机器学习开发中的角色、工具和框架差异很大,因此通过出色的流程文档制定通用做法至关重要。例如,某位工程师可能认为,只需获取正确的数据即可开始训练模型,而更负责任的工程师会验证数据集是否已正确匿名化,并记录其元数据和来源。确保工程师共享流程和设计模式的通用定义,有助于减少混淆并提高团队的开发速度。

流程文档

流程文档应定义团队将用于机器学习开发的工具、基础架构和流程。优质的流程文档有助于新团队成员和现有团队成员达成共识。它们应回答以下类型的问题:

  • 如何为模型生成数据?
  • 我们如何检查、验证和直观呈现数据?
  • 如何修改训练数据中的输入特征或标签?
  • 如何自定义数据生成、训练和评估流水线?
  • 如何更改模型架构以适应输入特征或标签的变化?
  • 如何获取测试示例?
  • 我们将使用哪些指标来评判模型质量?
  • 如何在生产环境中发布模型?
  • 如何判断模型是否有问题?
  • 我们的模型依赖于哪些上游系统?
  • 如何使 SQL 可维护且可重复使用?

更多潜在问题

型号
  • 我可以在同一流水线中使用不同的数据集训练模型吗?例如,进行微调?

  • 如何向我的流水线添加新的测试数据集?

培训
  • 如何检查模型对手动创建的示例的预测结果?

  • 如何查找、检查和直观呈现模型出错的示例?

  • 如何确定给定预测结果中哪个特征的贡献最大?

  • 如何了解在给定样本中哪些特征对预测有最大影响?

  • 如何计算或绘制选定数据集或样本的模型预测结果?

  • 如何计算模型针对所选数据集的预测的标准指标?

  • 如何开发和计算自定义指标?

  • 如何离线将我的模型与其他模型进行比较?

  • 我可以在单个开发环境中对多个模型评估执行元分析吗?

  • 我可以将当前模型与 10 个月前的模型进行比较吗?

正式版发布、监控和维护
  • 我认为自己创建了一个不错的模型。如何在正式版中发布?

  • 如何验证新模型是否在生产环境中正常运行?

  • 我可以获取一段时间内模型评估的历史记录吗?

  • 如何知道模型出现问题?

  • 我被分配了一个页面/bug,其中提到了该模型。 我该怎么做?

流水线
  • 如何自定义数据生成/训练/评估流水线?

  • 我应该在什么时候以及如何创建全新的流水线?

SQL
  • 我需要使用 SQL 生成一些数据。我该把它放在哪里?

基础架构
  • 我们的模型投放机制是如何运作的?有图表吗?

  • 我应该了解我的模型依赖于哪些上游系统?

通信
  • 我无法解决问题。我应该与谁联系(以及如何联系)?

注意事项

不同公司、团队和个人对“机器学习最佳实践”的定义可能有所不同。例如,有些团队成员可能会将实验性 Colab 作为主要交付成果,而其他成员则希望使用 R 进行工作。有些人可能热衷于软件工程,有些人认为监控是最重要的事项,还有些人知道良好的功能生产化实践,但想使用 Scala。从各自的角度来看,每个人都是“正确的”,如果能正确引导,这种组合将会发挥强大作用。否则,可能会出现混乱。

在编写一行代码之前建立团队将使用的工具、流程和基础架构,这可能会决定项目是两年后失败,还是提前一个季度成功发布。

效果评估

由于机器学习固有的模糊性和不确定性,人力资源经理需要尽早设定明确的期望并确定交付成果。

确定预期和交付成果时,请考虑如果项目或方法不成功,将如何评估它们。换句话说,团队成员的表现与项目的成败没有直接关系,这一点非常重要。例如,团队成员花费数周时间研究最终未能成功的解决方案的情况并不少见。即使在这些情况下,他们优质的代码、详实的文档和有效的协作应该也会对他们的评估产生积极影响。

检查您的理解情况

创建出色的流程文档并建立通用做法的主要原因是什么?
提高项目速度。
正确。编写良好的流程文档并建立常见做法有助于减少混淆并简化开发流程。
在整个公司范围内建立最佳实践。
由于机器学习开发因项目而异,因此团队通常会制定自己的一套最佳实践,以便高效工作并提高速度。
确保团队中的所有工程师都拥有相同的专业水平。
机器学习团队通常由拥有各种技能和知识的工程师组成。流程文档有助于工程师遵循最佳实践,从而加快工作速度。