CS194 Full Stack Deep Learning(4) Machine Learning Teams

文章目录

0. 前言

  • 相关资料
  • B站视频(字幕是自动生成的,但也差不多够用)
  • 组建一支机器学习团队非常困难
    • 一方面,组建任何技术团队都很困难。需要雇佣、管理员工,并提供上升通道,确保团队长期输出以及技术选择以及取舍,对领导层做好期望管理。
    • 另一方面,机器学习团队又有一些其他复杂工作,比如顶尖人才少且很贵,团队指责非常多,项目有很多不确定性、时间不好把握,技术发展太快、难以把握,管理层往往不了解技术本身。
  • 主要内容包括:
    • 机器学习相关的岗位和需要具备的技能?
    • 一个机器学习团队的人员构成是怎样的?不同级别的团队做的工作有什么不同呢?
    • 怎样管理一个机器学习团队?
    • 如何招聘机器学习工程师?怎样成功拿到offer?

1. Roles

  • 现有的职位、工作内容、工作输出、常用工具如下

CS194 Full Stack Deep Learning(4) Machine Learning Teams

指责 工作内容 工作产出 常用工具
产品经理 连接用户、业务以及算法团队,推进项目的进程 设计文档,工作计划,绘制架构图 Jira
开发测试工程师 开发、部署产品 部署产品 AWS
大数据工程师 构建、管理数据,如构建数据流水线、存储、监控等 分布式系统 Hadoop/Kafka/Airflow
算法工程师 训练、部署模型 实际业务场景(产品)中的预测系统 Tensorflow/Docker
算法研究员 训练模型(一般与不是产品级的模型) 预测模型以及研究报告 Tensorflow/PyTorch/Jupyter
数据科学家 上述职位的总称 预测模型以及报告 SQL/Excel/Jupyter/Pandas/SKLearn
  • 每个岗位需要的技能
    • 横坐标是机器学习要求,纵坐标是工程能力要求,圈的大小代表沟通/文档能力

CS194 Full Stack Deep Learning(4) Machine Learning Teams

2. Orgs

  • 上面提到了一个机器学习团队中有很多角色,本节的内容就是:整个团队如何协调工作。
  • 机器学习团队原型
类型 什么样 举例 优势 劣势
Nascent 没有机器学习相关职位,就算有也是临时性的工作,没有太多经验 大多数中小型公司,以及一些不是技术导向的大公司 一些简单的ML应用就能有较好的回报 对ML支持不够,很难招人、留人
ML R&D 机器学习主要在研发部分,一般招人根据内部数据写材料,作为内部参考或发论文 大型石油、制造业、电信企业 喜欢招有经验的研究人员,可以做一些长期研究 大多数这样的部分都失败了,主要原因是数据很难获取,投资少,很难获得很好的商业价值
产品/业务中的ML ML是某几个业务线内的,ML工程师直接向工程团队主管汇报 软件公司、金融企业 算法提升能够直接业务价值,有很好、很快的反馈 很难招*人才,也很难提高算法能力,算法项目周期与软件项目周期很难匹配,从长期看很难真正体现、证明ML的价值
有独立的ML单元 ML部分直接向管理层汇报,ML产品经理与ML工程师一起工作,有长期研究计划 大型金融服务公司 容易雇佣、培养人才,容易获取数据以及计算资源,可以花时间研究ML相关工具、实践等 模型切换到商用比较困难,可能需要让模型用户进行一些培训,反馈可能比较慢
ML-First Organizations 管理层认可自身是AI公司,ML部分研究有挑战性、长期的项目,在所有业务线都有ML相关 *科技公司,以及一些AI初创公司 数据获取方便,ML团队在研究最有挑战性的问题,最容易将成果转换 功能很难实现,很难招到人,很贵,也很难创造这样一种环境(所有人都有 ML Thinking)
  • 机器学习团队上有很多定位上的问题
    • 需要投入多少精力到软件研发
    • 数据由谁收集、清洗、管理等
    • 模型由谁部署、维护

CS194 Full Stack Deep Learning(4) Machine Learning Teams

  • 上面介绍的团队原型在各个关键问题中的定位

CS194 Full Stack Deep Learning(4) Machine Learning Teams

3. Managing

  • 管理机器学习团队非常困难
    • 很难判断一个任务的难度:本周有很大进展,不代表下周也能有类似的提升
    • 机器学习项目不是线性的:
      • 很有可能几周都没有任何进展(尝试了一些东西,都没用)
      • 很难制定计划、确定时间线,因为也不知道哪些有用哪些没用
    • 算法工程师与软件开发工程师之间有一些区别
      • 不一样的背景、价值观(好的模型、好的代码)、目标
    • 管理层不了解机器学习
  • 如何更好的管理机器学习团队
    • 设置机器学习项目时,按照概率来设置目标。
    • 对一个问题需要尝试多种方法
    • 根据输入来判断进展,而不是结果。
      • 比如有很多种方法,要看看你尝试了多少种方法,每种方法的效果怎么样
    • 让算法工程师和软件工程师一起工作
    • 实现端到端系统,来看看效果如何
    • 对管理层进行一些良好沟通,告诉他们机器学习工作进展是不确定的
  • 如何设置概率来设置项目目标
    • 下图中第二个子图,为了完成任务D,需要实现任务A,但A不一定能成功(50%概率成功),所以还要研究替代方案B和C

CS194 Full Stack Deep Learning(4) Machine Learning Teams

4. Hiring

  • 目前缺口很大,很缺人才。
  • 一个错误的招人示例

CS194 Full Stack Deep Learning(4) Machine Learning Teams

  • 正确的招人方法(算法工程师)
    • 先要求软件技能,再要求机器学习能力,要求热爱学习。然后再培养
    • 找新人,有ML经验的CS本科生。
    • 对需求更加具体一些,不是所有算法工程师都需要研发技能。
  • 正确的招人方法(算法研究员)
    • 有价值的论文
    • 不知道该怎么翻译,Look for researchers with an eye for working on important problems (many researchers focus on trendy problems without considering why they matter)
    • 招有工业经验的
    • 考虑招其他专业的优秀人才
  • 如何招人
    • 有优点,其他方面满足基本要求即可
    • 要面试什么内容
      • 满足职位的基本要求
      • 其他方面满足基本要求,如软件工程师的ML能力,研究员的代码能力
  • 找工作

CS194 Full Stack Deep Learning(4) Machine Learning Teams

CS194 Full Stack Deep Learning(4) Machine Learning Teams

上一篇:进程的同步与互斥之生产者消费者问题:对信号量设置的理解及PV操作顺序分析


下一篇:.net 又开始水版本了.net 6 也不咋地.