撰文|oneflow社区
ai/ml 大热后,很多工程师跟着潮流学习新技术,再加上高薪诱惑,不少人就跳坑到机器学习的研究/工程职位,但进去后才知道这里并不是想象中那么美好,一入此坑深似海,你是不是也感同身受?
最近,reddit 上的一位做了一年 ml 工程师的@hedy-m就吐槽,有太多人因为“酷”、“聪明”和“高薪”一窝蜂涌进机器学习领域,他也曾以为ml工作梦寐以求,但现在,他发现有钱难买我开心,准备弃坑跑路了。
他给出的的理由是查看损失曲线、调整特征和参数的工作实在太耗费精力,太无聊,尤其是生产模型时,当它们没有产生预期的效果,他会不禁认为自己只要足够努力,模型就会变得有效,但往往事与愿违,ml 模型效果难以捉摸,项目的交付难度无形中让他压力山大,他现在很厌恶花数个小时在“垃圾数据”中撞脑袋的机器学习工作中。
不过,他正在打软件工程师的主意,当处理更纯粹的编程和工程任务时,他觉得自己会获得更多工作乐趣。
在他诉苦后,江湖上大致有 ml“弃坑”派、mlops“真香”派和技多不压身派给出了观点,有人劝他打消这种想法,这样做一定是疯了,也有劝他跳坑做自己感兴趣的软件工程的,另一部分人则建议使用 mlops 工具帮他减轻当前的工作压力。
一时间,三大门派各抒己见,一顿输出后,似乎让这位工程师不知所措了......
1
机器学习“弃坑”派
实际上,@hedy-m 的抱怨在 ml 领域很常见。“弃坑”派网友表示很有共鸣,劝他去搞软件工程。
基本上,不少机器学习项目需要为获取相关资源和数据而四处奔走,你还需做耗时的数据处理工作,但最终 ml 项目的成功取决于你所拥有的数据甚至是运气。模型没有按预期工作总让人感到沮丧,并且你还要为此负全部责任。
reddit 网友 @knighttoken1 称,如果你开始解决一个不可能或者非常困难的问题,无论如何尝试使用不同的 ml 模型都不灵时(至少 ml 不是ag真人官方网的解决方案)。在这样的项目中,很难不把个人价值与模型性能联系起来。
“在 ml 工作中,你很容易工作 14 小时,同时失去友谊、社交和健康,最终仍然一无所获”:)
此外,大部分 ml 工程师日常用的是知名模型或复现其他论文,创造性空间有限,难以获得成就感,有人认为,要想在机器学习工作中做出好成绩,还是要有 phd 加持去做研究。当你成为 ml 的大牛,轻松输出各种相关论文时,生活就美满幸福,但要想有影响力和创新性,自然也会承受各种压力。
即便在大厂,只有极少数地方才会用到最前沿的ml研究,况且还是业务优先。@ternaryjimbo 提到,在大厂 ml 团队带过后,现在讨厌关于 ml 的一切,他转到了更标准化的后端工作,只是把ml当成一种业余爱好。
还有人提到,机器学习工程师还要努力展示与某些业务 kpi 相关的直接商业价值,而模型的改进不一定会对业务 kpi 产生直接影响,因为还有很多其他因素促成数据产品取得成功,由于涉及到如此多的不确定性,他们通常也不得不使用太花哨的东西,因此,旧招数不断被重复使用。
相对而言,做软件工程不确定性更小,优秀的软件工程师投入必要的时间,就会获得积极的结果,而且对任何科技公司来说,软件工程项目都是更成熟的核心业务。
2
mlops“真香”派
机器学习工作中让人很糟心的是,要处理混杂的数据,并且没有称心的编程工具,如果能改变这两点不足,机器学习工程师的生产力将得到大幅提升。
网友 @curiousronin 的回复得到了最高赞。他认为,在许多情况下,当你打算将代码用于生产时,只有使用更高级别的框架才能节省大量时间,而不是将时间花在代码和文档、错误分析以及训完模型后的很多其他工作上。
不过使用 pytorch lightning 或 fast.ai 等更高级别的框架也有很多麻烦。有人提到,从 fastai 部署 pytorch 模型非常痛苦,因为人们必须了解 docker、pytorch、webapi/flask 和云容器服务、监控......
因此,他建议使用 mlops 工具。如果没有良好的基础设施,系统质量和开发体验就会一塌糊涂,而 mlops 就像是编程用的 ide 或 git,这是行业中最有价值的东西。
有人补充,机器学习工程师的工作是弄清楚如何将模型产品化,并将其扩展到软件工程师构建的 serving 平台,如果发生模型漂移,还需要监测和调整,而 mlops 平台可以做到这一点。
网友 @chief167 更直接,他说自己根本不喜欢 azure、snowflake 或 databricks 进行部署,现在模型就绪后,使用 mlops 平台在 15 分钟内就可完成模型部署,api 就绪,完成监控,抛出接口并完成整个过程,确实消除了所有痛苦。
在他看来,谷歌 gcp 和 aws 比传统玩家要好很多,但离专用平台还差得很远,还推荐使用 datarobot、h2o、teradata vantage 等 mlops 平台。
目前,mlops 主要被用于由 ai 技术驱动的组织中,一般由数据工程师或应用工程师打造,不过在一些组织中,机器学习工程师也会承担 mlops 工具的开发工作。
3
技多不压身派
温和的中庸派也发话了,俗话说,多门技术多条路,不要搞得这么决绝。
许多公司在软件工程和 ml 这两个角色之间还没有过于明显的区分,实际上,如果你在这两方面都拥有成熟的经验,那你更有价值。
网友 @modernzen 现身说法,他目前的职位是机器学习工程师,但主要做的是软件工程 mlops/devops 的工作,偶尔还会做数据科学任务。尽管他喜欢数学/统计/理论机器学习,但一直喜欢写代码胜过任何事情。
他将大部分时间都沉浸在编码工作上,并且从不抱怨,只花 <10% 的工作时间在 fine-tuning 或调参的 ml/ds 任务上,这样不至于对其感到厌倦。他建议在一个使用机器学习的团队找到一份软件工程师的工作,这样即使大部分时间不直接使用 ml 模型,你仍然可以研究机器学习。
还有一位有 20 年软件工程师经验的网友宽慰道,无聊或压力可能不是技术领域的问题,更多与团队或者项目有关。当你看到软件运行或输出业务见解,并为用户和企业带来价值时会让人感到满足,开发项目也并不总是很顺利。
听了上述三大门派的观点,你会选择弃坑ml?继续苟着?还是有其他选择?
其他人都在看
资源依赖的“诅咒”
“远见者”特斯拉ai主管karpathy
tvm:成为深度学习领域的“linux”
对抗软件系统复杂性:恰当分层,不多不少
解读pathways(二):向前一步是 oneflow
oneflow v0.7.0发布:全新分布式接口,libai、serving等一应俱全
欢迎下载体验oneflow v0.7.0最新版本:https://github.com/oneflow-inc/oneflow/https://github.com/oneflow-inc/oneflow/
关键词: