☰
白话大模型第六章:大语言模型工作原理(一)
2026/10/28 2:02:21 网站建设 项目流程

一.核心原理

1.1工作机制:预测下一个词

概念:大语言模型的核心工作原理是“预测下一个词”,抛开复杂的算法,其底层运行机制极其简单:给定一段前文(提示词 Prompt),模型会计算下一个最可能出现的词(Token)。直白点说,它就像一个极其强大的“文字接龙”高手,你给它开头,它根据学到的经验(权重)算出后面跟着什么词最合理。

什么是权重?

在大模型语境下,权重(Weight)和参数(Parameter)基本上是同一个意思。我们常说“70B模型”,意思就是它有 700 亿个参数,也就是 700 亿个权重数字。

权重(参数)的规模决定了模型的“智商上限”,但训练数据的质量和算法的效率,决定了模型能不能达到这个上限。现在的顶级 AI 追求的是:用尽可能少的参数,激活尽可能高的智商!

例子:假设我们正在使用一个已经训练好的大语言模型,当我们将提示词“西红柿炒”输入进去时,算法会基于庞大的语料库计算后续词汇出现的概率,最终在输出端给出最高概率的词——“鸡蛋”;同理,输入“这件衣服很”,它会接上“漂亮”;输入“深度”,它会接上“学习”。模型就是通过这样一次又一次地预测并输出 Token,最终连成了一段完整流畅的回复。

1.2完整的工作过程

概念:大语言模型生成一个完整回答的过程,本质上是“逐字预测、文字接龙”的过程,它并不是像人一样先想好整句话再写出来,而是根据已有文本,一步步预测下一个最可能出现的 Token,直到预测出结束符认为回答已经完整。

例子:假设我们向大语言模型提问“中国的首都是哪里?”,算法首先会根据这句话预测出下一个字是“北”;接着,它会将刚输出的“北”和原问题拼在一起作为新的输入,再次预测出下一个字“京”;然后继续把“北京”加上去,预测出标点符号“。”;最后,当模型看到完整的句子“中国的首都是哪里?北京。”时,它终于预测出了终止符<|end_of_sentence|>,至此,一次像接龙一样的完整回答才正式结束。

1.3如何决定下一个token

概念:大语言模型决定下一个 Token 的核心机制叫作自回归生成(Autoregressive Generation),即基于前文上下文,计算出词表中所有 Token 出现的概率分布,再通过采样策略选出概率最高的一个输出。直白点说,就是“用自己刚刚生成的结果,作为预测下一个结果的依据,像滚雪球一样,一步一步往外推”。

例子:假设我们向模型提问“中国的首都是哪里?”,算法首先会计算出下一个词的概率分布,发现“北”的概率最高(占 0.5),于是输出“北”;接着,模型把“北”和原问题拼在一起再次计算,此时“京”的概率飙升至最高(占 0.7),于是输出“京”;最后,模型把“北京”带上再去算,发现标点“。”的概率最高(占 0.9),直到最终输出结束符,完成整个生成过程。

二.Token

概念:Token(词元)是大语言模型理解和处理文本的最小基本单位。大模型不看完整的句子,而是把句子拆成一个一个的 Token 来“理解”和“生成”,这个将文本切分的过程在人工智能领域叫做分词(Tokenization),直白点说,Token 就像是 AI 认识世界的“偏旁部首”或“积木块”。

例子:假设我们将“我爱大模型开发”这句话输入给系统,分词算法会根据预设的词表对这句话进行切分,最终在输出端将其拆解成了四个独立的 Token:“我”、“爱”、“大模型”和“开发”。大模型在后续的运算中,就是把这些拆解出来的 Token 依次送进大脑去理解,并基于它们去预测下一个可能出现的 Token 组合。

2.1定义

概念:大语言模型需要 Token,是因为计算机本质上只能处理数字和数学运算,无法直接理解人类文本,必须通过分词将文本切分为最小计算单元并转化为向量,同时以此解决按“字母”切分粒度过细或按“单词”切分导致词表爆炸的问题,直白点说,Token 就是让计算机既能看懂文本,又能高效计算的“桥梁”和“最优折中方案”。

