当前位置: 首页 > news >正文

大三上 大模型系统与工程 第二次课笔记 20250912

一、介绍大模型(如 GPT、LLaMA、Gemini 等)的推理流程。

可以把这个过程想象成让一个博学但“慢思考”的巨人完成一项任务。它的知识已经全部学好了(存储在模型的权重参数中),推理就是它运用这些知识进行“思考”和“输出”的过程。

整个推理流程可以清晰地分为三个核心阶段,下图概括了其工作流:

flowchart TDA[输入文本<br>“法国的首都是”] --> B(编码与预处理)subgraph B [阶段一:编码与预处理]B1[Tokenization<br>分割为Token]B2[嵌入查找<br>转换为向量]B3[位置编码<br>注入顺序信息]endB --> C(前向传播与计算)subgraph C [阶段二:核心计算]C1[输入向量]C2[通过多层Transformer<br>进行计算]C3[产生输出向量<br>即下一个Token的概率分布]endC --> D{采样与决策}subgraph D [阶段三:采样与解码]D1[根据概率分布<br>选择下一个Token]D2[贪婪采样<br>Greedy Sampling]D3[随机采样<br>Stochastic Sampling]D4[将新Token加回输入<br>继续循环]endD2 -- 确定性高<br>选择最高概率 --> D1D3 -- 随机性强<br>按权重随机选择 --> D1D4 --> C1D --> E[最终输出文本<br>“法国的首都是巴黎”]

阶段一:编码与预处理(理解输入)

模型接收的是一段文本(称为 Prompt,如“法国的首都是”),但它无法直接理解文字,需要转换成它能处理的数字形式。

  1. 分词(Tokenization)

    • 将输入文本拆分成模型能识别的基本单元,称为 Token。Token 不一定是一个完整的单词,可能是子词或单个字符。
    • 例如,“法国的首都是” 可能会被分词为 ["法国", "的", "首都", "是"]
    • 每个 Token 都会被映射到模型词汇表中的一个唯一 ID。
  2. 嵌入查找(Embedding Lookup)

    • 模型有一个巨大的“字典”(嵌入矩阵),存储着每个 Token ID 对应的向量(一组高维数字,通常有数百或数千个维度)。
    • 这个过程就是将每个 Token ID 转换成一个有意义的数学向量。这个向量旨在捕获该 Token 的语义信息。
  3. 位置编码(Positional Encoding)

    • 语言中单词的顺序至关重要。但 Transformer 模型本身没有顺序概念。
    • 位置编码是一种技术,它会将每个 Token 在句子中的位置信息(是第几个词)也编码成一个向量,然后加到该 Token 的嵌入向量上。
    • 这样,模型就能知道“法国”在“的”前面了。

至此,输入的文本已经变成了一组包含了语义和位置信息的数字向量, ready for processing.


阶段二:核心计算(前向传播)

这是模型“思考”的核心环节。预处理后的向量序列会被送入模型的Transformer架构中,进行一系列复杂的数学运算。

  1. 层层处理

    • 模型由数十个甚至上百个 Transformer 层(或称为块)堆叠而成。
    • 每一层都包含两个核心组件:
      • 自注意力机制(Self-Attention):让序列中的每个 Token 都能与其他所有 Token 进行“交互”和“关注”。例如,在处理“首都”这个词时,模型会格外关注“法国”这个词,从而建立起它们之间的强烈联系。
      • 前馈神经网络(Feed-Forward Network):对每个 Token 的表示进行独立的、非线性的变换,进一步提取特征。
    • 向量序列会依次通过每一层,每一层都会对其稍作修正和增强,使其包含更多上下文信息。
  2. 输出预测

    • 经过所有层的处理后,我们会得到序列中最后一个位置的输出向量(对应“是”这个 Token)。
    • 这个输出向量被送入一个语言模型头(通常是一个线性层 + Softmax 函数),转换为一个概率分布
    • 这个概率分布覆盖了模型整个词汇表,表示模型认为下一个最可能出现的 Token 是哪个
    • 例如,词汇表中“巴黎”对应的概率可能是 65%,“伦敦”是 5%,“罗马”是 3%…… 其他所有词共享剩下的概率。

