算法工程师到底是什么。

423 阅读3分钟

「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战

这个是我在知乎上回答的,自己搬自己的东西应该没问题吧

干了半年的算法

感觉没有那么高大上

开发能力挺重要的

如果公司有好的产品经理,你可以只做需求,场景什么都可以不考虑

但是实际上,你一个算法服务,要考虑性能,部署环境,数据流,包装成可用的接口

举个实际面对的例子

甲方是某国企,服务器架设在内网,部分业务是隔离网(不通外网)

在这个前提下,甲方需要增加一个做监测的算法功能

算法基本上用开源的,调参就够用了

但是怎么部署就是问题,隔网环境,上传代码都要远程加跳板机倒几道手。所有需要的包都只能打包好,没有办法直接下。只能用docker

docker打包好环境,部署好服务,扔到服务器上跑

还要去做测试

还要联调

在接收到是规范化的数据下,整个算法选型到调参只占了30%的时间,如果数据不规范有脏数据,那这个比例可能只有20%或更低。

这就是算法的实际情况

更新一下最近一周碰到的情况

目前算法概念验证完成,原型已经对好,下一步需要开发接口对接到实际业务中。

面对的情况,就很有实际参考价值,我这里就啰嗦两句。

在公司中没有所谓的算法实施工程师,算法模型验证工程师,和什么算法模型优化工程师。只有算法工程师,会面对下面几个问题。

1)提供算法服务接口,用什么协议,grpc,http,websockets

2)算法模型怎么接受数据,用json,用数据库,还是用中间件。

--用json+http会不会超时

--用数据库,是用sql还是no sql

--用中间件,出现异常怎么处理

3)算法模型,如果内存只给2个G,数据怎么载入,结果怎么输出,并且传入传出的数据用什么格式。模型能接受最大数据量是多少。

4)如果前段需要获取算法进度,是用短轮询,长轮询,websockets,还是mysql,并且如果算法模型出现异常,进度怎么更新,是中断训练,还是重新训练。

5)在部署算法过程中,遇到各种各样的坑,要有能力去查,如果查不到就需要用其他方式去替换 6)开发过程中第一条一定是你和代码要有一个能跑,如果算法跑不了可比算法跑的慢问题大很多。

我自己感觉,算法工程师实际是要分研究和部署两个类,研究类是创新算法,不需要考虑成本,只做优化,这个是真正需要公司烧钱的,所以必须是真正高端的人才。部署类就是大部分的算法工程师该做的事,做现成开源算法的落地,熟悉业务逻辑,能够快速把已有的开源算法集成到服务中。不需要太多的开发能力,但是一定要熟悉各种协议,各种中间件,crud各类数据库,深度学习框架。更像一个万用扳手。