一、TokenToken 是 LLM 处理文本的最小单位。模型不认字、不认词只认 token。你把文本给 LLM它第一步不是读而是切我爱北京→[我,爱,北,京]←4个 tokenChatGPT→[Chat,G,PT]←3个 token 切出来的每一小块就是一个 token。 然后每个 token 换成一个数字ID我→101爱→204北→331京→887模型真正计算的是这些数字不是文字。Token 不是字也不是词Token 是介于字和词之间的子词单元文本按字切按词切按 token 切playingp-l-a-y-i-n-gplayingplay ing苹果苹 果苹果苹果或 苹果我爱北京我爱北京我爱北京我爱北京为什么不用字或词按字切序列太长一个英文词要 7 个 token按词切词表爆炸几十万上百万还处理不了新词按子词切折中方案词表可控又能处理任意文本为什么要分词用有限词表覆盖无限文本。三个现实约束词表不能无限大人类词汇 专有名词 拼写错误 多语言不可能每个词一个 ID要能处理没见过的词新词、错拼、人名靠拆成子词兜底要压缩序列长度太长了模型算不动中英文差异英文有空格边界清楚常见词 ≈ 1 个 token apple → 1 token中文没空格边界模糊词表以英文为主训练中文覆盖不足一个汉字 UTF-8 占 3 字节可能被拆成 2~3 个 token结果中文通常比英文更费 token。特殊 token除了正常文字还有功能型 token模型看到标记才知道该我回答了。|im_start|user 你好|im_end||im_start|assistantToken 为什么重要上下文长度“支持 128K 上下文” 128000 个 token不是 128K 字API 按 token 收费输入 token 输出 token 账单模型理解模型看到的、算的、生成的全是 token。切得不好理解就差。二、EmbeddingEmbedding 是把 token或词、句子变成一串数字向量让语义相近的东西向量也相近。它是模型能理解语义的基础。Token 解决的是怎么切Embedding 解决的是怎么变成数字给模型算。苹果→[0.2, -0.5,0.8,...,0.1]← 一串数字比如4096维香蕉→[0.3, -0.4,0.7,...,0.2]← 和苹果很接近汽车→[-0.8,0.9, -0.3,...,0.6]← 离得很远 核心特性语义相近 → 向量相近。苹果和香蕉都是水果 → 向量接近苹果和汽车不相关 → 向量远Token 是切出来的块Embedding 是块的数字表示。文本我爱苹果│ ① 分词 ▼ Token[我,爱,苹果]← token │ ② 查 Embedding 表 ▼ 向量[[...],[...],[...]]← 每个 token 一个向量 │ ③ 加位置编码 ▼ 送入 Transformer 计算Embedding 来自巨大的查找表Embedding 矩阵维度1 维度2 维度3...我[0.2, -0.5,0.8,...]爱[0.1,0.3, -0.2,...]苹果[-0.4,0.9,0.1,...]...词表 15 万 × 4096 维 6 亿多个参数就在这张表里这张表是训练学出来的不是人定的每个 token 的 ID 直接去表里查对应行Embedding 的层级不止词有 Embedding句子、文档也有类型输入输出用途Token Embedding单个 token向量LLM 输入层句子 Embedding一整句一个向量语义搜索、聚类文档 Embedding一段文档一个向量RAG 检索RAG 里用的是句子/文档 Embedding把文档和问题都变成向量比谁近找最相关的。Embedding 在 RAG 里的作用RAG 的核心流程① 文档切片 → 每片做 Embedding → 存进向量库 ② 用户提问 → 做 Embedding → 得到一个向量 ③ 在向量库里找和问题向量最接近的文档片 ④ 把这些片喂给 LLM让它基于它们回答关键靠 Embedding 的语义距离做检索而不是关键词匹配好处搜怎么减肥能找到如何瘦身关键词不同语义相近传统关键词搜索做不到三、自回归一个一个往外蹦词每蹦一个就把它加到输入里再预测下一个。模型生成一句话不是一次性吐出全部而是循环 每一步的输出变成下一步输入的一部分。这就是自回归 输入今天天气 ↓ 预测 输出真 ↓ 把真拼回去 输入今天天气真 ↓ 预测 输出好 ↓ 拼回去 输入今天天气真好 ↓ 预测 输出eos结束和 KV Cache 的关系自回归每一步都要看前文如果每步都把前文重算一遍会慢死。所以用 KV Cache重点一个词的 K/V只取决于它自己和后面来什么词无关。今天的 K/V → 算一次就定了后面不会变天气的 K/V → 算一次就定了后面不会变 既然不变为什么要重算存起来不就行了 这就是 KV Cache 的核心思想。每一步只算新词前文靠缓存。 这是自回归能实用的关键。 步1算[今天,天气]→ 缓存 K/V Cache{今天: K1,V1;天气: K2,V2}→ 出真步2只算[真]→ 复用缓存 → 出好步3只算[好]→ 复用缓存 → 出eos训练时和推理时的自回归训练时并行不用真自回归答案已知所以一句话里每个位置同时预测推理时串行真自回归答案未知只能一个一个来自回归的优缺点优点质量高每步都能看到完整前文灵活想生成多长都行统一对话、翻译、写作全是预测下一个词缺点慢必须串行不能并行错误累积前面错一个后面可能一路错下去幻觉它是在算下一个词不是查事实三、概率分布与采样LLM 生成文本的最后一步。模型算完一大轮最终要落到到底选哪个词。这一步就是概率分布 采样。概率分布步骤 1模型输出 logits原始打分真→12.5不→10.1很→9.8好→9.2的→7.5汽车→-3.2... 词表15万个就有15万个分数这叫 logits不是概率只是原始分数可正可负。步骤 2Softmax → 概率分布用 Softmax 把 logits 变成总和为 1 的概率真→0.35不→0.18很→0.15好→0.12的→0.06汽车→0.0001... 加起来1.0这一串每个词的概率就是概率分布。它描述模型认为下一个词是各个词的可能性有多大。步骤 3可选温度调整分布用温度 Temperature 调整分布的陡峭程度温度低0.2→ 分布变陡 → 高概率词更突出 温度高1.5→ 分布变平 → 各词概率接近 温度1→ 保持原样 温度不改变词的概率排序只改变分布的尖锐程度。步骤 4进入采样根据采样策略要真正选出一个词。采样策略策略 1贪心Greedy做法永远选概率最高的那个词。优点确定、稳定缺点死板、易重复适用事实问答、代码要确定性策略 2随机采样Random Sampling做法按概率随机抽概率大的更容易被抽中。优点多样、自然缺点可能抽到长尾里的离谱词适用创意写作策略 3温度采样Temperature做法先用温度调整分布再随机采样。温度越低越保守越高越随机。温度分布效果适用0~0.3很陡几乎确定代码、数学、RAG0.7~1.0适中平衡通用对话1.2~2.0很平发散、有创意写诗、头脑风暴策略 4Top-K 采样做法只保留概率最高的 K 个词其余丢弃重新归一化再采样。K3真0.35┐不0.18├─ 保留很0.15┘ ────────────好0.12┐的0.06├─ 丢弃... ┘作用砍掉长尾避免抽到离谱词。缺点K 固定不够灵活有的场景候选该多有的该少策略 5Top-P核采样 Nucleus Sampling做法从高到低累加概率累积到 P如 0.9就停只在这批词里采样。P0.9真0.35→ 累计0.35不0.18→ 累计0.53很0.15→ 累计0.68好0.12→ 累计0.80的0.06→ 累计0.86了0.05→ 累计0.91← 超过0.9停只在前 6 个词里采样。优点候选数量动态比固定 K 更灵活。现在最常用策略 6Beam Search做法保留多条候选路径最后选整体概率最高的那条。Beam3 路径1今天天气 → 真 → 好 路径2今天天气 → 真 → 的 路径3今天天气 → 不 → 错 最后选整体得分最高的优点整体最优缺点慢、输出保守适用机器翻译完整流程输入今天天气 ↓ 模型前向计算 ↓ logits15 万个分数 ↓ Softmax 概率分布15 万个概率和为1 ↓ 温度调整 调整后的分布 ↓ Top-K / Top-P 过滤 候选词集合 ↓ 随机采样 选出1个词真↓ 拼回输入 → 下一轮自回归四、什么是注意力机制五、什么是多头注意力六、什么是位置编码七、什么是 FFN前馈网络八、什么是残差与归一化九、什么是 KV Cache什么是幻觉什么是解码策略什么是量化什么是批处理什么是投机解码什么是提示注入什么是越狱什么是内容过滤什么是可解释性什么是长上下文什么是多模态什么是推理模型第一周基础概念1.1Token →1.2Embedding →1.3自回归 →1.4采样 第二周Prompt 与生成5.1Prompt →5.7CoT →4.1解码策略 第三周RAG5.2RAG →5.3向量数据库 →3.5幻觉 第四周Agent5.4Agent →5.5工具调用 →5.6记忆 第五周工程6.1应用架构 →6.2可观测性 →6.3成本优化 →6.4评估 第六周安全7.1提示注入 →7.2越狱 →7.3内容过滤
阅读完成 · 觉得有帮助?