原文:
www.kdnuggets.com/what-junior-ml-engineers-actually-need-to-know-to-get-hired
照片由Mikhail Nilov提供
作为一名经验丰富的 ML 开发者,我曾在不同项目中聘用过许多初级工程师,我意识到有些技能对于初级开发者来说是必不可少的,这些技能会因项目和公司而异,但有一些基本技能是普遍要求的。
1. Google 网络安全证书 - 快速进入网络安全职业生涯。
2. Google 数据分析专业证书 - 提升您的数据分析能力
3. Google IT 支持专业证书 - 支持您的组织的 IT
在本文中,我们将讨论初级 ML 开发者在求职过程中应具备的关键技能。通过本文,您将更好地了解初级 ML 开发者获得第一份工作的必要技能。
寻找第一份工作的初级开发者通常来自其他领域,完成了一些 ML 课程。他们学会了基本的 ML 但没有深入的工程、计算机科学或数学背景。虽然成为程序员不需要数学学位,但在 ML 领域,强烈建议拥有数学知识。机器学习和数据科学是需要实验和微调现有算法或甚至创建自己算法的领域。没有一些数学知识,很难做到这一点。
拥有良好学位的大学生在这里具有优势。然而,虽然他们可能比没有专业教育的普通初级工程师具备更深的技术知识,但他们通常缺乏工作所需的实际技能和经验。大学教育旨在提供基础知识,往往很少关注市场需求技能。
大多数申请初级 ML 工程师职位的候选人对 SQL、向量嵌入和一些基本的时间序列分析算法没有问题。我也使用了像 Scikit-learn 这样的基本 Python 库,并应用了基本的问题解决和算法(聚类、回归、随机森林)。但这还不够。
如你现在所理解的,大多数教育项目无法提供实际经验和对主题的深入理解。如果你决心在机器学习领域建立职业生涯,你需要自己学习一些内容,以提高你的市场竞争力。因为如果你不愿意学习,我这样说是出于关心,不要浪费时间——任何人都能进入 IT 行业的时代已经过去了。今天这是一个相当有竞争力的市场。
流行课程可能没有深入理解的一个关键技能是随机森林,包括剪枝、如何选择树的数量/特征等。虽然课程可能会覆盖随机森林的基本工作原理和实现方法,但它们可能不会深入探讨重要细节,或甚至讨论一些更高级的集成方法。这些细节对于构建有效模型和优化性能至关重要。
另一个常被忽视的技能是网页数据抓取。从网上收集数据是许多机器学习项目中的常见任务,但这需要掌握从网站抓取数据的工具和技术。流行课程可能会简要提到这个话题,但它们可能没有提供足够的实际经验来真正掌握这一技能。
除了技术技能外,初级机器学习开发人员还需要知道如何有效地展示他们的解决方案。这包括创建用户友好的界面和将模型部署到生产环境。例如,Flask 配合 NGrok 为创建机器学习模型的网页界面提供了强大的工具,但许多课程完全没有涉及这些内容。
另一个常被忽视的重要技能是 Docker。Docker 是一种容器化工具,允许开发人员轻松打包和部署应用程序。理解如何使用 Docker 对于将机器学习模型部署到生产环境和扩展应用程序非常有价值。
虚拟环境是管理依赖关系和隔离项目的另一个重要工具。虽然许多课程可能简要介绍了虚拟环境,但它们可能没有提供足够的实际经验,以便初级开发人员真正理解其重要性。
GitHub 是软件开发中版本控制和协作的关键工具,包括机器学习项目。然而,许多初级开发人员可能仅对 GitHub 有表面的了解,可能不知道如何有效地使用它来管理机器学习项目。
最后,像 Weights and Biases 或 MLFlow 这样的机器学习追踪系统可以帮助开发人员跟踪模型性能和实验结果。这些系统对于优化模型和提高性能非常有价值,但它们可能在许多课程中没有深入覆盖。
通过掌握这些技能,初级开发人员可以从竞争中脱颖而出,成为任何机器学习团队的宝贵资产。
年轻的专业人士经常面临一个问题:要找工作,他们需要经验。但如果没有人愿意雇用他们,他们怎么能获得经验呢?幸运的是,在机器学习和编程领域,你可以通过创建个人项目来解决这个问题。这些项目允许你展示编程技能、机器学习知识以及对潜在雇主的动机。
这里有一些个人项目的想法,坦率说,我希望在申请我部门工作的人员中看到更多:
本项目的目标是从特定网站抓取数据并存储到数据库中。这些数据可以用于各种目的,如分析或机器学习。项目可能涉及使用像 BeautifulSoup 或 Scrapy 这样的库进行网页抓取,以及使用 SQLite 或 MySQL 进行数据库存储。此外,项目还可以包括与 Google Drive 或其他云服务的集成,以便备份和方便访问数据。
在这里,你需要构建一个能够理解和回应自然语言查询的聊天机器人。聊天机器人可以集成附加功能,如地图集成,以提供更有用的回应。你还可以使用像 NLTK 或 spaCy 这样的库进行自然语言处理,以及使用 TensorFlow 或 PyTorch 构建模型。
本项目的目标是构建一个计算机视觉模型,能够检测图像中的物体。无需使用最复杂的模型,只需使用一些能够展示你在深度学习基础方面技能的模型,如 U-net 或 YOLO。项目可以包括使用 ngrok 或类似工具将图像上传到网站,然后返回检测到物体并用方框标记的图像。
你可以构建一个文本转语音模型,将录制的音频转换为文本。该模型可以使用深度学习算法如 LSTM 或 GRU 进行训练。项目可以涉及使用像 PyDub 或 librosa 这样的库进行音频处理,以及使用 TensorFlow 或 PyTorch 构建模型。
本项目的目标是构建一个能够根据过去的数据预测未来值的模型。项目可以涉及使用像 Pandas 或 NumPy 这样的库进行数据处理,以及使用 scikit-learn 或 TensorFlow 构建模型。数据可以来自各种地方,如股票市场数据或天气数据,并可以与网页抓取工具集成以自动化数据收集。
拥有一个能够展示你技能的良好作品集与来自知名大学的学位同样宝贵(甚至可能更宝贵)。然而,如今还有其他重要的技能:软技能。
发展软技能对机器学习工程师来说很重要,因为它帮助他们将复杂的技术概念传达给非技术利益相关者,有效地与团队成员协作,并与客户和顾客建立牢固的关系。发展软技能的一些方法包括:
-
创建博客。 尽管写作是一种孤独的实践,但它可以非常有效地帮助你提高沟通能力。以清晰简洁的方式写作技术概念可以帮助你更好地结构化思维,并掌握如何向不同观众解释复杂任务。
-
在会议和聚会中演讲。 在会议上演讲可以帮助机器学习工程师提高公众演讲技巧,并学习如何根据不同的观众调整信息传达方式。
-
训练向你的奶奶解释概念。 练习用简单的术语解释技术概念可以帮助机器学习工程师提高与非技术利益相关者沟通的能力。
总的来说,发展技术技能和沟通技能可以帮助你获得机器学习领域的第一份工作。
伊万·斯梅塔尼科夫**是 Serokell 的数据科学团队负责人。