独家 | 探秘全栈数据科学家

共 7529字,需浏览 16分钟

 ·

2024-04-12 03:58

   

作者:Kelvin Lu

翻译:陈之炎

校对:赵茹萱

本文约4300字,建议阅读9分钟
本文介绍了作者对于“全栈数据科学家”的一些见解。‍‍


标签:全栈数据科学家

图片作者 CDC 发表于 Unsplash

Daliana Liu在“数据科学家”上的视频是我最喜欢的YouTube频道之一。与其他许多技术性强、需要集中精力才能完成的数据科学项目不同,Daliana的脱口秀节目在职业和放松之间取得了微妙的平衡。我以前常常在路上、火车上或洗碗时听节目,对数据科学家和工程师如何解决现实问题的尤感兴趣,他们对工作的感受又如何?他们在节目中分享了成功和尴尬的时刻,在我看来,那些被广泛忽视的洞察往往是无价的。

在她最新的一个节目——数据科学团队的未来中,涉及数据科学家的日常工作经验。当加入新团队时,往往会被告知必须与工程师精诚合作:

“你必须成为一名全栈数据科学家。”

这是我首次听到“全栈科学家”这个词,不得不承认,这是一个很有趣的想法。为此,我对这个想法进行了深入研究,希望我的见解能够启发到更多数据科学从业者。   


定义全栈数据科学家  


数据科学和软件开发之间情同手足的亲密关系使得可以将软件开发领域的诸多概念借用到数据科学实践中。例如,DevOps成为了MLOps,CICD成为了5Cs:持续测试、持续集成、持续部署、持续评估和持续培训。全栈数据科学家的概念看起来更像是由全栈软件工程师头衔移植而来。

现代软件架构约定:软件方案栈包括多层,数据库是其中的底层。在数据库之上,包含一个后端系统和一个前端系统。在全栈开发人员出现之前,后端开发人员和前端开发人员是两个独立的岗位,尤为甚者,即便是数据库开发也设立了一个专门的岗位。全栈开发人员的概念意味着,从数据库设计到后端功能,再到前端网站和服务,全部开发工作将由同一个人完成。其好处显而易见:更低的人力成本、更高的生产力、更少的通信成本、更好的质量和更快的推出速度。

全栈数据科学家的概念如出一辙:鼓励数据科学家扩展自身的技能,覆盖更广的领域。然而,这一概念是新近才形成的,至今,它还没有一个统一的定义。广泛而模糊的定义是:“参与数据科学生命周期的所有阶段”,狭义的定义是“必须能够开发模型,测试和验证模型,将它们部署到生产中,改进模型,然后再次测试”,这看起来与传统的机器学习工程师角色没有什么不同:全栈数据科学家最常用的技能是数据科学和数据工程,没有人期望数据科学家开发后端和前端应用程序。   

基于上述不同的角色描述,可以刻画出全栈数据科学家的画像。

  • 面向工程,与纯粹面向研究的数据科学家角色不同。
  • 具备一定的数据工程技能,能够独立处理大数据和传统的关系数据源。
  • 了解MLOps实践,可以在生产过程中执行模型训练和部署。


 反例  


几年前,我有机会与一位非常聪明的博士数据科学家一起工作。他真的非常聪明,令人瞠目结舌。他不仅在做机器学习分析,还在用一种不受欢迎的语言Haskel构建大数据处理引擎。当时阿帕奇Spacrk刚刚成为一个流行的名字,而他的系统可以像Spark一样高效。

如果将他的技能与一个全堆数据科学家相匹配,会发现他符合所有的标准:他是一个具有非常强工程技能的数据科学家,他知道大数据处理的所有细节,只用一根手指就管理模型的生产环境。

然而,他的聪明在构建类似于 Spark的新系统时并没有带来合理的商业产出。事实上,这家初创公司发现,在没有立即获得经济利益的情况下,无法继续维持这个复杂系统的开发,而这位数据科学家的多功能性也无法提速项目的交付。

当这位全栈数据科学家离开公司时,真是一个难忘的时刻,当他告别时,办公室里顿时笼罩着一股悲伤阴云,同事和即将离开的人都流下了眼泪。在他离开后,该公司仍然很难找到正确的发展方向,多年来,它一直挣扎着维持财务平衡。看起来,这位全栈数据科学家并不是该公司的加速器,他也不是业务失败的唯一原因。此时,为什么还需要一位全栈数据科学家呢?   

 字里行间  


