如何成为一个ML engineer
ML engineer是现在software engineer这个umbrella下面的细分领域里最火的方向之一,“没经验如何变成ML Engineer”也是我频繁被问的一个问题。今天给大家统一回答一下。
咱们可以看看从公司的角度讲,招聘一个入门级ML engineer,需要你具备什么样的技能:
1. 大于等于普通初级software engineer的编程能力。OOD懂,算法数据结构懂(leetcode),代码干净,会写、会读、会debug。推荐书目:clean code或code complete;cracking the coding interview。
2. 理解基础的ML概念:supervised learning, unsupervised learning及其常用模型/算法。几个常见问题:neural net是如何“学习”的?K means如何工作?如何评判model的表现?model overfit的常见原因和解决办法是什么?
3. 懂得如何调试model。这个必须从实战经验里来。怎么做feature engineering?underfit/overfit怎么办?
4. 会做data processing。一个ML engineer绝大多数时间都是在处理data,没有极强的data insight做的model不可能好。你怎么处理data?pandas熟练否?spark/beam/hadoop会用吗?
5. 熟练使用至少2个ML library,一个non-deep-learning(比如sklearn,xgboost等)一个deep learning(比如tensorflow,pytorch,caffe2)。
以上技能可以通过几个方面体现:
1. (必要)做过的项目,这是必须的。可能是你在之前的工作/实习中做的,或者上课做的,或者是自己的side project;结果和你个人的实际贡献(impact)比在哪里做的更重要。没有工作经验的话,通过kaggle competition一样可以积累项目经验。
2. (optional)学过的知识,如果你上过相关的课程(包括网课、coursera/udacity nanodegree这种)都可以写在简历上。但如果没有相关项目经验backup,学过也没啥用。
综上所述:
实战经验 > 单纯知道
项目经验 > 工作年限
熟练python > 其他语言
还有什么不懂的,或者想听我聊其他话题,欢迎留言。