为从业人员策划和创建资源以大规模设计,开发,部署和维护ML应用程序,以产生可衡量的积极业务影响。
在每个问题中,我都会从开发人员的角度探讨一个主题,几乎没有指向相关资源的链接供您深入研究。
在本期中,我想讨论构建实际ML应用程序的数据科学家和开发人员的经验,并强调:
建模只是工作的一小部分,大部分工作都是严格的工程
当前,机器学习(ML)对话以令人兴奋的建模技术和最新的State of the Art(SOTA)模型为主导。它给人的印象是,必须掌握这些模型背后的所有数学知识才能构建ML系统。但是很少有业务用例需要SOTA模型。大约有十几种知名模型可以满足大量应用的需求。
创建有用的ML应用程序所需的时间远远超过模型。剩下的事情可以在生产中创建或破坏ML应用程序。但是,这些其他事情没有得到应有的讨论。
像任何其他软件应用程序一样,机器学习之旅始于产品和用户体验设计。它最终达到以下操作:部署和监视。构建ML应用程序需要遵循三个关键学科:
机器学习:使用统计模型实现某些产品功能,并根据新数据评估模型是否有效,
数据工程:收集,整理和管理训练ML模型所需的数据的质量,隐私和安全性。
我们越了解这种联合,而不仅仅是ML模型,我们越有可能成功地使ML在现实世界中发挥作用。这是我的5个看法:
前3个对于软件工程师来说并不是新手。他们已经知道这些超过二十年了。由于在ML中,数据+模型是逻辑,因此后2种方式表示简单,快速,易于理解的算法在生产中比复杂的渐近高级算法更成功。对于开发人员而言,这也不是新鲜事物。
您可以看到,非ML应用程序中的工程设计考虑因素也在ML应用程序中产生了回响。在构建成千上万的人使用ML应用程序的数据科学家的经验中,您会看到相同的回声。
Eugene Yan(@eugeneyan)是Amazon上发布ML推荐系统的应用科学家。他的文章“不受欢迎的观点-数据科学家应该更加端对端”强调了数据科学家在孤岛工作的问题:责任的分散和翻译的损失。对于我来说,读这篇文章是有一段时间的事,当时开发人员使用筒仓进行编码,临时进行测试,然后扔到墙上供测试人员编写测试并验证预期的功能。从那时起,CI / CD使得软件开发变得敏捷。现在,我们与产品经理,设计师,工程师和DevOps的跨职能团队合作,以实现更好的沟通和及早发现集成问题。如此之多,以至于Full-Stack Developer已成为一回事。
Shreya Shankar(@sh_reya)是ML研究人员。她在斯坦福大学学习并在Google Brain实习。她根据自己作为ML工程师的经验写了一篇有见地的文章:回顾了使机器学习真正有用的一年。她强调了数据的重要性:与在不同模型上进行迭代相比,添加数据和调整功能如何能产生更好的RoI。她写道:“我90%的工作涉及与建模无关的任务。”她强调了测试的重要性。她还解释了由于其概率性而对于ML应用程序来说是唯一的可重复性和可复制性的概念。
Chip Huyen(@chipro)是斯坦福大学的ML研究人员,他专门研究MLOps并将ML部署到生产中。她发布了一份有趣的事情清单,以帮助您成为ML工程师。请检查开发人员已经做过以下几项:
机器学习库和框架在过去5年中已经成熟。工具正在迅速发展。开发人员可以轻松访问所有内容。对于端到端所有权,开发人员应停止将ML模型视为黑匣子。
今天,期望产品经理和开发人员对分布式系统概念有所了解。明天,对ML的期望也是一样。
Santiago Valdarrama(@svpino)在一个清晰的Twitter线程中描述了他的过渡经历:
在进入ML之前,我已经担任工程师15年。我在“工程师艰苦的机器学习之旅”中写下了自己的旅程。
如果您更喜欢结构化课程,则可以从以下5篇免费的ML课程和教程开始:
没有比现在更好的时间学习构建ML应用程序了。我期待与您分享经验并向您学习。
为从业人员策划和创建资源以大规模设计,开发,部署和维护ML应用程序,以产生可衡量的积极业务影响。 每期杂志都从开发人员的角度讨论一个主题。 请在Twitter或Linkedin上进行连接,然后发送您的反馈,经验和建议。