阶段三:采样与解码(生成输出)

现在模型得到了一个概率分布,我们需要决定下一个词到底是什么。

  1. 采样策略(Sampling Strategy)

    • 贪婪采样(Greedy Sampling):总是选择概率最高的那个 Token(如“巴黎”)。这种方法简单高效,但容易生成重复、枯燥的文本。
    • 随机采样(Stochastic Sampling):根据概率分布进行随机选择。概率高的词被选中的机会大,但也不排除选择概率稍低的词。这能增加输出的多样性和创造性。
      • 温度(Temperature):一个关键参数,用于控制随机性。高温(>1)会让概率分布更平缓,选择更随机;低温(<1)会让概率分布更尖锐,更倾向于最高概率的词。
  2. 自回归生成(Auto-Regressive Generation)

    • 将上一步生成的 Token(如“巴黎”)追加到原始输入序列的末尾,形成新的输入:“法国的首都是巴黎”。
    • 将这个新的序列再次送入模型,重复阶段二的计算,预测下一个 Token(例如,可能是“。”、“”结束符或另一个词)。
    • 如此循环往复,模型就像一个“逐词预测器”,不断生成下一个词,直到生成一个表示结束的特殊 Token 或达到最大长度限制。

总结与特点

特性 说明
自回归(Autoregressive) 核心特点。输出是逐个 Token 生成的,每次生成都依赖于之前所有的输入和已生成的内容。
计算密集型 推理过程需要巨大的计算量(主要是矩阵运算),尤其生成长文本时。这也是推理速度比训练慢得多的重要原因之一。
内存带宽受限 很多时候推理速度的瓶颈不在于计算速度,而在于从内存中加载模型巨大参数的速度。
确定性/随机性 贪婪搜索下,同样输入总是得到同样输出。引入随机采样后,每次输出可能不同,更具创造性。

详细解释如上。

http://www.wxhsa.cn/company.asp?id=1963

相关文章:

  • 批量删除所有 LXC 容器以及用户名
  • C++ - STL - 动态数组vector(矢量)
  • 彻底解决docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled 报错
  • Transformer-和扩散模型的生成式-AI-实用指南-预览版--全-
  • 7. Job与CronJob
  • nginx反向代理正则匹配示例及nginx内置变量详解
  • mt_12
  • 完整教程:【QT】-怎么实现瀑布图
  • 【初赛】二叉树性质和遍历 - Slayer
  • 详细解析苹果iOS应用上架到App Store的完整步骤与指南
  • drawio
  • bootstrap-select插件在webpack中点击无响应
  • Kali 字体大小设置
  • 如何使用 OCR 提取扫描件 PDF 的文本(Python 实现) - E
  • 重复从网页复制文字到编辑器的Autohotkey自动化代码
  • WeakMap 应用场景与示例
  • node,nvm,nrm,npm扫盲
  • 使用 conda 懒加载的方式减少 PowerShell 的启动时间
  • 深入 Spring MVC 底层:从 DispatcherServlet 到自定义组件的全链路解析 - 实践
  • podman 替代docker
  • 202404_古剑山杯_数独
  • m1芯片装windows系统使用感受
  • mac book怎么切换windows系统
  • 硬件内在函数
  • 202205_宁波市赛_DocDocDoc
  • DP题
  • LGP7115 [NOIP 2020] 移球游戏 学习笔记
  • 阿里为何建议MVC+Manager层混合架构?
  • Android(Kotlin)+ ML Kit:移动端英文数字验证码识别实战
  • 用Android(Kotlin)+ ML Kit:移动端英文数字验证码识别实战