作者图片
数据科学家被宣传为 21 世纪最性感的工作。现在,在 2021 年,大多数公司都在他们的流程和核心任务中采用了一些数据科学,分析他们的客户群或优化和自动化一些手动流程。另一方面,数据科学家仍然是一群非常异质的人,一些人有统计学背景,一些人有机械工程背景,一些人有物理学背景,等等。当然,实际的数据科学硕士课程对劳动力的输出有所增加,但大多数人仍然是自学的(包括我)。
瓶颈似乎不再是数据,而是如何将探索性项目投入生产。换句话说,让软件工程师和数据科学家说同一种语言来使这个过程顺利进行。
数据科学家通常非常擅长获取数据、处理数据、制作可视化图像、一些初始模型和笔记本。但是到了生产阶段,实际上是向最终用户提供模型并将其集成到(现有的)工具中,Data Scientist 需要将接力棒传递给软件工程师。不幸的是,对于软件工程师来说,这些笔记本和杂乱的脚本通常就像劣质的纸板模型,将它们转化为真实的东西需要(太多)时间。那么,鼓励每个人缩小差距的第一步是什么呢?
下面是我们推荐的几个步骤!
作者图片
版本控制是一种系统,它记录一段时间内对一个文件或一组文件的更改,以便您可以在以后看到特定的版本。像 Github、Bitbucket 和其他服务可以很容易地看到多人在一个代码库上做了什么。这是为了避免无意的覆盖和其他错误。你可以在 Google Docs 上对你的文档进行版本控制,那么为什么不对你的代码也进行版本控制呢?
除了版本控制(即使单独工作也是值得的),您的代码将存储在云上,可供您的所有项目成员访问,而不是存储在某人的笔记本电脑上,随时可以被遗忘。因此,你的队友可以意识到你在构建什么,并从你停止的地方继续。
还有一个副作用——当你知道有人会读代码时,代码就不那么像意大利面条了。
笔记本是数据科学家的圣杯;它们对于探索您的本地机器非常方便!如今,也有许多在线提供商,例如 Kaggle kernels、Sagemaker、Google Colab 等等。
然而,笔记本给了数据科学家相当多的自由。例如,你可以按照你想要的任何顺序运行代码——相信我;人们会这样做——它们包括大量的支票和其他任何人“不必要”的东西。然后是设置的麻烦;你安装了哪个版本的 python、pandas 和其他库,当试图复制其他 DS 刚刚做的事情时,其他依赖的库是什么。因此,它们离生产就绪还差得很远。
瓦罗海针对这个问题做了一个独特的解决方案:Jupyhai。您可以从本地 Jupyter 笔记本上运行 Valohai 云执行。它要求整个笔记本从上到下同时运行,迫使数据科学家保持代码的整洁有序。你不需要瓦罗海采纳这个原则;每一个笔记本都这样写的话会比较好理解。
瞧啊。您离生产代码又近了一步。
当你需要滚动、滚动笔记本的时候,就该开始模块化思考了。将你的工作分成几个步骤,形成一个流程,现在需要一点额外的工作,但是从长远来看是值得的。
一次只能运行一部分,看看可能的错误和 bug 在哪里,项目的瓶颈在哪里。也许甚至可以编写一些测试来确保将来对单个部分的更改不会破坏整体。
它还有助于保持组织性,并简化代码的可维护性。这样,在更高的层面上向一个新的人解释你的工作流程,并且一次专注于一件事,可能会更容易。
希望你的很多项目转向产品;这是一个永无止境的循环,总有一些东西需要迭代、改进和优化,因此“完成”的定义非常模糊。
在这里,我们可以从敏捷开发等框架中再次学习。当然,并不是所有的部分都适用于数据科学,但是尝试计划冲刺,区分每个冲刺的优先次序,清晰地定义任务的可交付成果和时间表,并使用回顾和演示可能会让你觉得你完成了一些事情。
此外,与开发人员(和业务涉众)的交流更加直接。
我们都是不同的,都来自不同的背景,多样性是一种财富。但是拥有不同的想法和做事方式需要努力。与一个人交流要容易得多,例如,在一个项目中与一个有相似教育背景的人交流,但是,好吧,那么这个项目只需要一套技能就可以完成。
因此,对于所有阅读这篇文章的数据科学家来说:开发人员并没有试图通过引入为他们工作的工具和框架来让你的生活变得痛苦。对所有开发人员来说:数据科学家不会故意产生难以理解的意大利面条式代码;这通常是一种不同的思维方式和缺乏更好的了解——这整个行业就是你 10-15 年前的情况。
试着理解他人并向他人学习,试着理解他人的观点,即感同身受,这能让你做比你自己更不可思议的事情!
给你的团队中的一大群数据科学家提供帮助他们工作的框架和最佳实践,你促进了工作的可理解性和可转让性。一次解决一个工作流程障碍,并且只有在开始解决 MLOps 和工具之后。
❤️发展局副局长
最初发表于【https://valohai.com】。