背景
大家好,我是揽月,开年以来,deepseek(后续简称ds)引爆了学习、应用大模型的浪潮。受工作原因,需要深入了解大模型原理,疯狂啃相关知识,目前算小有成果。在公司内分享deepseek核心技术细节,反响不错, 意识到很多人其实有学习的诉求, 分享下我的学习过程。
ps: 本人软件工程专业,掌握线性代数、概率论基本概念,熟悉python, 去年有使用大模型做一些样本清洗工作,也仅限prompt调用而已, 所以你只需有基本的数学知识和python知识即可。
第一阶段(初探R1论文):
先了解DS-R1/V3相关的分享(诸如核心技术详解之类的视频和PPT),但是也就是走马观花,稍微一深就不知道了。
鬼使神差打开了R1的论文,R1论文不长,写的特别清晰,核心三个工作点,通过读论文,了解了什么是推理模型,对SFT,COT、RL有了基本的认识,最主要是知道了V3是怎么进化到R1的。
虽然不清楚具体怎么做,数据怎么构建,能看懂别人分享说的,谁说到点子上,谁在胡诌了,论文才是一手准确资源。这其中只涉及到大模型调用,没有任何深入知识,不用畏难,建议一读。
第二阶段,transformer学习阶段
根据读r1论文的信心,开始看V3论文,涉及到了大模型的内部细节,各种数学公式和架构原理,直接懵逼,完全看不下去,比如KVCache是啥,为啥要优化。
目前所有的大模型的底层都是基于transformer架构来的,因此要想弄清楚各种大模型的架构特点以及各种优化的技术细节到底是啥,必须先弄清楚transformer是啥。所以开启了transformer学习的路程,即下图。在学习之前需要对线性代数(向量、矩阵运算加乘)有了解才行。
主要分为这几个部分
- 分词+embedding
- 位置编码
- 注意力机制,多头注意力
- add和Norm归一化
- 神经网络
- 解码器
在之前对分词+embedding有了基本的认识,但是有个点很困惑我,就是最终输出是预测字典中所有字的概率,然后取最大概率的那个,这计算量很大呀,怎么行的通。
就好比“我爱中”、要把整个汉字全集的字的所有概率全部计算出来得到“国”字概率最大,开发出身的我对这种这么大的计算量一直很抵触,但实际就是这么大的计算量,要颠覆自己对计算量的局限认知。
核心是理解注意力机制,理解QKV的概念,这个其实就是矩阵运算,但是为什么是QKV,我是先理解清楚了计算过程,然后在某站看了一些关于注意力的讲解视频,才理解的,这部分一定要有耐心多花时间。
神经网络部分:从研究生时期就没搞懂梯度下降反向传播是怎么更新参数的,这次看就突然明白了,以前想复杂了,参数更新一定是先计算出结果,然后再根据结果和真实差距(即损失函数),就是得到偏导值,然后根据学习率更新参数。这地方可以先跳过,只需知道就是多个神经元组成的网络就行,理解网络结构,先别纠结参数是怎么更新的。
这部分搞完以后,再了解3中transformer结构,你就能看懂大模型的结构了。你就能理解什么是KVcache,大模型参数7B, 72B 671B到底是啥了,进一步可以看懂各种优化到底在优化啥了。
第三阶段:硬啃MLA\MOE\MLP基础
这里最好啃的是MLA,建议先啃这个,很有巧思。也能理解低秩矩阵是啥、矩阵吸收是啥,敢看论文中的公式了,为啥要做KVCache, 有哪些方式,DS的创新到底是啥了,自信是一步步建立的。
MOE和MLP更难啃,但是你能够知道它在干啥了,至于为啥效果好,通过实验证明,我也是啃了好几天才理解清楚。这部分只需知道作用在结构那部分,比如MOE是针对FFN的,不是针对MLA的。MLP在实际推理中并没有使用。
第四阶段:代码阶段
前面阶段都是论文、公式理解阶段,看了以后你能看懂别人说的一些事,但是实际你要是要玩代码的。
1. 学习pytorch
pytorch基础需要学习下,不用弄的太懂,只需知道张量定义、自动微分、神经网络怎么定义的,模型训练流程就好了,最最明确了,你能跑一遍使用神经网络来进行房价预测模型就够了,RNN\CNN不需要,重要是理解模型是啥,什么是训练,什么是推理。
2. 学习huggingface 的transformers库
它是一个python库,不是之前说的transformer模型,跟着例子走一遍,拉一两个模型下来,跑跑感受下。
第五阶段:拓展延伸
能走到这,个人感觉就登堂入室了,根据实际场景个人爱好进行特定的学习。
- nlp bert
- 大模型训练过程、分布式并行训练
- 微调怎么搞,lora原理
- 强化学习怎么搞
- 大模型推理优化
- RAG文档切割细节
- 目前主流方向是啥
总结
目前AI的学习可以分为原理和应用,学习原理可以更好地帮助你做自己的AI产品(for公司和创业者),对于普通人,侧重于学习AI产品如何用就好了,比如如何写好prompt,如何使用AI Agent平台搭建智能体等。
对于学习原理的人来说,一些学习建议:
1. 有些知识点知道是干什么的,有什么用即可,先建立整体认知,再细究细节。比如LayerNorm,RMSNorm,看到这里你知道它是归一化的一种方法,目的是缓解梯度消失/爆炸问题,加快模型收敛速度,提升稳定性即可,原理和公式先不细究。
2. 对于核心知识点,不给自己设限,大胆想然后论证,尝试通过多种学习方式(B站、咨询大牛、某乎文章)等等攻破它,多坚持一下,后面就是康庄大道。比如注意力机制。
3. 多利用大模型辅助我们学习,解答我们的困惑,真是我们学习的利器,比如我会问:解释下QKV是什么、低秩矩阵是什么给个例子、QKV全部用原始输入自身行不行等等。
其实目前的AI迭代速度引发了很多焦虑,包括我自己——缓解焦虑的最好方式就是脚踏实地一步步的学习。