例子:假设我们将英文单词 "unhappiness" 输入系统

  • 第一步,系统将其切分为子词 ["un", "happi", "ness"] 并分配整数 ID [432, 891, 256](解决怎么拆);
  • 第二步,因为纯数字无法表达语义,系统会将这三个 ID 映射成一串高维浮点数向量(如将表示开心的 "happi" 向量,加上带有否定方向的 "un" 向量,合成后推向表示难过的 "sad" 方向,解决语义表达)。这种介于字和词之间的子词切分法,既避免了按字母切分带来的计算效率低下,又避免了按完整单词切分导致遇到新造词(如 cryptocurrency)无法识别的问题。

2.2常见形态

Token 的常见的形态:

  • 一个完整的单词:Hello 可能是 1 个 Token。
  • 单词的一部分:unbelievable 可能会被拆成 un + believe + able(3 个 Token)。
  • 标点符号:逗号、句号、感叹号通常各占 1 个 Token。
  • 中文情况:中文里,一个汉字通常占 1 到 2 个 Token(视具体词汇频率而定),而不是一个字对应一个 Token。

2.3估算工具

下⾯地址是chatgpt的Token估算⼯具 :https://platform.openai.com/tokenizer

2.4为什么需要Token

概念:大语言模型需要 Token,核心原因有两个:一是计算机只能处理数字和矩阵运算,必须将文本切分(Tokenization)并转化为向量(Embedding)才能让 AI 理解语义;二是为了在“按字母切分”和“按单词切分”之间寻找平衡,解决词汇爆炸和计算效率低的问题,直白点说,Token 就是人类语言转化为机器可懂、且计算高效的“中间语言”。

例子:假设我们将 "unhappiness" 输入系统。第一步,系统将其切分为子词 ["un", "happi", "ness"] 并赋予数字 ID [432, 891, 256],让计算机拿到可以处理的数据;第二步,因为纯数字没有语义,系统将这三个 ID 映射为高维向量(比如 "happi" 在空间中靠近 "happy",而加上带有反向坐标的 "un" 后,合成向量就推向了 "sad")。通过这种介于字和词之间的“子词切分”,既避免了按字母切分导致序列过长、算力爆炸,又避免了按完整单词切分遇到新词(如 cryptocurrency)时模型直接傻眼的问题。

2.5输入token和输出token

什么会是输入token?

输入 token 你发送给模型的提示词所消耗的 token 数量。

  • 包含内容:
    • 用户输入的文本。
    • 如果开启了联网搜索,搜索引擎返回的相关内容也会被计入输入 token。

什么是输出token?

输出 token 模型生成回答所消耗的 token 数量,包含模型返回的完整回复文本。

2.6为什么输出token贵?

以deepseek为例,可以看出输出token是最贵的!

概念:大模型在推理(生成回复)时存在三个致命的硬件瓶颈,核心矛盾在于显存容量大但读取慢(带宽瓶颈),而SRAM速度极快但容量极小(缓存太小)。这导致在输出阶段,GPU算力只能干等数据从显存搬运到SRAM,无法发挥真正实力。

例子:假设我们要让模型生成1000个字的回复。

  1. 算力闲置:输入整段提示词时,算力满载;但输出是一个字一个字往外蹦,每次算1个词,GPU算力有95%的时间都在“干等”。

  2. 带宽瓶颈:每次算新词,都要把之前所有的历史数据(KV Cache)从显存这个大仓库,搬运到SRAM这个小工作台上。算力再强,搬运速度(显存带宽)跟不上,也会卡死。

  3. 显存吃紧:生成的词越多,KV Cache 就越大,一直死死占用着显存不放,导致一块显卡能同时服务的用户数锐减,云厂商成本飙升。

  • 显存 (VRAM):GPU 的外部存储(如 80GB),用于存放模型参数和对话历史(KV Cache)。

  • SRAM:GPU 内部的缓存区(仅几十 MB),速度极快,是计算单元(Tensor Core)直接读取数据进行计算的地方。

  • 带宽:数据从显存传输到 SRAM 的速度。

