找回密码
 立即注册
查看: 383|回复: 5

大佬们,有人了解算法移植和算法优化吗。这份工作有前途吗 ...

[复制链接]
发表于 2023-2-20 06:48 | 显示全部楼层 |阅读模式
感觉每天就是把算法剥离依赖,然后使用一些技巧进行加速(arm neon或者npu,dsp,GPU,访存优化),或者反汇编看一下代码运行情况,分析代码,有什么计算复用了,剥离出来。没什么技术含量,很繁琐 。感觉像是时代的眼泪,只要CPU或者gpu速度快一点,编译器智能一些就失业了。
发表于 2023-2-20 06:53 | 显示全部楼层
作为从业人员,先表明立场,算法移植和算法优化是计算机领域重要的技术,非常有前途。
尤其是AI、机器学习和大数据技术的发展,算法移植和优化变得更加重要。
算法移植指和算法优化都需要对算法的本质有深刻的理解,并能够运用多种数学方法和算法设计技巧。
算法移植和算法优化是需要深厚技术积累和数学基础的工作,如果你自认数学功底不错,对算法有浓厚的兴趣,喜欢既专又精,是一个非常值得探索的领域。
发表于 2023-2-20 06:55 | 显示全部楼层
有前途,算法优化是无穷无尽的,只要你乐意去做
算法优化有点泛泛,小至一个程序,大至一个系统,是能提高技术门槛的地方
发表于 2023-2-20 07:02 | 显示全部楼层
只是做点算法移植和优化,没有什么挑战。至于是不是有前途,个人认为没什么大的前途。做为算法工程师,移植和优化是基础,还需要对算法做更新,形成新的算法。个人意见啊。
发表于 2023-2-20 07:08 | 显示全部楼层
题主没有说具体做哪个领域的算法,是CV,还是语音,还是NLP? 算法移植和优化,但是看题主描述是要做ARM、Neon、DSP等工作,应该是做移动获取嵌入式平台的(不是做服务器端的)。其实是大部分算法工程师在实际项目中的主要工作,个人认为恰恰是目前做算法领域最有价值的工作。在这神经网络和深度学习泛滥的时代,永远不缺拿python撸几行代码就可以跑起来的人(高中生都可以干的活),最缺的的恰恰是把算法能真正落地化到项目中的工程师。做好算法移植和优化,通常需要有好几个方面的综合技术:
1、算法本身的原理和实现。例如:CV领域做人脸识别、图像分割、视频超分等,能确保自己能理解这些算法基本原理和优缺点,使用最基本的语言(C/C++、python的Numpy库)能够完整的实现这些算法,要能掌握算法实现的细节,哪些运算是最耗时的、哪些网络层次起到的效果是最关键的,对结果精度有明显的影响等。
2、在第一点的基础上,对现有算法和神经网络结构做调整,这个过程非常艰难和繁琐,要手工推理算法公式。移动端或者嵌入式端开发难度远远要大于服务器端,通常在服务器端用Python能快速跑起来的算法,在这些设备上压根就跑不动,通常要做模型剪枝、传统算法预处理、多种算法混合等处理,这个步骤是最考验算法能力的时候,不仅仅需要有该算法领域内的广度知识,还需要有相当的深度知识,对各个算法优劣有深入了解,需要平衡计算量和算法精度之间的临界点,这样才能设计出能真正跑得动的算法。
3、特别平台优化技能。题主提到的 NEON指令优化,只是一种,其实现在移动平台上,更多的是使用openCL来做优化,有些中低端芯片平台对于openCL支持度不太好,可能还需要使用 openGL ES来做卷积等处理,这就需要掌握 openCL、openGL ES、Vulkan等开发知识,光这里的每一项都需要花费不少的时间来学习和掌握。
华叔-视觉魔术师:openCL开发——绪论总体来说,随着近些年神经网络和深度学习的发展,各种算法和神经网络模型层出不穷,最大的瓶颈其实不是在算法创新,而是在算法落地化,如何将现有的算法、进行改进和优化,真正在项目中进行落地化,这才是工业界最大的需要的,这也是各个公司对于算法人才最急迫的需求。之前我们项目中,有个低端的嵌入式平台上做实时视频超分,但是由于计算量比较大,帧率一直达不到客户满意的要求,整个算法部门几个同事,花了近2个月的时间做各种算法和工程化的优化,才达到客户要求的帧率。对于类似这些平台上的实时视频超分,能够跑起来只需要花费2分工作量,跑到24fps帧率,则需要花费4分的工作量,再提升到30fps帧率,看起来只有几帧提升,但是花费的工作量远远是前面的几倍。
做类似的问题可以参考:
CV/NLP/AI等方向的博士相比于硕士去工业界的优势在哪里?2021秋招CV算法岗可以转什么岗位合适?
发表于 2023-2-20 07:08 | 显示全部楼层
我的看法可能有点不一样,不看好这些事,我觉得这些特定的移植,优化,从广泛度来说,都会慢慢收窄,然后被淘汰或者只有极端情况才需要。
移植这种工作最终肯定会被编译器/优化器这类东西吃掉,现在正在发展的DL编译器的发展方向未来肯定会逐步渗透屏蔽很多底层的差异。
而优化是受限于资源的约束,所以需要单独处理,返回历史去看,以前有专门的数据库调优师,有专门的代码优化师,为了几KB的内存消耗而反复调整。
但是这些耗时耗力还费高端人力资源的事,远远不如多花三五毛钱升级1GB内存带来的收益明显。
当然不是贬低这些工作,而是行业的发展方向必然是标准化,低门槛,大众普及,这些特定的工作必然会被大浪潮以另一种解决方案的形式给冲掉。
在这个浪潮下这种特定的需求只会越走越窄,最后局限在特定领域。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 10:44 , Processed in 0.090111 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表