链接:https://www.zhihu.com/question/436008648

声明:仅做学术分享,侵删

工业界里面numba用的多吗,还是说工业界主要还是直接写cuda?

作者:Chan Yu
https://www.zhihu.com/question/436008648/answer/1649590705

先放结论:基本上不需要,但是是很好的加分项!

纯算法岗的话接触CUDA一般是需要实现一些非常规算子来满足一些试验性质的算法尝试。

而大部分自定义算子无论是tensorflow还是pytorch都可以通过现阶段丰富的基本算子库来workaround。

再不济就是利用动态图的性质由numpy、py_func等实现然后手动定义反向梯度函数。

这里相对更重要的反而是算法工程师定义反传的能力。虽然不是什么特别难的工作,但不少算法岗的同学可能也没仔细思考过最基础的矩阵乘法怎么定义grad,或者不清楚tensorflow或者pytorch的autograd机制而导致无从下手。

然后提到CUDA最大的关心点必然是性能。无论是速度还是显存都有可能通过CUDA开发来过得极大的提升,一般体现在访存效率、数据结构设计、算子融合等技巧上。事实上从个人经验来说,有时候自己实现的算子库跑模型很容易比native的tensorflow快两到三倍,如果是一些特殊情况,十几甚至极限情况上百倍也有可能。并且合理的设计比起生硬的用原生算子能够大大减少显存开销,这对于训练和推理都是有极大益处的。

但是,CUDA开发有些不小的成本,特别是对于算法研究,灵活性非常重要。可能要短时间里尝试很多种不同的自定义算子,这时候堆机器能解决的话一般先不急着进行深层次的优化,而且在整个网络结构确定下来之前,很难进行最终的优化。除非有特别高频使用的算子,优化前后的差距非常明显(比如对整体的影响5倍左右,无论是显存还是速度)才可以考虑进行个别算子的优化。万一一通CUDA操作下来,模型效果提升不明显,最终的时间/人力成本不一定划算。我更倾向于尽量先验证算法再进行优化。

此外,涉及到这么深层次的研究,并且CUDA优化非常必要的情况,一般公司都会有专门的HPC组或者团队接手了,或者可能就该思考为什么通用的算子不能满足需求。

再说下CUDA开发的成本。C/CPP本身的编写和调试难度就不提了,CUDA C基本就是小半个新语言,Debug逻辑也是全新的。如果为了极限性能进行魔改然后遇到一些非法的显存访问更是头疼,不过现在各类nv的可视化调试工具出来了应该体验会好很多。一些初入坑的同学可能会觉得把算子换成cudnn api就好了,但其实很多时候性能瓶颈是来自于访存效率,这往往意味着需要写新的kernal来融合算子,亲自掌控显存/缓存的管理。工作量特别是调试上会比想象的大很多。如果只是简单换下cudnn,很可能反而增大了潜在的数据拷贝开销导致性能变差。这里面的各方面经验需要长时间的积累,要不就交给专业的团队做,要不就自己长时间保持这方面的学习实践。基本上不会作为一个算法工程师的必备素质。

但是如果拥有这样的视野对于算法工程师来说是非常好的,即使没有用到,平时也能在设计模型时保持从性能和效率的角度思考问题,而不是局限于模型效果。工业界对于成本是非常看重的。

作者:DLing
https://www.zhihu.com/question/436008648/answer/1746022828

默认cv岗哈!

一般工作中用不到手撸cuda,但这位大神却时时刻刻在我们身边,每天在各种三方库中都能够见到,就是不大会直接去调用cuda函数。但是如果遇到性能瓶颈了,可能就得请cuda大神出场了。

比如,现在要优化模型推理性能,剪枝,蒸馏,量化一大通操作下来,模型纯推理时间由30ms降到15ms,性能翻倍,感觉不错,但是一看数据预处理,耗时10ms,模型后处理耗时15ms,算下来处理数据花的时间比我模型推理花的时间还要长。这时候,cuda大神就可以上场了,我们把预处理和后处理搬到cuda上,一测,预处理,后处理共5ms就搞定了。这时候,报告一写,模型推理时间55ms降低到20ms,领导看后一顿夸,心里美滋滋,升职加薪不是梦。

