最近在招算法,发现一个问题,不知道是不是我的认知问题,请教一下兄弟们。据我了解,算法分为算法研究,算法前后处理,算法工程部署等等。
最近面试的一些算法,研究能力并不突出,自己从 0 到 1 研究过模型网络,做过完整模型的就一个,其他的都是开源模型+数据集训练部署,然后就这一个,表达沟通能力还有问题,总是用“这个”, “那个”来表述一些术语,听的我们云里雾里的。很多算法工程师训练+调参做到 onnx 就结束了,然后还有的就只是负责 dll 的转化,前处理后处理什么的,很少有做过四层网络+服务器+应用+算法+部署整个流程的。
我知道算法的工作内容繁多,除了算法本身可能也没有精力了解其他内容。
但是,搞计算机的,真的是只负责自己的那一小块么?
1. 首先,现在定义的算法工程师=机器学习算法工程师=深度学习算法工程师,不是指工程能力很强的那种算法工程师
2. 在算法工程师行业,我们又会细分为应用算法工程师和更偏理论偏基座的理论算法工程师。无论哪个方向,数据预处理、训练、优化、部署。都是基本功,但是这种基本功都指的是调包。前面每一个环节深入进去,都是另一个工种,比如,部署推理加速,要会 cuda ,会写算子,这个工种了解不了解算法理论就没那么重要了。
3. 其中应用算法会更侧重业务拆解,将问题转为算法问题,所以在实际工作中会要求写一点业务代码。一般由工程团队包好框架,我们实现关键的业务逻辑,不需要太牛逼的模式设计,你做的再好能有在工程领域浸淫好几年的工程团队打的框架好吗。理论算法工程师就更务虚一些,干好自己的一亩三分地,发发 paper ,打打榜,给前者提供下 base model ,所以前者在大厂里占了绝大部分。
4. 对于你说的其他部分比如网络,服务器之类的。全看算法工程师个人爱好了。精力有限又确实用不上。
而现实是,大部分相关公司不会有自己的算法研究员,基本上是产学研三合一,算法工程师又要搞理论又要写代码担子自然重了,给了人一种啥都要会的错觉。