一片自留地 我的 2020

magicyang · 2020年12月30日 · 688 次阅读

这一年经历了很多。(貌似这几年每年都经历了很多。。。)

新方向的开始

随着年龄的增长,发现纯数学的东西已经离我过远了。专心做工程和算法的结合。
入职的前半年,开发发现自己的各项能力都很难满足一个优秀的算法工程师的要求,主要在做项目经理和需求相关的工作,代码改的并不多,也在不断怀疑这是不是我要走的路。
2020 年开始,算法方面和现场的沟通不再是最重要的事情,领导觉得我薪水高要做更技术的方向,开始了新的折腾。

新的方向

我 2015-2018 年做了 3 年的移动端开发,后面也接触过算法到移动端的移植。
因此这时候的方向就是把模型转化到异构计算的框架上去。
当时华为还没有被美国彻底制裁,同时由于中美关系的紧张化,选了华为的昇腾框架做移植。

填坑的开始

这部分工作主要是从 2 月做到 6 月,完成了一个算子的转化框架,将 ONNX 的模型转化成昇腾支持的 TF 模型,适配我们基本所有的模型。
做了一个工程的 DEMO,可以简单收发识别图片信息。
对于深度学习的网络来说,每个网络都是由多个计算节点拼接而成的。
通常情况下,神经网络的图都是有向无环图,图中的节点是算子。
从算子到硬件能识别的指令需要编译器(华为基于 TVM 的实现,不开源),需要图运行、内部资源的调度程序(不开源)。
因此对于第三方厂商能做的就是把模型转化成华为能认识的模型。
但是对于任何程序,都会有普适性和专用性的平衡
在异构计算领域,华为并没有英伟达、AMD、INTEL(INTEL 的也很难用) 的积累,所以适配过程中难点重重

矛盾的积累

当外行领导一周提一次不切实际的目标,然后你又知道你很菜,很多东西都不知道的时候,压力就会非常非常的大。
同时你所有的劳动成果都成了别人的 PPT,而你只是没有名字写代码的。呵呵。。。
最后你发现靠你自己,一个人独立的写着代码,坐等替啥也不干的人背锅。出去大概率也只能找同样坑的职位。
开始每周日的晚上都睡不着,埋怨自己为什么年轻的时候没有勇于跳出测试,选了安逸。导致能力不匹配年龄,在这每天都是煎熬。

更新的折腾

领导说了,我们异构计算要牛逼,要懂汇编,要能自己定制。(其实他啥也不懂,我一般说到第四句话,他就听不懂了。)
我前面跟领导说公司没钱,你项目不能这么搞,一直强调性能但是不落地是不行的。他说项目落地那是他的事情,你就写代码把模型加速好了。(吵了 2 个月,实在是无力改变了,那我就自己玩自己的吧。)
PS:这也是我现在努力的方向,国内奇缺,难度极大,国内只有 TOP 的 3-5 个实验室做类似的方向。可以了解一下什么是 CS 的三大浪漫,这三大浪漫都要会。
在异构计算的核心是什么,是速度!
在 CPU 类的计算优先的是逻辑,速度是最后一英里的事情。而对异构计算来说这是基础。
靠什么来加速?靠硬件设计更快的指令加上编译器优化加上更好的操作系统调度。
同时由于落地的要求,普适性要求也越来越高,普适性是更难的,英伟达花了 10 年的时间做 CUDA。
无知的自己从 5 月份开始走读神经网络编译器 TVM 的代码,开始越来越发现自己的基础极其薄弱。
从数据结构到操作系统、计算机组成原理、编译原理。理解下面,才能再到之上的并行计算,编译器。

面对焦虑

坦然面对自己菜和迟早被裁的命运。开始依靠吃药主动干预心理状态。
依靠上班摸鱼,上班学习和下班学习的方式提升自己的能力。

2020 的结局

12-28 是协商的离职时间。从 11 月开始下了决心,离职调整心态用最愚蠢的方法来学习。
做题 + 学习课程 + 走读代码 + 写代码走读总结。
开局就不太顺利:最近在打 LEETCODE 的周赛,基本只能做对 2 题,偶尔 3 题;太差了,哎。。。
推荐大家看一下 CS61B(正在刷),这是 JAVA 版的,如果用 C++ 可以结合 STL 标准库来看。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册