再比如,最近模型指标一直上不去,看着三年前的老模型,一脸嫌弃,感觉是时候拥抱新模型了。然后各种顶会,博客看下来,找到了个三个月前刚发表的新论文,华丽的辞藻,sota的指标让你按捺不住,想赶快把它用在自己的工程中,结果github上没找到开源代码。这时候,cuda大神又可以上场了,熬几个通宵,把论文中跳动的字符转换成cuda实现的美丽算子,然后模型一训,数据一测,指标提了3个点,老板看后又一顿夸,心里又美滋滋,升职加薪又不是梦。

cuda的作用很多,水也很深,一般做cv方向手撸cuda的机会还真不多,但是真的用上的时候,大概率是用来解决重大问题的时候。多了解了解,用的6确实可以算是自己很大的加分项。

作者:oldpan

https://www.zhihu.com/question/436008648/answer/1707546242

看业务方向,比如我主要负责模型开发和模型部署,前者主要是python后者是C++和cuda。

我们组也有只写python训练模型研究模型改进模型搭建服务的,加速任务交给其他人或者我来搞。

如果只是模型开发的话,我们一般都是使用框架,例如pytorch。大概率不需要自己写cuda,只要能够看懂一些cuda代码并且能够以正确姿势白嫖其他人造好的cuda轮子即可。因为大部分的op都有cuda版本,例如dcn,你训练模型可以直接白嫖用。

但是如果涉及到了部署和模型加速或者模型要上服务器,只要你的模型需要快速运行在GPU上。就需要自己写一些加速的cuda代码,前处理或者后处理或者模型中某个op,也是类似dcn这样的自定义op。例如TensorRT或者triton-server,需要自己写一些自定义插件,用cuda和c++写,目的就是为了加速。

就算业务上没有使用cuda的地方,也可以学学cuda并行语言的思想。并行思想和普通的串行差距还是蛮大,有一定的代沟,需要时间过渡。

作者:haichuan
https://www.zhihu.com/question/436008648/answer/1768209276

非深度学习的cv需要的。深度学习有通用的框架,各家大厂都有做自己的框架,例如腾讯的TNN。但是传统的计算机视觉没有这种框架,也没有所谓的神经网络,算法种类多种多样,也不可能有人帮你开发推理框架。

为了提升效率,需要在gpu上跑数据的,算法也是自己写的,通常效率估计比不上专门写框架的人,但是至少比在CPU上快好多倍。

作者:知乎用户
https://www.zhihu.com/question/436008648/answer/1683251210

95%的算法岗都不需要。

真实的故事:我同事,再来英伟达前申请的G社,二轮电话面试被刷。原因是不能熟练的撸一个b树被刷。该同事的背景是当时德国某校Assistant Professor,出版两本CUDA和并行编程书,可以熟练撸PTX。当时人家还跟G社争吵说可以提供性能相当的二叉树CUDA实现,被拒绝并说不需要。

我只能说,前世界上95%的算法和码农岗位都不需要你能够GPU编程,刷好题比这些都重要。

当然了,前一阵G社回来反挖失败那就是另一回事了。

评论圈有人说既然选了G社,就应该知道需要刷题,这属于准备不善。确实,我同事后来也是这么说的,当时根本就没有准备刷题,因为本身也没准备去做码农,抱着试试看的心理去了。

至于这类数据结构和算法轮子,大家千万不要认为用不到刷的题属于无用功。其实即便是用pytorch写炼丹算法还是要注意这些的。比如什么情况会造成新分配内存啊,何时内存会被copy啊,等等。轮子的基础越深,最后的车的舒适度,性能也越好,这是肯定的。

作者:知乎用户 https://www.zhihu.com/question/436008648/answer/1651056548

这个是基本功,逃不掉的。

当研究员的话,总会碰到现有op无法组合出新提出的算法的情况,有的时候可以强行组合但效率非常低,也是需要自己写的。

当工程师的话,为了提高模型速度,会写cuda,甚至会优化cuda都是必备技能。


