撰文|OneFlow社区
AI/ML 大热后,很多工程师跟着潮流学习新技术,再加上高薪诱惑,不少人就跳坑到机器学习的研究/工程职位,但进去后才知道这里并不是想象中那么美好,一入此坑深似海,你是不是也感同身受?
最近,Reddit 上的一位做了一年 ML 工程师的@hedy-m就吐槽,有太多人因为“酷”、“聪明”和“高薪”一窝蜂涌进机器学习领域,他也曾以为ML工作梦寐以求,但现在,他发现有钱难买我开心,准备弃坑跑路了。
他给出的的理由是查看损失曲线、调整特征和参数的工作实在太耗费精力,太无聊,尤其是生产模型时,当它们没有产生预期的效果,他会不禁认为自己只要足够努力,模型就会变得有效,但往往事与愿违,ML 模型效果难以捉摸,项目的交付难度无形中让他压力山大,他现在很厌恶花数个小时在“垃圾数据”中撞脑袋的机器学习工作中。
不过,他正在打软件工程师的主意,当处理更纯粹的编程和工程任务时,他觉得自己会获得更多工作乐趣。
在他诉苦后,江湖上大致有 ML“弃坑”派、MLOps“真香”派和技多不压身派给出了观点,有人劝他打消这种想法,这样做一定是疯了,也有劝他跳坑做自己感兴趣的软件工程的,另一部分人则建议使用 MLOps 工具帮他减轻当前的工作压力。
一时间,三大门派各抒己见,一顿输出后,似乎让这位工程师不知所措了......
1
机器学习“弃坑”派
实际上,@hedy-m 的抱怨在 ML 领域很常见。“弃坑”派网友表示很有共鸣,劝他去搞软件工程。
基本上,不少机器学习项目需要为获取相关资源和数据而四处奔走,你还需做耗时的数据处理工作,但最终 ML 项目的成功取决于你所拥有的数据甚至是运气。模型没有按预期工作总让人感到沮丧,并且你还要为此负全部责任。
Reddit 网友 @knighttoken1 称,如果你开始解决一个不可能或者非常困难的问题,无论如何尝试使用不同的 ML 模型都不灵时(至少 ML 不是解决方案)。在这样的项目中,很难不把个人价值与模型性能联系起来。
“在 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/