三.Vocabulary(词表)

3.1定义

词表是模型预定义的一个映射字典。它包含了模型 “认识” 的所有词元(Token)。

  • 每个词元都有一个唯一的数字 ID(索引)。
  • 当输入文本时,分词器(Tokenizer)会查阅词表,将句子切割成词表中存在的片段,并转换为 ID 列表输入模型;模型输出的 ID 再通过词表映射回文本。
IdToken
0!
1#
……

在大型语言模型(LLM)的架构中,Vocabulary(词表)是模型理解人类语言的 “字典”。它定义了模型能 “看见” 和 “写出” 的所有基本单位。

3.2常见的此表大小

由于大语言模型(LLM)本质上是数学函数(输⼊数字,输出数字),无法直接处理原始文本,因此 词表就是连接“人类语言”和“模型数字世界”的桥梁。

3.3生成词范围

概念:大模型无法生成词表(Vocabulary)之外的新 Token(无法创造新编号),但可以通过拼接词表内现有的 Token 来组合出任意词表外的新“词(Word)”。如果遇到连 Token 都无法表示的单个字符(如某些 Emoji),则会触发底层的字节级回退,直白点说,就是模型虽然不能造新“积木”,但能用现有的“积木”拼出任何新图案,只是拼的过程会更繁琐。

例子:假设我们将生僻词 "unbelievable" 输入系统。因为词表中没有这个完整的单词,算法会将其拆解为 "un"、"believe"、"able" 三个子词(Token)进行组合输出。原本如果词表里有,只需输出 1 个 Token,现在却需要输出 3 个。这就解释了为什么在处理冷门专业术语或罕见语言时,模型需要生成更多的 Token 来拼凑,从而导致推理速度变慢且计算成本变高。

3.4什么是字节级回退?

概念:字节级回退(Byte-fallback)是现代大模型分词器(如 BPE 算法)采用的一种底层容错机制,为了确保“100%不漏掉任何字符”,当遇到词表(Vocabulary)中不存在的生僻字或罕见 Emoji 时,它不会像传统分词器那样直接抛出[UNK](未知标记)让模型抓瞎,而是降级退回到底层,将这些字符按 UTF-8 编码拆解为多个独立的字节,并映射为词表中的专用字节 Token 送入模型,从而在保证常规词汇处理效率的同时,极大提升了模型处理极端情况的鲁棒性。

例子:假设我们将一个词表里没有的罕见 Emoji “😊” 输入系统,传统分词器发现词表没收录,直接输出[UNK]导致模型丢失语义;触发字节级回退机制后,系统在底层将“😊”的 UTF-8 编码拆解为0xF0、0x9F、0x98、0x8A这 4 个字节,并分别映射成专用的字节 Token(如<byte_0xF0>)送入模型运算,最终成功让模型理解并处理了这个原本不认识的生僻表情。

为什么说这是一个 “极其精妙” 的设计? 在 Byte-fallback 出现之前,为了不让模型遇到生僻字就变 “瞎子”,早期的 GPT-2 采用了 纯字节级 BPE(Byte-level BPE)。也就是说,它的词表干脆完全由最基础的 256 个字节组合而成。

但纯字节级有一个致命缺点:效率太低。英文单词 apple 就要占 5 个 Token,中文 苹果 在 UTF-8 下有 6 个字节,要占 6 个 Token。这会导致大模型的上下文窗口(Context Window)迅速被吃满。

而 Byte-fallback(字节级回退) 则是两者的完美结合(Best of Both Worlds):

  • 正常情况下: 词表里有高频的 “苹果”、“apple”、“Hello”,那就直接用大 Token,保证效率。
  • 极端情况下: 遇到冷门字、火星文、罕见 Emoji,不报错、不丢弃,而是降级回退到字节模式,保证鲁棒性。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询