初学者如何系统入门大语言模型(LLM)?
关于如何入门 LLM,大多数回答都提到了调用 API、训练微调和应用。但是大模型更新迭代太快,这个月发布的大模型打榜成功,仅仅过了一个月就被其他模型超越。训练微调也已经不是难事,有大量开源的微调框架(llamafactory、firefly 等),你只要懂部署,配置几个参数就能启动训练。甚至现在有大量云上项目,你根本不需要部署,直接上传数据,就能启动。
本文针对初学者提供大语言模型入门路径,涵盖编程基础、核心原理及应用实践。重点讲解 Python 与 PyTorch 在深度学习中的应用,深入剖析 Transformer 架构中的自注意力机制、位置编码、前馈网络及归一化技术,并介绍微调、RAG 和 Agent 等主流应用场景,帮助读者建立系统化的知识体系。

关于如何入门 LLM,大多数回答都提到了调用 API、训练微调和应用。但是大模型更新迭代太快,这个月发布的大模型打榜成功,仅仅过了一个月就被其他模型超越。训练微调也已经不是难事,有大量开源的微调框架(llamafactory、firefly 等),你只要懂部署,配置几个参数就能启动训练。甚至现在有大量云上项目,你根本不需要部署,直接上传数据,就能启动。
这让人联想到之前的算法工程师都被调侃成调参师,新出一个大模型,下载下来跑一遍,运行一遍 AutoTokenizer.from_pretrained(model_path),对于自己理解和入门大模型没有任何意义。
对于初学者如何入门,我的建议是从一个开源大模型入手,全面了解它的运行原理以及如何应用。可以将大模型比作一辆车,我开车无需理解车是如何做的,但是车出问题了,了解原理能够帮我们快速找到其中的问题。
为了更好入门大模型,我建议按照以下顺序学习,分为编程基础准备、大模型原理理解和大模型应用三个部分。
我一般使用 numpy 用于数据处理,matplotlib 用于画图分析(比如分析位置编码、注意力矩阵)。numpy 很多函数与 pytorch 类似放后面讲,这里主要讲常用的 matplotlib 画图函数,学好 matplotlib 库有利于我们以可视化的角度去理解一些大模型原理。
plt.bar(x, y, width): 绘制柱状图。
![图:Llama3 8B 参数分布直方图]
举个例子,画直方图分析 llama3 8B 中参数分布情况,可以发现有 2 个峰值,分别是 embedding 层和最后输出 logits 层,两者参数量一致。
plt.plot(x, y, width): 绘制折线图。
![图:RoPE 位置编码向量变化曲线]
举个例子,画点图分析 llama3 8B 中的位置编码 RoPE。在同一位置 m 下,可以发现向量中的元素,在 i 比较小的时候变化较快,i 较大的时候变化较慢。
plt.colorbar(x, y): 添加颜色条。
![图:Attention 矩阵热力图]
举个例子,画热力图分析 llama3 8B 中的 Attention 矩阵。我的 input 为"The boy didn't cross the street because he was too ",要预测下一个词。观察第 10 行(分析注意力矩阵都是以行为单位)可以发现"he"这个 token 与"boy"这个 token 关联度很高,而不是"street"这个 token。
所以说画图很重要,深度学习本质上都是矩阵运算,单看数字看不出什么结论,需要结合画图等可视化工具分析。
目前主流大模型基本上都是用 pytorch 写的,pytorch 语法太多了,下面介绍在LLM 中常用的 pytorch 语法(排序不分先后)。
torch.nn.Embedding(num_embeddings, embedding_dim...)其中 num_embeddings 代表词表的大小,embedding_dim 代表词向量的维度。embedding.weight 的 size 为 [num_embeddings, embedding_dim]。举个例子,输入索引 i,输出 embedding.weight 的第 i 行。
torch.matmul(x,y)、x*y、torch.dot(x,y) 与 torch.mul(x,y) 之间的区别其中 torch.matmul(x,y) 代表矩阵相乘,torch.mul(x,y) 与 x*y 均代表矩阵对应元素相乘,torch.dot(x,y) 代表向量之间的点积。
torch.full(size, fill_value)用于创建全填充值的张量。
![图:torch_full 示例]
torch.triu(x)用于提取上三角矩阵,常用于注意力机制中的 mask 计算,防止未来信息泄露。
![图:triu 掩码示例]
torch.outer(x,y)一般用于大模型位置编码计算中,比如正弦余弦位置编码、相对位置编码、旋转位置编码等。
![图:outer 操作示例]
torch.view_as_complex(x)大模型位置编码有两种计算方法,一种是在实数域计算、一种是复数域计算。该函数一般用于复数域计算。
![图:view_as_complex 示例]
torch.view_as_real(x)同上,将复数张量转换为实数张量。
![图:view_as_real 示例]
torch.reshape(input, shape) 和 torch.view(input, shape)我建议从内存分配的角度来理解 reshape。无论一个张量 shape 怎么改变,它的分量在内存中的存储顺序也是不变的。如果张量不连续,view 可能会失败,而 reshape 会尝试复制数据。
![图:reshape 与 view 内存布局对比]
torch.transpose(tensor, dim0, dim1) 和 torch.permute(dim0, dim1, dim2, dim3)两者均代表矩阵的转置,在二维的时候很容易想明白转置之后的情况,但是高维度的时候就糊涂了。举个例子:
![图:transpose 与 permute 三维数组示例]
上面这个三维数组例子,我定义为(batch,H,W),transpose(1,2) 等效于长和宽转置。类似这样的例子我们已经练习过很多次了。
不过如何理解 arr.transpose(0,1)?,batch 和 H 维度转置没有物理含义。这需要借用矩阵 stride 概念来理解。
torch.cat 和 torch.stack 的区别torch.cat 是沿着现有维度拼接,增加的是维度长度;torch.stack 是增加一个新的维度。
torch.rsqrt(倒数平方根)、tensor.pow(幂运算)、torch.mean(均值)等等。
简单来说通过基于 Transformer 架构预测下一个词出现的概率。就不放论文里的图了。我这里放一张 llama3-8B 的网络架构图。这个网络架构里的每一个模块,你都能手写出来,就算是大模型原理这一块入门了。
建议学习网络架构的时候带着问题去学习,不要局限于矩阵中的元素怎么乘,pytorch 语法只是工具,真正需要做的是思考为什么这样做以及背后的数学含义。
![图:Llama3-8B 网络架构图]
attention is all you need 这篇文章中的多头注意力机制,分析为什么要多头?单头注意力机制为什么不行?多头允许模型在不同的表示子空间中关注不同位置的信息。上面四点弄明白,对于注意力机制差不多算入门了。
学习 AI 大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习 AI 大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握 AI 大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。
此外,学习 AI 大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。因此,学习 AI 大模型是一项有前景且值得投入的时间和精力的重要选择。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online