文章目录
0. 前言
- 相关资料
- B站视频(字幕是自动生成的,但也差不多够用)
- 组建一支机器学习团队非常困难
- 一方面,组建任何技术团队都很困难。需要雇佣、管理员工,并提供上升通道,确保团队长期输出以及技术选择以及取舍,对领导层做好期望管理。
- 另一方面,机器学习团队又有一些其他复杂工作,比如顶尖人才少且很贵,团队指责非常多,项目有很多不确定性、时间不好把握,技术发展太快、难以把握,管理层往往不了解技术本身。
- 主要内容包括:
- 机器学习相关的岗位和需要具备的技能?
- 一个机器学习团队的人员构成是怎样的?不同级别的团队做的工作有什么不同呢?
- 怎样管理一个机器学习团队?
- 如何招聘机器学习工程师?怎样成功拿到offer?
1. Roles
- 现有的职位、工作内容、工作输出、常用工具如下
指责 | 工作内容 | 工作产出 | 常用工具 |
---|---|---|---|
产品经理 | 连接用户、业务以及算法团队,推进项目的进程 | 设计文档,工作计划,绘制架构图 | Jira |
开发测试工程师 | 开发、部署产品 | 部署产品 | AWS |
大数据工程师 | 构建、管理数据,如构建数据流水线、存储、监控等 | 分布式系统 | Hadoop/Kafka/Airflow |
算法工程师 | 训练、部署模型 | 实际业务场景(产品)中的预测系统 | Tensorflow/Docker |
算法研究员 | 训练模型(一般与不是产品级的模型) | 预测模型以及研究报告 | Tensorflow/PyTorch/Jupyter |
数据科学家 | 上述职位的总称 | 预测模型以及报告 | SQL/Excel/Jupyter/Pandas/SKLearn |
- 每个岗位需要的技能
- 横坐标是机器学习要求,纵坐标是工程能力要求,圈的大小代表沟通/文档能力
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) |
- 机器学习团队上有很多定位上的问题
- 需要投入多少精力到软件研发
- 数据由谁收集、清洗、管理等
- 模型由谁部署、维护
- 上面介绍的团队原型在各个关键问题中的定位
3. Managing
- 管理机器学习团队非常困难
- 很难判断一个任务的难度:本周有很大进展,不代表下周也能有类似的提升
- 机器学习项目不是线性的:
- 很有可能几周都没有任何进展(尝试了一些东西,都没用)
- 很难制定计划、确定时间线,因为也不知道哪些有用哪些没用
- 算法工程师与软件开发工程师之间有一些区别
- 不一样的背景、价值观(好的模型、好的代码)、目标
- 管理层不了解机器学习
- 如何更好的管理机器学习团队
- 设置机器学习项目时,按照概率来设置目标。
- 对一个问题需要尝试多种方法
- 根据输入来判断进展,而不是结果。
- 比如有很多种方法,要看看你尝试了多少种方法,每种方法的效果怎么样
- 让算法工程师和软件工程师一起工作
- 实现端到端系统,来看看效果如何
- 对管理层进行一些良好沟通,告诉他们机器学习工作进展是不确定的
- 如何设置概率来设置项目目标
- 下图中第二个子图,为了完成任务D,需要实现任务A,但A不一定能成功(50%概率成功),所以还要研究替代方案B和C
- 对不了解机器学习的管理者来说,有什么比较好的学习资料
4. Hiring
- 目前缺口很大,很缺人才。
- 一个错误的招人示例
- 正确的招人方法(算法工程师)
- 先要求软件技能,再要求机器学习能力,要求热爱学习。然后再培养
- 找新人,有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能力,研究员的代码能力
- 找工作