【知乎热议】算法岗平时需要自己写cuda吗?相关推荐

  1. 知乎热议:21 届校招应届生 Offer 薪资曝光,年薪 35 万+,严重倒挂老员工是互联网行业常态?...

    点击上方"五分钟学算法",选择"星标"公众号 重磅干货,第一时间送达 杨净 贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一开始,还以为是科技互 ...

  2. 知乎热议:发Top5和FieldTop是什么感觉?

    全文阅读:知乎热议:发 Top 5 和 Field Top 是什么感觉?| 连享会主页 目录 1. 写在前面 2. Top 5 发表体验 3. Field Top 发表体验 4. Top 5.Fiel ...

  3. ei计算机投稿 知乎,知乎热议:科研有很水的idea应该发表出来吗?

    原标题:知乎热议:科研有很水的idea应该发表出来吗? 科研有很水的idea应该发表出来吗? - 来源:https://www.zhihu.com/question/372648294 小伙伴们,对于 ...

  4. 知乎热议“如何看待 2022 年秋招算法岗人间地狱”

    本文转载自IT之家 今年校招算法岗就业形势有多严峻?知乎热榜用一个词评价:"人间地狱".好家伙,去年对于该问题用的还是阳间词汇"灰飞烟灭",今年就开始唠阴间嗑了 ...

  5. 【知乎热议】视觉算法的工业部署及落地方面的技术知识,怎么学?

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要10分钟 Follow小博主,每天更新前沿干货 编辑:深度学习技术前沿 转载请注明来源 [导读]目前人工智能技术在工业视觉领域的应用逐渐火热起 ...

  6. 知乎热议:周志华弟子 旷视南京负责人跳槽高校

    来源 | 知乎 编辑 | 安然 转自 | 图灵TOPAI 参考链接:https://www.zhihu.com/question/404733616 近日,旷视南京负责人魏秀参跳槽去了南京理工大学,引 ...

  7. 知乎热议:28岁郭宇期权过亿,彪悍从字节退休,旅居日本开温泉酒店

    点击上方"视学算法",选择"星标" 干货第一时间送达 整理:公众号@新智元 本文仅做学术分享,如有侵权,请联系删除. 最近28岁程序员郭宇宣布退休上了知乎热搜. ...

  8. 知乎热议:科研界是如何保护自己的成果免于剽窃的?

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 近日,美国加州大学付向东教授实名举报中科院杨辉教授学术抄袭一事引起了学界热议,这一话题更是在当天霸占了 ...

  9. 知乎热议:杨辉团队公开否认抄袭,网友:避重就轻仍谎称「首创」

    导读:近日,加州大学圣地亚哥分校付向东教授实名举报中科院上海神经所杨辉抄袭事件又有了新进展,杨辉团队做出书面回应否认抄袭,引发知乎网友热议. 杨辉团队回应,不存在抄袭 此前,Bioart报道了杨辉团队 ...

最新文章

  1. WIFI航模图传模块
  2. hdu4940 有上下界的无源可行流判断
  3. 深入讲解微信小程序上传图片与JAVA后台的结合
  4. 64位win7中使用vs2013为python3.4安装pycrypto-2.6.1插件报Unable to find vcvarsall.bat异常解决方式...
  5. 窗口分析函数_3_生成不间断重复排名序号
  6. react组件卸载调用的方法_好程序员web前端培训分享React学习笔记(三)
  7. 驱动框架1——什么是驱动框架?
  8. C# 多线程同步和线程通信
  9. myeclipse读取mysql表中数据_在myeclipse中连接mysql查询数据
  10. 【HDOJ7055】Yiwen with Sqc(字符串,区间出现次数平方和,两次差分)
  11. Linux死锁检测-Lockdep
  12. bin文件用cad打开_bin文件怎么打开?实测可靠方法
  13. 2020届秋招中兴笔试题
  14. 资产标签二维码方案设计
  15. 仿网易云音乐的YY音乐微信小程序源码
  16. 【MATLAB】基于油猴脚本和MATLAB下载原创力文档
  17. 常用计算机辅助审计技术,常用的计算机辅助审计技术
  18. Spark的调度流程(任务调度+资源调度)
  19. 终于弄懂了origin批量制图
  20. 宝塔面板分析网站蜘蛛日志?

热门文章

  1. ASP.NET页面动态添加js脚本
  2. MediaCoder转移动设备MP4(高清)
  3. table和div在页面布局上应该注意的问题
  4. Linux上制作可执行的共享库示例
  5. 中传计算机应用研究生分数线,2018中国传媒大学考研复试分数线(含2016-2018年)...
  6. python DataFrame的合并方法总结
  7. neo4j客户端下载
  8. 一文读懂BERT 历史背景 代码github
  9. neo4j仅仅删除关系的语句,注意neo4j是不能删除含有关系的节点的
  10. SQL2000 好书 《SQL Server 2000数据库管理与开发技术大全》----求是科技 人民邮电出版社