资讯详情

资讯详情

建站行业动态 · 设计趋势 · 数字化升级干货

关于大模型(2)必要的数学与深度学习基础

关于大模型(2)必要的数学与深度学习基础 2.1 线性代数——懂“机器在干什么”做大模型推理优化你永远不需要手动推演复杂矩阵公式PyTorch、CUDA、算子库会完成所有数值计算。但你必须看懂张量形状、运算规则、访存行为否则完全读不懂FlashAttention、PagedAttention、算子融合、Roofline性能分析的底层逻辑。张量Tensor核心定义张量是深度学习的统一数据载体本质是多维数值数组。0维张量标量单个数值如学习率、温度系数1维张量向量一组数如单个Token的Embedding2维张量矩阵二维表格如单层权重矩阵、单句输入特征3/4维张量高阶张量大模型主力形态包含批次、序列长度、头数、维度大模型里的所有数据输入嵌入、每层激活值、模型权重、梯度、KV Cache全部都是张量。PyTorch生态中几乎所有计算都是张量计算这是底层共识。矩阵乘法推理第一耗时算子Transformer 90%以上的推理耗时来源于矩阵乘法它是算力与显存带宽的核心消耗点。不需要背诵公式但必须牢记维度匹配规则[m, k] × [k, n] [m, n]。中间维度 k 必须严格相等本质是逐行逐列加权求和的批量并行计算。后续注意力机制的 Q × KT、投影层权重计算、FFN变换所有形状推导都依赖这条规则。点积与注意力的关系向量点积是矩阵乘法的最小单元物理意义是衡量两个向量的相似度。大模型注意力分数的核心逻辑就是 Query 向量与所有 Key 向量做批量点积得到全局相关性权重。必懂基础操作转置交换矩阵行列维度注意力计算中 K^T 就是为了适配矩阵乘法维度Softmax将任意实数向量映射为总和为1的概率分布把原始 logits 转化为可采样的Token概率归一化LayerNorm将特征约束在稳定分布区间避免层数加深后激活值爆炸或消失是大模型能深层堆叠的关键。学习心法数学不是用来手推的是用来看懂优化动机的。FlashAttention 的分块计算、分块 Softmax不需要你推导公式只要理解其核心目的——减少显存读写、规避大矩阵完整存储、降低访存开销就完全够用。【推理专属补充大模型张量维度标准】所有LLM推理代码、论文、框架vLLM/TensorRT-LLM统一默认输入维度规范这是后续看懂所有代码的基础常规 Transformer 输入形状[batch_size, seq_len, hidden_dim]batch_size批次并发请求数seq_len当前上下文总序列长度Prefill 阶段长度固定Decode 阶段每次1hidden_dim单Token嵌入维度如768、1024、4096多头注意力维度拆分[batch_size, seq_len, head_num, head_dim]推理中大量transpose、reshape、permute操作全部是为了适配多头矩阵乘法。绝大多数推理维度报错都源于多头维度变换不熟练。【矩阵乘法的计算密集 vs 访存密集】小矩阵乘法是计算密集型大模型超大矩阵乘法是访存密集型。这就是为什么大模型推理瓶颈永远是显存带宽矩阵计算的浮点算力足够快但反复读取几十GB的权重、KV缓存的速度跟不上计算速度GPU 计算单元频繁空等。后续 Roofline 模型分析、算子融合、权重预热全部基于该原理。2.2 微积分——推理不用反向但优化全靠它先做极简精准定义导数单变量函数的瞬时变化率梯度多变量函数的偏导数向量指向损失函数上升最快的方向参数更新取负梯度即下山收敛方向反向传播依托链式法则从损失函数开始逐层反向计算各参数梯度、更新权重的训练流程。关键区分训练阶段前向传播算预测、反向传播算梯度、更新参数推理阶段仅前向传播无梯度计算、无参数更新、无反向传播。那为什么推理优化必须懂梯度所有模型压缩、精度保全的核心依据都来自梯度信息量化梯度响应大的权重对输出影响敏感需要高精度保留梯度平缓的权重可低精度压缩剪枝梯度贡献极低的神经元/权重删除后几乎不影响模型输出蒸馏利用梯度差异拟合教师模型分布让小模型复刻大模型能力。总结梯度就是「参数重要性的标尺」推理不跑梯度但所有推理优化的取舍逻辑都由梯度决定。【为什么推理无梯度但校准需要梯度】纯生成推理阶段完全不需要梯度关闭梯度计算是最优解。但工业量化INT8/INT4、权重校准、敏感度分析环节必须开启少量梯度前向反向目的是统计权重对输出扰动的敏感程度。如果权重在梯度回传中变化极大说明该权重对语义输出至关重要不可粗暴压缩梯度几乎为0的权重属于冗余参数可大胆量化、剪枝。【梯度消失与推理精度的关系】训练阶段的梯度消失会导致模型收敛差推理阶段的残留影响是部分深层特征失效量化后更容易崩精度。这也是现代LLM全部使用SwiGLU、GELU替代ReLU的核心原因——稳定梯度流让模型在压缩后依然保有足够特征表达能力。2.3 概率论与信息论——解码采样的底层逻辑大模型自回归推理的本质不是精准计算是逐Token概率采样。模型永远不会“确定下一个字”只会输出一组概率分布再通过采样策略选出下一个Token。1. 核心流程模型最后一层输出原始logits无界实数→ 经 Softmax 归一化得到Token概率分布 → 依据采样策略筛选候选Token → 随机采样得到下一个Token。2. 三大核心采样超参工业界高频使用温度 Temperature调控概率分布的平滑程度T → 0分布极度尖锐等价贪婪解码永远选概率最高Token输出稳定、死板、无创造性T 1压缩长尾低概率Token输出严谨、逻辑性强适合问答、代码、推理场景T 1拉平概率分布激活更多长尾Token输出多样、发散适合文案、创作、闲聊场景。Top-K强制只保留概率最高的 K 个Token截断所有低概率候选杜绝离谱Token输出缺点是固定K值无法适配不同分布场景。Top-P核采样动态截断按概率从高到低累加直至累计概率达到阈值P仅保留该集合内的Token。工业界默认优先用Top-P兼顾稳定性和多样性。3. 信息论困惑度 PerplexityPPL公式PPL 2CrossEntropy是衡量模型生成质量与置信度的核心指标。PPL越低模型对上下文预测越自信输出越贴合训练分布PPL越高模型预测不确定性越强越容易出现语病、乱码、幻觉。后续量化、剪枝、蒸馏实验中PPL是判断模型精度是否受损的黄金指标比肉眼观察文本更客观。总结模型输出是概率温度控创意度Top-K/P控容错率困惑度控模型靠谱程度。【补充采样组合策略】真实业务中不会单独只用 Top-K 或 Top-P都是组合使用先 Top-K 截断极大范围候选再 Top-P 动态筛选最后温度缩放。既避免固定K值的僵硬又杜绝极低概率垃圾Token生成。【温度的数学逻辑】温度T是对logits缩放而非对概率缩放prob softmax(logits / T)。很多新手误以为直接改概率这是错误认知。T越小logits差距被放大概率两极分化越严重T越大logits被抹平概率越均匀。【PPL工程补充】PPL仅能在有标注上下文下计算无法对纯生成文本计算。在推理优化中我们用PPL做量化/剪枝前后精度对比优化后PPL小幅上升可接受大幅暴涨说明模型语义崩坏优化过度。2.4 神经网络基础——看懂Transformer的底层骨架所有深度学习模型的底层逻辑完全统一线性变换 非线性激活 层级堆叠。大模型没有颠覆基础网络只是极致放大了宽度、深度与参数量。1. 单层网络核心逻辑y Activation(Wx b)。W为权重矩阵可学习参数b为偏置线性变换负责特征映射激活函数负责引入非线性能力——没有激活函数无论堆叠多少层网络都等价于单层线性变换无法拟合复杂语义。2. 大模型激活函数特殊选型传统CNN、小型NLP模型多用ReLU但现代LLM几乎弃用ReLU主流标配为GELU、SwiGLU。SwiGLU更是LLaMA、GPT系列的核心激活函数拥有更平滑的梯度、更少的梯度消失、更强的特征拟合能力。3. 前向与反向的最终区分前向传播输入逐层计算输出logits推理唯一流程反向传播计算损失、回传梯度、更新参数仅训练使用大模型核心特点超大参数量导致权重体积巨大推理瓶颈从“算力不足”变为“显存访存不足”这是所有优化的起点。【残差连接对推理的意义】深层大模型全部依赖残差连接Residual Connection实现深层堆叠。推理中残差是简单张量加法计算量几乎为0但保证了长序列、深层模型的特征不衰减是大模型能深层堆叠的结构基础。【补充LayerNorm 推理细节】Transformer 有两处归一化Pre-LN现代LLM主流、Post-LN。LLaMA、GPT 全部使用 Pre-LN即先归一化、再计算注意力/FFN。推理场景下LayerNorm 是高频小算子单步耗时极低但迭代次数多累计开销不可忽视后续的算子融合将Norm矩阵乘法融合为单个CUDA核就是针对该场景的经典优化。2.5 PyTorch核心实操——推理必备、极简够用版线性代数张量维度规范、矩阵乘法维度匹配、注意力点积相似度、LayerNorm作用、访存密集特性微积分训练/推理梯度差异、梯度权重重要性、压缩优化的底层取舍依据概率论logits→概率转换、温度/TopK/TopP原理与组合用法、PPL精度评估标准网络基础Pre-LN结构、SwiGLU/GELU优势、残差作用、推理仅前向传播PyTorch工程evalno_grad双标配、大模型分片加载、显存坑点、动态/静态图差异、推理常用核心算子。所有高阶推理技术KV Cache、PagedAttention、量化、算子融合、投机解码均建立在本章基础之上无任何跳脱本章原理的优化方案。不用精通PyTorch全功能只需要掌握推理、量化、部署、调优刚需功能。1. 必备张量操作创建张量torch.tensor()查看形状.shape/.size()设备迁移.to(cuda)/.to(cpu)矩阵乘法优先 或者torch.matmul()支持广播适配[B,H,S,D]这类 4 维多头张量torch.mm仅二维torch.bmm仅三维、不支持广播容易维度报错日常尽量避免。形状变换reshape、permute注意力维度变换高频使用。2. 自动微分PyTorch动态图机制默认开启梯度计算推理时如果不关闭框架会持续构建计算图、缓存梯度信息显存占用翻倍直接OOM。强制规范所有推理代码必须包裹with torch.no_grad():。唯一例外量化校准、权重分析等需要微量梯度信息的场景。3. 模型加载与存储原生torch.save/torch.load不适合大模型单文件几十GB读写慢、易损坏、无法分片加载。工业界统一使用 HuggingFace 生态接口model.save_pretrained()/AutoModel.from_pretrained()自动分片存储、按需加载、支持权重分片预读适配几十GB~上百GB大模型。【大模型加载核心坑点 1CPU 内存溢出必看】PyTorch 默认加载逻辑先将全部权重读入系统内存RAM再拷贝至显存。这导致加载大模型需要至少2倍模型体积的系统内存原始权重拷贝副本。7B/13B模型极易触发RAM爆满、卡死、OOM。解决方案使用accelerate.init_empty_weights()空权重初始化 磁盘分片逐块加载跳过全量CPU缓存彻底解决大内存占用问题是后续所有大模型加载、量化部署的标准写法。【大模型加载核心坑点 2设备不匹配】新手常写先加载权重到CPU再一次性to(cuda)。超大模型会瞬间抢占全部显存直接OOM。工业级写法是加载时直接映射设备或分层逐块迁移显存。【推理专属eval() 模式必加】推理代码两行标配缺一不可model.eval()withtorch.no_grad():model.eval()作用关闭 Dropout、BatchNorm 等训练专属层固定模型行为防止推理结果随机抖动、精度异常。很多人只加 no_grad不加 eval导致生成结果不稳定、幻觉增多。【动态图 vs 静态图 深度补充】PyTorch 原生动态图运行时构建计算图灵活调试但每一步都有图构建开销、无法预优化、算子碎片化严重推理速度慢。工业推理框架TensorRT、torch.compile、ONNX的核心优化逻辑将动态图转为静态计算图提前做算子融合、常量折叠、计算路径固化、内存规划运行时只执行计算无任何冗余开销推理速度直接翻倍。【显存管理硬核补充】推理过程中残留的激活值、中间张量会占用显存不会自动释放。torch.cuda.empty_cache()仅能释放缓存池空闲显存无法释放计算图占用显存。真正彻底释放显存的唯一方式是销毁变量重启进程这也是为什么工业部署全部用独立推理进程、禁止Notebook调试的核心原因。【高频实用算子补充推理必用】torch.nn.functional.softmax推理解码核心算子支持维度指定、稳定计算torch.argmax贪婪解码核心取最大概率Tokentorch.catKV Cache 迭代拼接核心操作torch.where采样掩码、无效Token屏蔽常用算子。【如果手搓一个极简的 generate 循环会用到哪些 PyTorch 算子】用F.softmax将 Logits 转为概率用torch.multinomial而非 argmax进行采样以保留多样性。每步用torch.cat实现 KV Cache 的拼接——但这只是演示生产环境如 vLLM会通过 PagedAttention 避免显存拷贝改用预先分配的 Block 和索引管理。对于需要屏蔽的 Token用torch.where将对应 Logits 置为负无穷。

相关资讯