再来细看如何构建软件开发团队,一个完整的软件开发团队有多个不同的角色:

  • 产品所有者
  • 项目经理
  • 业务分析师
  • 架构师
  • 开发人员
  • 测试人员

经过70多年的软件开发实践,不同角色之间的差距并不是很显著,所以一个人同时戴着多顶帽子的现象非常常见。

机器学习团队的结构则更为复杂。与软件开发团队相比,机器学习团队更紧凑,对全栈数据科学家的新要求反映了这样一个事实,即机器学习团队不可能具备它所需要的全部技能。这也成为了为什么要求数据科学家是全栈数据科学家的主要原因。

关键是,一个成功的机器学习团队需要相当多不同技能的成员,而所有拥有这些技能的成员都需要具备相当高水平的机器学习知识,这不仅仅局限于数据科学和数据工程领域。请问你是否见过有机器学习经验的业务分析师、有机器学习经验的项目经理、有机器学习经验的架构师或机器学习QA的工作描述?

这些不同的角色在机器学习团队中非常重要。然而,大多数机器学习团队还没有发展到如此高的工程水平。据我所知,缺乏工程能力是大多数机器学习团队的特点,大多数机器学习团队仍然倾向于研究组织,而非工业组织,二者主要区别在于:

  • 对预算、质量和时间表有没有清晰地认识?
  • 是否有能力基于业务价值来驱动需求定义?
  • 是否认为将人为错误造成的问题最小化非常重要?
  • 是否会自动执行重复性的例程?
  • 是否优先考虑模型性能或系统稳定性?

到目前为止,许多机器学习团队都更专注于模型的构建,他们的能力还没有发展到如何设法在市场上生存下来。的确,在市场中生存下来需要一种开发能力。工业化是企业生存的关键。为什么前面提到的全栈数据科学家没有让他的公司受益,为什么在他离开后,公司还在挣扎?原因是整个团队还没有准备好全速奔跑,这并非个人的问题。

 古老的智慧  


1986年,Brooks, Frederick P.发表了《没有灵丹妙药——软件工程中的实质和偶然》,文章基于他管理IBM 360系列大型机和软件包的经验。这篇文章是现代软件工程研究中的一个重要里程碑,它深入探讨了理解复杂性的 Brooks框架,并从亚里士多德那里汲取了灵感。他定义了两种关键的复杂性:

1.偶然复杂性:由设计选择和工程限制自身造成的复杂性。想象一下,直接用汇编程序编写代码,将会多么复杂!值得庆幸的是,现代语言对这些障碍进行了抽象化,比如优化每条指令或批处理。虽然取得了进展,但这种偶然复杂性仍然存在,有待简化。

2.实质复杂性:问题本身固有的复杂性,它起源于用户需要的核心功能。一个有30个不同任务的项目,无论设计得多么巧妙,都无法摆脱有效处理所有30个功能的实质复杂性。

Brooks认为,偶然复杂性已经得到大幅度降低,当今的程序员花更少的时间来处理原始的系统,花更多的时间来解决问题本身的固有挑战,称之为“实质复杂性”。

然而, Brooks 警告说,完全消除偶然复杂性不会改变游戏规则。真正的突破将来自于解决实质复杂性,这些复杂性来自于手头任务的本质。他将其比作建造一个复杂的机器:无论设计得多么好,它仍然需要复杂的部件来维持正常工作。

虽然没有魔术般的解决方案(“灵丹妙药”),但Brooks相信,一系列有针对性的创新可以改变局面,以像Ada这样的高级编程语言为例,简化了复杂的任务,使程序员能够专注于核心挑战。

Brooks主张通过增量开发来有机地使软件得以成长,他建议在一开始就设计和实施主要项目和子项目,然后再填充子项目。他认为,这种编程方式会让工程师兴奋,并在每个开发环节均提供一个有效的系统。

