LLM(大语言模型)工作原理
1. LLM 核心原理
预测下一个词——概率模型。
抛开复杂的算法,其底层运行机制极其简单:给定前文,计算下一个最可能出现的词是什么。
而我们输入的内容是提示词(Prompt),预测出来的下一个词就是 Token。
LLM 会预测出来下一个 Token,把下一个 Token 拼接起来作为新的提示词喂给大模型,大模型根据新的提示词预测出来下一个 Token,这样循环往复直到遇到结束符。
LLM 决定下一个 Token 的核心机制是:基于前文上下文,计算词表中所有 Token 的概率分布,再通过采样策略选出一个 Token 输出,循环往复。
2. Token(词元)
Token(词元)是大语言模型(LLM)理解和处理文本的最小基本单位。
Token 是人类与计算机沟通的桥梁,每个词汇都有对应的分配量(也就是独一无二的标识)。
输入 Token:你发送给模型的提示词所消耗的 Token 数量。
输出 Token:模型生成回答所消耗的 Token 数量,包含模型返回的完整回复文本。
我们可以使用 Token 计算工具 来计算 Token。
缓存命中:请求的开头部分,和之前某次请求的开头完全一致。
缓存未命中:请求的开头部分,与之前无关。
只看开头是因为causal attention(因果注意力),正如人类阅读也是从左到右逐字进行的,我们也要让计算机屏蔽未来的词语,避免模型在训练中直接偷看未来的数据。
而输出 Token 贵的主要原因是因为在生成时,每次只生成一个,在每次生成时都需要重新将前面的文本阅读一遍,因此生成速度慢,导致价格贵。
3. Vocabulary(词表)
词表是模型预定义的一个映射字典。它包含了模型“认识”的所有词元(Token)。
每个 Token 都有唯一的词表,每个词表都有唯一的 Token,两者相互认识。
但是词表总归是有限的,当 Token 不在词表时,就会产生字节级回退,将字符拆分成 UTF-8 字节,用 256 个字节级 Token(<0x00> ~ <0xFF>)表示,从而保证任意字符都不会被丢弃。