拓展阅读

LLM 的完整使用链路

把 Tokenizer、模型、训练与推理接口连接起来。

推荐阅读 03 / 12本地中文导读

对应资料:Hugging Face LLM Course [S001]

沿着对象与状态理解本章

先沿着实际对象追踪:用户文字不是消息包,消息包不是Token数组,编号也不是Embedding。把这四种对象分别认出来,后面的shape和API角色才有落点。下图的词表是独立教学约定;不要把它当成所有Tokenizer的真实结果。

下方图解的固定输入在“输入与适用条件”中声明。它用于解释本章机制,不与本章其他独立例子的数值暗中接续。

动态图解 · F03

文字、字节、Token、编号是四件事

为什么不能把“一个汉字”当成“一次生成”?

Token是分词规则选出来的片段,编号是它在词表中的地址。一个Token可以跨越多个字符,也可能只覆盖字符编码的一部分。教学中把“学习”合成一个Token,只是明确的演示规则,不能当成所有模型的实际分词。

字节存储和传输文本的单位;UTF-8里的汉字通常占多个字节。
Token分词器处理的片段单位。
词表片段与编号的对照。

输入与适用条件:本图使用人为词表:PAD0、我1、爱2、学习3、你4、!5;不演示真实BPE训练。

1 / 6 · 原文字

第1步,共6步

窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。

文字、字节、Token、编号是四件事:原文字原文字我爱学习 / 你爱文本片段我/爱/学习;你/爱词表对应我1、爱2、学习3、你4整数序列[1,2,3] 与 [4,2]解码校验按同一规则还原片段明确边界不等于按字分词,也不是语义打分教学流程;高亮表示当前步骤,不表示真实耗时比例。

先确定待编码原文,两句之间不能直接接起来当作同一人的上下文。

本步状态由图形与说明共同给出。

默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。

为什么需要

弄清计数单位,可避免上下文预算、输出长度和界面刷新混为一谈。

怎样实现

用目标模型配套分词器编码和解码,并分开观察字符数、字节数、Token数。

可能的代价与误解

更换分词器后沿用旧编号,会读到错误的词表项。

如何判断是否做对

对实际输入做一次往返编解码,并按所用分词器规则处理特殊Token。

从工具生态建立模型使用全景

本篇对应Hugging Face LLM Course的入门主题。使用一个高层pipeline时,应继续理解编码、模型前向和后处理,避免把接口输出当作不可分析的黑盒。[S001][S001]

Tokenizer负责离散编码;模型参数决定运算;任务头决定输出形式;生成策略决定怎样选择后续Token。分类、Embedding提取与文本生成不是同一任务,即使它们使用相似的Transformer底座。

一次输入输出的检查顺序

先确认使用的模型与Tokenizer是否配套,再检查输入长度和特殊Token,然后看模型输出的形状与任务含义,最后检查后处理与停止状态。

原创例子:模型返回一个维度为词表大小的分数向量,它可能是下一Token Logits,而不是整个句子的质量评分。将最大分数当作事实置信度,会从接口理解阶段就产生错误。

训练、微调与推理怎样区分

训练用损失与梯度更新参数;微调在已有参数基础上适应特定目标;推理通常只计算输出,不执行参数学习。少样本示例改变当前输入,不等于微调。[S024][S015]

框架的模型对象可以被用于训练或推理,但运行模式、梯度图和数据用途需要明确。一个模型在聊天后表现不同,可能只是上下文改变;不要自动推断权重已经更新。

数据也有生命周期

准备数据要考虑来源、清洗、去重、切分和版本。训练集用于更新,验证集用于开发选择,独立测试集用于评价。反复根据测试集改模型,会让测试失去独立性。[S022][S023][S005]

原创例子:同一README的两个近似版本分别进入训练和测试,表面上是不同文件,内容却可能大量重叠。模型成功不一定证明能够理解全新项目。

模型为什么还需要Agent

模型接口能生成内容,但不会自动管理工具、权限、执行状态和验收。Agent把这些外围部件连接成循环。一个分类pipeline通常不需要复杂Agent;一个未知Bug调查可能需要多轮取证与行动。[S003][S055]

练习:把“判断日志类别”和“修复导致日志出现的Bug”分别画成系统。前者可能是一次编码和分类,后者需要检索、修改、测试和恢复。两者都用LLM,不意味着应该拥有相同架构。

完成本篇后,应该能把一次高层调用拆开,并说明何时只需要模型、何时需要外部执行系统。

继续深入:第0章 · 全局认知 或阅读拓展阅读目录0.1的逐项讲义。所有链接均为本地内容。

运行示例 · G03

同一句“读取配置”,在四个对象中各是什么

输入与条件。假设仓库有一个文件 config.txt,真实内容是 timeout=3。用户要求:“告诉我超时值。”模型和文件之间并没有天然连接。

步骤与对象内部动作中间结果 / 新状态
1用户输入界面接到“告诉我超时值”这是一条任务,不是文件内容。
2组装请求宿主提供任务和 read_file(path) 的说明模型此时知道怎样提出读取请求,但还不知道文件里写什么。
3模型输出产生调用提议 read_file("config.txt")提议是一份数据,文件尚未因此被读取。
4工具执行程序读取磁盘,返回 timeout=3新事实第一次由外部环境进入任务。
5再调用模型把原问题、调用记录和结果一起提交模型可以回答“配置中的超时值为3”;本例没有说明单位,不能擅自补“秒”。

把过程连起来。文字、模型计算、工具调用提议和磁盘操作是四个不同对象。跟踪谁产生了每份数据,就能判断有没有证据。

边界与反例。这是按接口职责构造的执行示例,不是一次真实商业模型请求。文件里的数字若没有单位,答案也不能替它添加单位。

依据与适用范围:[TOOLS]。示例输入和场景由本书明确设定。

记录保存在本机浏览器。

输入关键词即可检索。

↑ ↓ 选择 Enter 打开Esc 关闭 · 仅本地搜索

阅读设置

阅读设置仅保存在本机浏览器,不上传任何数据。