Brooks是对的!软件工程的发展证明,没有一种方法能魔术般提高生产力,必须经过一系列的小改进来实现。当谈及全栈软件开发时,人们对将后端和前端分开感到惊讶?全栈开发者的出现是由于现代技术已经大大降低了前端和后台程序的复杂性,使人们可以有足够的带宽来覆盖更多的领域。因此,如果一个经验丰富的全栈开发人员穿越到20年前,他可能需要在前端开发人员和后端开发人员之间做出抉择,因为他所依赖的开发工具尚未创建出来。   

没有灵丹妙药  


软件工程并没有通过手指的点击而有所改进,经过多年的思考和实践,才得以达到当前的水平,而且它仍然有很大的改进空间。

到目前为止,已经回顾了软件工程的历史,那么,数据科学工程又如何呢?

不幸的是,目前还没有很多关于数据科学工程的讨论,MLOps属于该领域,期待有比这更广泛的讨论。目前,甚至连MLOps的概念也没有得到采纳,有相当多的ML平台正在推广一站式解决方案,唯有时间才能证明一切。

在另一次采访中,一家自动解决方案提供商的前联合创始人承认,他们投资了一个庞大的团队(+100人),试图将COVID作为产品的用例,最终,该团队发现必须手工制作一个新的解决方案,他说:“AutoML更适合铺就幸福之路。”

知道吗?我们无法指望通过采用一个单一的概念或购买一个新的系统来使生活更快乐,只能通过逐步提高机器学习的生产力来实现这一目标。

Brooks是对的,根本就没有灵丹妙药!

数据科学工程可以在下述领域有所改进和提升:

  • 教育:未来的数据科学家需要具备工程思维模式,而不仅仅是学术数据科学知识。
  • 科研:需要开发新的理论来指导从业者处理机器学习应用的不确定性。例如,在时间序列分析中使用ARIMA或Prophet非常常见,对吧?如何有效地预测超过5万个时间序列?你能从这么多的时间序列中发现因果关系吗?   
  • 工具:当被问及何时停止调整深度学习模型时,导师说:当你钱花完了或弹尽力竭时停止,这可能会带来不便,但谁知道呢?或许当时人们还认为用黑曜石制造武器是唯一的选择。所以,不要说永远不会发生。这是当前如何进行机器学习实践的一个例子,需要更多新的工具来提高生产力。


结论


全栈数据科学家的想法打开了数据科学工程的大门,一旦你走进来,就会发现有多种选择。你不必是机器学习专家或数据工程师,便可以成为拥有机器学习技术的架构师;你可以成为一个知道如何利用机器学习在实际业务中生产出产品的雇主;你可以成为一个商业分析师,匹配数据科学家和非技术用户之间的知识差距;你可以是一个机器学习QA,擅长红队机器学习模型。你可以做任何事情来帮助你的团队,这些工作虽然令人兴奋,但如果你不喜欢的话,也无需成为一个全栈数据科学家。

Brooks在他的著名论文中提出了一个重要的观点:

并不是所有的设计师都能创造同等的创造,他强调,固有的编程创造力引发了不同的设计能力。他指出,“普通”和“伟大”之间存在着十倍的潜力差异。Brooks建议提升“明星设计师”,以配合传统意义上“明星经理”的待遇。这不仅表现在同工不同酬,还表现在与更高地位相关的福利,如宽敞的办公室、支持人员和旅行津贴。

衷心希望大家都是十佳数据科学家,拥有宽敞的办公室、支持人员和旅行津贴。


原文标题:

Full-Stack Data Scientist?

原文链接:
https://pub.towardsai.net/full-stack-data-scientist-2064db6fed98

编辑:王菁
校对:林亦霖




译者简介





陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位,历任长城计算机软件与系统公司工程师,大唐微电子公司工程师,现任北京吾译超群科技有限公司技术支持。目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和自然语言处理(NLP)方面积累有一定的经验。业余时间喜爱翻译创作,翻译作品主要有:IEC-ISO 7816、伊拉克石油工程项目、新财税主义宣言等等,其中中译英作品“新财税主义宣言”在GLOBAL TIMES正式发表。能够利用业余时间加入到THU 数据派平台的翻译志愿者小组,希望能和大家一起交流分享,共同进步

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。


点击文末“阅读原文”加入数据派团队~



转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。



点击“阅读原文”拥抱组织



浏览 12
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报