介绍对于一个企业来说,如何从0到1搭建一个机器学习团队,是很多企业非常头疼的问题。本文给出了一些求职建议,对于读者来说,也具有参考价值。在过去的几年中,机器学习取得了巨大的发展。但是,尽管机器学习是一门学科,但管理机器学习团队的技巧却更为年轻。如今,许多机器学习经理被迫担任管理职位,要么是出于必要,要么是因为他们是最好的个人贡献者,而且许多人来自纯学术背景。在一些公司中,工程师或产品所有者的任务是在没有任何实际机器学习经验的情况下构建新的机器学习功能。管理任何技术团队都很困难:你必须聘请优秀的人才。您需要管理和开发它们。您需要管理团队的输出并确保方向一致。您需要做出良好的长期技术选择并管理技术债务。您还必须管理来自领导层的期望。管理机器学习团队更加困难:机器学习人才昂贵且稀缺。机器学习小组有不同的角色。机器学习项目时间表不明确,不确定性很高。机器学习也是“技术债务的高息信用卡”。领导者通常不了解机器学习。我最近参加了加州大学伯克利分校的“全栈深度学习训练营”,这是一门教授全栈生产深度学习的优秀课程。JoshTobin的演讲为机器学习团队提供了最佳实践。作为Josh讲座的一部分,这篇文章将给你一些见解,如果你是管理者,如何思考建立和管理机器学习团队,如果你是求职者,这篇文章也可能对你在机器学习领域有所帮助学习找工作。第1步:定义角色让我们来看看最常见的机器学习角色及其所需技能:机器学习产品经理与机器学习团队合作,为其他业务和最终用户提供功能。此人设计文档、创建线框并制定计划来确定和执行机器学习项目的优先级。DevOps工程师负责部署和监控生产系统。此人负责运行已部署的机器学习产品的基础设施。数据工程师是构建数据管道、从数据存储聚合和收集数据、监控数据行为的人……这个人使用像Hadoop、Kafka和Airflow这样的分布式系统。机器学习工程师是训练和部署预测模型的人。此人使用TensorFlow和Docker等工具来处理在生产中基于真实数据运行的预测系统。机器学习研究人员是训练预测模型的人,但通常是前瞻性的或非生产关键的。此人使用TensorFlow、PyTorch、Jupiter构建模型和报告来描述他们的实验。数据科学家实际上是一个总称,用于描述上述所有角色。在一些公司中,这个角色实际上需要通过分析来回答业务问题。那么这些角色需要什么技能呢?上图展示了一个很好的视觉效果,横轴是机器学习的专业水平,气泡的大小是沟通和技术写作的水平(越大越好)。机器学习DevOps主要是软件工程角色,它通常来自标准软件工程管道。数据工程师属于与机器学习团队积极协作的软件工程团队。机器学习工程师需要机器学习和软件工程技能的罕见组合。这个人要么是自学成才的工程师,要么是在研究生毕业后担任传统软件工程师的科学/工程博士。机器学习研究员是机器学习专家,他们通常拥有计算机科学或统计学硕士或博士学位,或者已完成行业奖学金计划。机器学习产品经理和传统产品经理一样,但对机器学习的发展过程和思维方式有着深刻的理解。数据科学家角色包括广泛的背景,从本科生到博士生。第2步:建立团队对于建立机器学习团队的正确方法并没有达成共识,但是有一些最佳实践因公司原型及其机器学习成熟度水平而异。首先,让我们看看不同的机器学习公司原型是什么。原型1:初创公司和专业机器学习这些公司中没有人在进行机器学习,或者机器学习是临时进行的。显然,内部几乎没有机器学习专业知识。这些企业要么是中小企业,要么是技术含量不高的教育、物流等行业的大公司。机器学习往往是唾手可得的成果。但机器学习项目得不到支持,因此很难聘用和留住顶尖人才。原型二:研发机器学习这些公司的机器学习工作都集中在公司的研发部门,他们经常聘请机器学习研究人员和有出版经验的博士生。这些是石油和天然气、制造或电信等行业的较大公司。他们可以聘请经验丰富的研究人员,并致力于长期的业务重点以获得重大胜利。然而,高质量的数据很难获得,而且通常这种研究努力很少能转化为实际的商业价值,因此投资通常很小。原型3:嵌入产品的机器学习在这些公司中,某些产品团队或业务部门除了软件或分析人才外还拥有机器学习专业知识。这些机器学习人员向团队的工程/技术负责人报告。这些公司要么是软件公司,要么是金融服务公司。机器学习的改进可能具有商业价值,并且在创意迭代和产品改进之间存在紧密的反馈周期。不幸的是,招募和培养顶尖人才仍然非常困难,而且对数据和计算资源的访问可能会滞后。机器学习项目周期和工程管理之间也存在潜在的冲突,因此长期的机器学习项目可能难以自圆其说。原型4:独立的机器学习部门这些公司的机器学习部门直接向高层领导报告。机器学习产品经理与研究人员和工程师合作,将机器学习构建到面向客户的产品中。他们有时可以发表长期研究。这些公司通常是大型金融服务公司。人才密度使他们能够聘请和培训顶尖的从业者。高层领导可以组织数据和计算资源。这使公司能够投资于机器学习开发的工具、实践和文化。缺点是将模型移交给不同的业务线可能具有挑战性,因为用户需要购买机器学习的好处并接受模型使用方面的培训。此外,反馈周期可能很慢。原型5:机器学习优先在这些公司中,CEO投资于机器学习,而整个行业都有专注于快速成功的专家。机器学习部门致力于具有挑战性的长期项目。这个群体包括大型科技公司以及专注于机器学习的初创公司。他们拥有最好的数据访问权限(数据思维渗透到公司中)、最有吸引力的招聘渠道(具有挑战性的机器学习问题往往会吸引顶尖人才)、最简单的部署过程(产品团队有足够的机器学习学习经验)。这种类型的企业原型很难在实践中实施,因为在文化上很难将机器学习思想无处不在。根据您的公司与上述原型的相似程度,您可以做出适当的设计选择,大致可分为三类:软件工程师与研究人员:机器学习团队在多大程度上负责构建或集成软件?软件工程技能对团队很重要它有多重要?数据所有权:机器学习团队对数据收集、仓储、标签和管道有多少控制权?模型所有权:机器学习团队是否负责将模型部署到生产环境中?谁维护已部署的模型?这是设计建议……如果您的公司专注于机器学习研发:研究绝对优先于软件工程技能。因此,这两个小组之间可能缺乏协作。机器学习团队无法控制数据,通常也没有数据工程师来支持他们。机器学习模型很少投入生产。如果您的公司已经将机器学习嵌入到产品中:软件工程技能将优先于研究技能。通常,研究人员需要强大的工程技能,因为每个人都需要制作他/她的模型。机器学习团队一般没有自己的数据生产和数据管理。他们需要与数据工程师一起构建数据管道。机器学习工程师完全拥有他们部署到生产环境中的模型。如果你有一个单独的机器学习部门:每个小组都有很强的工程和研究技能,所以他们在团队中紧密合作。机器学习团队在数据治理讨论中有发言权,具有强大的数据工程功能。机器学习团队不干涉用户的模型,但仍然负责维护它们。如果你的公司首先是机器学习:不同的团队或多或少都以研究为导向,但一般来说,研究团队与工程团队密切合作。机器学习团队通常拥有公司范围内的数据基础设施。机器学习团队将模型交给用户,由用户进行操作和维护。下图很好地总结了这些建议:3.管理项目管理机器学习项目可能非常具有挑战性:根据LukasBiewald的文章,即使在一个领域内,性能也可能有很大差异。机器学习是非线性的。项目停滞数周或更长时间的情况并不少见。在早期阶段,很难规划一个项目,因为不清楚什么会奏效。因此,估计机器学习项目的时间表非常困难。由于不同的价值观、背景、目标和规范,研究和工程之间存在文化差异。在不相容的文化中,双方往往都不重视对方。很多时候,领导层就是不明白这一点。那么,您如何更好地管理您的机器学习团队?秘诀在于概率性地规划机器学习项目!从本质上讲,从这里开始:到其他一些好的方法:您应该尝试多种方法。你应该通过输入而不是结果来衡量进展。你应该让研究人员与工程师一起工作。您应该尽快连接端到端管道以证明快速获胜。您应该让领导者了解机器学习时间表的不确定性。4.人才招聘据ElementAI发布的《2019年全球人工智能人才报告》,有充分证据表明顶级AI人才供不应求。在人工智能研究的前沿,约有22,000人积极发表论文并在学术会议上发言。只有大约4,000人参与了对整个领域产生重大影响的研究。总共有36,500人声称自己是AI专家。相比之下,美国的软件开发人员数量为420万,全球为2640万。(1)如何寻找机器学习人才?以下是招聘机器学习工程师的一些策略:雇用具有软件工程技能、对机器学习有浓厚兴趣并渴望学习的人。然后你可以训练他们进行机器学习。考虑到如今大多数本科计算机科学专业的毕业生都有机器学习方面的经验,请选择入门级职位。清楚你需要什么。例如,并不是每个机器学习工程师都需要做DevOps。以下是招聘机器学习研究人员的策略:关注已发表文章的质量,而不是数量(例如,想法、执行质量)。寻找着眼于大问题的研究人员。许多研究人员只关注流行病问题而没有考虑其重要性。寻找具有学术界以外经验的研究人员。考虑在数学、物理和统计学等相邻领域招聘。考虑雇用没有博士学位的人。例如,才华横溢的本科生和硕士生、行业奖学金计划(谷歌、Facebook、OpenAI)的毕业生,甚至是专注的自学者。你如何找到这些候选人?有标准的信息来源,例如LinkedIn,通过招聘机构和参观大学招聘会。你应该参加著名机器学习研究会议(NeurIPS、ICLR、ICML)的机器学习研究人员和著名应用机器学习会议(O'Reilly、ReWork、TensorFlowWorld)的机器学习工程师。您可以关注ArXiv以获得令人印象深刻的研究论文并联系主要作者。对于长期战略,您需要考虑如何吸引这些候选人并使您的公司脱颖而出:由于机器学习从业者希望使用最先进的工具和技术,您的公司应该从事研究型项目,关于它们的博客,并为您的机器学习团队投资工具和基础设施。由于机器学习从业者希望在一个令人兴奋的领域积累技能和知识,您的公司应该围绕学习建立团队文化(即阅读小组、学习日、专业发展预算、会议预算)。由于机器学习从业者希望与优秀的人一起工作,因此您的公司应该聘请知名人士,或者通过发布博客和论文来帮助您的最佳人才建立个人资料。由于机器学习从业者希望使用有趣的数据集,因此您的公司应该在招聘材料中使您的数据集独一无二。由于机器学习从业者想要做重要的工作,您的公司应该推销您公司的使命以及机器学习对该使命的潜在影响。更重要的是,您应该从事对今天有实际影响的项目。(2)如何面试机器学习候选人?那么,在机器学习面试中你应该问什么?第一件事是验证你对候选人优势的假设。对于机器学习研究人员,确保他们能够创造性地思考新的机器学习问题,并探索他们对以前项目的思考程度。对于机器学习工程师,确保他们是具有扎实工程技能的多面手。第二件事是确保候选人在薄弱领域达到最低标准。对于机器学习研究人员,测试他们的工程知识和编写良好代码的能力。对于机器学习工程师,测试他们简单的机器学习知识。机器学习面试的定义比传统的软件工程面试要模糊得多,但以下是常见的评估类型:背景和文化契合度白板编程结对编程/调试(通常是ML特定代码)howtousemachinelearningtosolveproblems)Previousprojects(methods,trialanderror,results)机器学习理论(例如bias-variancetradeoffs,overfittingandunderfitting,specificalgorithms...)(3)Howtofindajobinmachine学习?假设您是一名机器学习候选人并且正在阅读本文。你可能会问:“我怎样才能找到一份机器学习工作?”同样,还有标准资源,例如LinkedIn、招聘人员、校园招聘人员。你可以去机器学习研究会议并与那里的人交谈。您也可以直接向公司的门户网站申请(请记住存在人才缺口!)找工作当然不容易,但有几种方法可以脱颖而出:建立通用软件工程技能(通过CS课程和/或工作经验).表现出对机器学习的兴趣(通过参加会议和/或参与MOOC)。证明您对机器学习有广泛的了解(例如,写一篇综合研究领域的博文)。展示完成机器学习项目的能力(例如,创建小型项目和/或复制论文)。证明您可以创造性地思考机器学习(例如,赢得Kaggle竞赛和/或发表论文)。要准备面试,您应该:使用网络资源进行一般软件工程面试练习。准备好详细谈论你过去的项目,包括你所做的权衡和决定。复习机器学习理论和基本机器学习算法。创造性地思考如何使用机器学习来解决面试公司可能面临的问题。也推荐大家看看ChipHuyen在训练营发的幻灯片:https://twitter.com/chipro/status/1196232680364376064,里面有双方在机器学习面试过程中的一些重要经验。文末有下载链接。总结对于大多数传统公司来说,机器学习是一门新兴的、不断发展的学科,构建机器学习团队充满了已知和未知的挑战。如果你跳到最后,这里有一些最后的要点:生产机器学习涉及许多不同的技能,因此有机会为很多人做出贡献。机器学习小组变得更加独立和跨学科。管理机器学习团队很困难。没有灵丹妙药,但转向概率编程可能会有所帮助。机器学习人才稀缺。作为一名经理,要清楚哪些技能是机器学习职位描述中的必备技能。作为求职者,以局外人的身份进入市场可能会极具挑战性,因此请将该项目作为建立知名度的信号。希望本文能为您有效地构建机器学习团队提供有用的信息。在接下来的博文中,我将分享更多我在全栈深度学习训练营中学到的知识,敬请期待!
