机器学习工程师的职责在不同组织之间可能有很大差异。然而,在最普遍的情况下,他们通常负责将机器学习模型部署到生产中。
它们对模型产品化的贡献方式可能不同,它不仅仅是在服务器上托管一个模型。机器学习工程师可以编写数据质量测试,以确保准确的模型输入,为特定任务的模型自动化训练管道,构建模型评估和监控流程,优化模型推理等。
不管具体的任务是什么,机器学习工程师的主要目标是通过某种基于模型的服务为组织提供业务价值。
D2iQ的软件工程师Gauri Powale说,机器学习工程师通常负责研究机器学习模型和算法。这通常从一个基本模型开始,然后根据具体问题进行改进和更改。她说:“他们还设计和开发了可以从数据中学习和预测的算法和模型,并使用数据来训练机器学习模型,并优化它,以获得更好的性能。”
机器学习工程师必须能够将模型部署到生产中,测试有效性,然后监测模型性能,以在新数据可用或模型性能下降时进行必要的更新。
技能范围从编程到云计算
Powale将必要的机器学习技能分为六个不同的领域,从编程到云计算:
- 编程:对数据结构和算法有深刻的理解;机器学习工程师最好精通Python或Java。
- 机器学习算法和框架:了解深度学习架构,机器学习算法和理论,Keras, TensorFlow, PyTorch。
- 软件工程:了解软件工程原理,如调试、测试和持续集成。
- 机器学习系统设计:机器学习工程师必须设计和构建端到端的机器学习系统,并开发基础设施和工具来支持机器学习管道。
- 分布式计算:有处理大型数据集和扩展机器学习模型的经验,也有使用Hadoop和Spark等分布式计算平台的经验。
- 云计算:在AWS、GCP和Azure等云平台上部署机器学习模型的经验。
Comet ML的高级数据科学家Dhruv Nair注意到,Python是大多数机器学习工程角色的默认语言。他说:“因此,建议大力投资,全面了解它的优势和弱点,并学习使用Python进行软件开发的最佳实践。”
对于特定的机器学习框架,他建议熟悉PyTorch或Keras/TensorFlow。他补充说:“如果使用表格数据,请查看Scikit Learn和XGBoost。”“对于变压器或NLP问题,Hugging Face生态系统绝对值得探索。”
在日常工作中,机器学习工程师可能会被要求做以下工作:
- 研究、设计和实现ML模型和系统
- 实现机器学习算法和工具
- 扩展数据科学原型
- 选择合适的数据集,验证数据质量,清理和组织数据(与数据工程师合作)
- 执行统计分析
- 执行测试和优化机器学习模型和算法
- 监控生产中的系统,并对其进行再培训以提高性能
- 利用机器学习库
如果你刚刚开始探索这一学科,Made with ML、Towards Data Science和w3schools等网站可以为你提供机器学习的战术知识。
对尖端技术的了解是一个优势
Powale认为,深度学习、强化学习、AutoML、自然语言处理(NLP)和量子计算都是机器学习工程师也应该了解的尖端技术。她说:“NLP是人工智能和语言学的一个领域,专注于计算机和人类语言之间的交互,并用于许多任务,如语音识别、文本到语音和情感分析。”
她解释说,量子计算—一种利用叠加和纠缠等量子现象对数据进行操作的计算—有可能解决经典计算机无法解决的问题。Powale补充说:“作为一个新兴领域,量子机器学习的目标是开发可以在量子计算机上运行的机器学习算法,以更有效地解决复杂问题。”“这个领域正在发展,我预计,在未来十年左右的时间里,随着量子计算研究的发展,更多的公司将开始指望它来解决经典的挑战性问题。”
Nair说,很难确定什么被认为是“前沿”,因为它经常变化。“然而,如果我必须提出建议,我将建议研究变压器模型、注意力机制、自我监督学习、多模态模型和扩散模型,”他说。“请记住,这些方法和技术可能在几年内过时。尽管如此,它们目前在该领域引起了很多兴趣。”
软技能也很重要
从Nair的角度来看,缓和利益攸关方的期望可能是ML专业人员最关键的技能。他说:“机器学习有时被视为公司问题的神奇解决方案,但事实并非如此。”“与技术和非技术利益攸关方明确沟通与模型开发有关的挑战性现实,对任何机器学习项目的长期成功至关重要。”
除此之外,机器学习工程师所需的软技能与其他科技行业的技能相匹配。奈尔说:“学会直接,同时也要善待你的同事。”“向在工作中表现出色的同事寻求可操作的反馈,这样你就可以从他们那里学习和成长。”
Powale同意有效的沟通技巧在每个角色中都很重要,但对于机器学习工程师来说更重要:“机器学习工程师必须有能力清楚地向那些非技术的人解释复杂的技术概念。”
她指出,机器学习工程师也应该能够与其他团队和团队成员有效地工作,因为他们经常与各种其他角色合作,比如数据科学家、软件工程师和产品经理。
商业头脑和解决问题的能力同样至关重要,因为机器学习工程师需要对业务目标、kpi和客户需求有很强的理解。“对ML工程师来说,能够以创造性和创新的心态解决问题,并能够适应不断变化的需求和限制,这是很重要的。”
作者:Nathan Eddy