了解/从事机器学习/深度学习系统相关的研究需要什么样的知识结构?

作者:袁进辉
链接:https://www.zhihu.com/question/315611053/answer/676815240
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

以开发深度学习框架为例:

1,熟悉常见深度学习模型,CNN, GAN, RNN/LSTM, BERT, Transformer;

2,熟悉后向误差传播算法(BP),完成从标量求导到矩阵求导思维方式的转换,熟悉常见算子的梯度推导(矩阵乘,卷积, 池化,Relu,如果会batch normalization 就一步到位了);

3,熟悉autograd的基本原理,能自己手撸一个最好;

4,熟悉cuda编程(举一反三),熟悉cuda高阶用法,event, stream, 异步/同步,会优化常见cuda kernel, element-wise, reduce, broadcast, MatMul, conv, pooling 等;

5,熟悉c++和python, 对c++高级用法感到舒服,各种模式,惯用法,模板;熟悉vim, gdb 程序调试;

6,熟悉socket, RDMA编程,熟悉常见collective operation代价分析,譬如ring allreduce, tree allreduce 代价分析;

7,熟悉多线程编程,熟悉锁,条件变量,内核线程,用户级线程,对actor, CSP(coroutine)各种技术熟悉;

8,熟悉编译器基本原理,parser什么的不重要,主要是dataflow分析,灵活运用;熟悉多重循环程序优化技巧,譬如polyhedral 模型;

9,熟悉常见分布式系统原理,mapreduce, spark, flink, tensorflow 等;

10,熟悉计算机体系机构,量化分析方法,Amdahl' Law, Roofline Model, 流水线分析(譬如David Patterson 那本书);

11,熟悉操作系统原理及常用系统诊断工具,譬如各种资源利用率分析;

12,programming language 原理,命令式编程,函数式编程,逻辑编程,入门书《程序的构造与解释》?

以上只是知识和技能,我认为最重要的是直觉,洞见,创造能力。

暂时先想到这些,如果都符合,绝对挺多企业想要你。我们也需要:)

原文地址:https://www.cnblogs.com/focus-z/p/10835910.html