Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Answers of DL_list #1

Open
Liyulingyue opened this issue Jan 26, 2023 · 5 comments
Open

Answers of DL_list #1

Liyulingyue opened this issue Jan 26, 2023 · 5 comments

Comments

@Liyulingyue
Copy link
Collaborator

Liyulingyue commented Jan 26, 2023

关于本Issue:

框架基础原理(必修)

方向 概念 参考资料
综合 深度学习框架 深度学习框架可以被看做是一个库,使用该库提供的API接口,可以快捷高效的构造、训练和使用神经网络。以numpy为例,使用numpy可以通过调用numpy中实现过的方法进行矩阵运算,如果不使用numpy,则需要写多个循环,以对两个矩阵的各个元素进行相乘或相加。深度学习框架对于神经网络的作用,与numpy对于矩阵的作用是类似的。
数据结构 Tensor 与数组这个概念没有差别。称呼的起源可能源于物理名词“张量”,对于一般开发者而言,只需要理解为数组在神经网络中的一种称呼即可。
算子(OP, Operater) 一个函数,例如卷积OP,调用卷积OP即可实现卷积计算。通常来说,可以认为OP是较为底层的实现,封装了一些通用性较高的函数;而API可以认为是较为上层的函数,调用OP
Kernel 比OP更小的函数单元,例如,一维卷积,二维卷积,三维卷积等
广播机制 矩阵的扩张策略。两个矩阵进行运算时需要保证两个矩阵具有符合要求的形状,如果两个矩阵的形状不同,广播机制可以将矩阵扩张为符合要求的形状。例如[1, 1]+[1, 2]=[2, 3],虽然[1]和[1, 2]形状不同,但[1]可以被扩张为[1, 1]从而使得[1]+[1,2]=[2,3]。
计算图 计算图(Computational Graph) 流程图
计算图控制流 -
计算图生成方式1:静态图 Unimportant - 对全部语句生成图
计算图生成方式2:动态图 Unimportant - 依赖于单一语句的算子优化/功能分发
静态图 声明式编程。即类似于C的一种编程方式:首先需要在代码中对变量和逻辑进行声明,然后编译并运行;静态图类似的,需要通过一些语句设定输入输出变量,然后统一地运行。
动态图 命令式编程。即更为贴合Python的一种编程方式。以x变量的赋值为例,在动态图中,可以通过x = paddle.uniform([1])创建变量,运行语句后,即可对x进行运算,并且实时获取运算结果;在静态图中,需要声明x,写入计算逻辑y = f(x),并通过run()或者其他api执行上述语句,才能得到运算结果。从最终来看,两者没有区分,但从计算的角度来说,动态图更加便于调试。
计算图调度 运筹规划,即对于给定的需求,适当的调整代码执行顺序,从而让程序运行的更快。
自动微分 数值微分 即记录相邻周期某一个神经网络中的元素的值,以差值作为该点的梯度
符号微分 类似于手动进行微分求导,参考matlab微分即可
自动微分 通过框架内部机制,将命令/代码进行拆解,并逐步求出结果
雅克比矩阵 unimportant,用于给出不同隐藏层之间的导数关系,除此之外似乎没啥用
飞桨自动微分机制 更适合称之为微分机制,而非自动微分机制。即计算时记录对应的结果,并计算对应的梯度
... ...

模型组网(待定)

工程实践(待定)

方向 概念 参考资料
Git git项目管理 -
CI流水线 -
优化 图优化
编译优化(硬件相关 & 硬件无关) 优化编译的过程/流程
混合精度训练 即部分参数精度16位,部分32位
Jit(just in time) 一种编译策略
部署 模型压缩 通过一些方式减小模型的大小,例如,将linear(8,4)减小为linear(8,2),但产生的效果非常接近,极为成功的压缩
模型推理(训练和推理的区别) 训练时需要进行梯度计算,推理则不需要
推理框架 类似于深度学习框架,一个简单好用的API库。通常,我们可以用相同的框架进行训练和推理,但出于更高程度的要求,例如需要推理速度非常快,则可以在训练和推理使用不同的框架。
... ...
分布式训练 分布式训练 即使用多个设备/CPU/GPU进行训练,用于提高训练效率。为什么分布式训练是个难点:以文档攥写为例,每个人都从头进行文档攥写,则过去了一段时间后,我们只能够获得一份文档,其他的文档都是重复性工作;因而神经网络在训练过程中,需要注重信息的交互,即梯度信息的反馈和综合。
@Liyulingyue
Copy link
Collaborator Author

@sunzhongkai588 孙师傅来看一下啦~我把一些感觉没啥必要&我不太懂的直接空着了哈哈哈哈

@sunzhongkai588
Copy link
Owner

非常感谢张师傅的春节贡献~太猛了,是个很精简的概念介绍。
关于unimportant的部分,我个人感觉是需要斟酌一下。
雅可比矩阵我理解,在自己手动实现自动微分时,是需要实现相关运算的雅可比矩阵才能做反向(如乘法的雅可比矩阵)
另外计算图的生成方式1、2,我本意是侧重于静态图和动态图是啥,不过看你后面补充了静态图动态图的定义,问题不大。

@a-strong-python
Copy link

a-strong-python commented Feb 27, 2023

@Liyulingyue 张师傅把问题解答都写完了,那我们岂不是只能疯狂修文档,合入PR了

@Liyulingyue
Copy link
Collaborator Author

@Liyulingyue 张师傅把问题解答都写完了,那我们岂不是只能疯狂修文档,合入PR了

你可以解答一个你更喜欢的版本~

@a-strong-python
Copy link

@Liyulingyue 张师傅把问题解答都写完了,那我们岂不是只能疯狂修文档,合入PR了

你可以解答一个你更喜欢的版本~

不了不了,我还是乖乖修文档吧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants