LLM 学习系列(5 / 5)
1. Open Weights(开放权重):把训练结果交给别人
开放权重通常指模型的参数文件对外提供,使使用者能够取得权重,并在相应条件下自行加载和运行。 这些参数就是 训练篇 反复更新的那批数字,常保存为 .safetensors 等格式。
这个说法主要描述权重能否取得,不自动保证匿名下载、任意商用、修改或再分发。有的发布需要登录、接受条款或申请访问;具体权限仍要看该版本的发布条件。
API(应用程序接口) 在这里指通过网络向已部署的模型发送请求、取得输出。开放权重模型同样可以被托管成 API;调用方式和权重是否公开是两个维度。
贯穿全篇的例子
我们已经训练了一个用于演示续写的模型,现在希望另一位读者在自己的机器上输入
小猫跑了一天,它很,也能生成类似累。的续写。本篇追踪:保存什么 → 交付什么 → 对方如何加载 → 允许如何使用。沿用教学 Token ID:输入
[10, 11, 12, 13, 14, 15, 16],BOS 为1,累、。、EOS 分别为17、18、2。
2. 只有一个权重文件,为什么还不够
参数文件保存数字,运行它还需要知道网络结构、输入编码和执行方式。常见交付物如下:
| 交付物 | 作用 | 缺少时的问题 |
|---|---|---|
| 权重 | 保存 Embedding、Attention、FFN 等参数 | 没有训练得到的计算规则 |
| 模型配置 | 描述架构、层数、隐藏维度、词表大小等 | 无法正确构建网络或装载参数 |
| Tokenizer 文件 | 保存词表、切分规则和特殊 Token 配置 | 文字与 ID 的对应可能错误 |
| 推理实现 | 执行网络计算,可由兼容框架提供 | 数字文件本身不会运行 |
| 对话与生成配置 | 说明 Chat Template、EOS、默认采样等规则 | 可能用错输入格式或停止条件 |
| 模型卡与许可证 | 说明版本、用途、局限、训练信息和使用条款 | 难以判断模型是否适合任务、能否按计划使用 |
Model Card(模型卡) 是对模型的说明文档。以上是逻辑组成,具体文件名和存储方式由框架决定:一个权重文件可以拆成多个分片(Shard),配套索引告诉加载器各参数在哪个文件中,分片不代表多个独立模型。
例子推进 · 把可运行的一套东西交出去
发布方保存训练后的矩阵,并提供与它们匹配的配置和 Tokenizer。接收方用 ID
16查到很的 Embedding,再用这些权重运行各层 Block。如果只换了 Tokenizer,让
16代表别的文本,即使权重能成功加载,输入含义也已经错位。配套关系贯穿了分词、架构和发布三篇。
2.1 权重、检查点与 LoRA 适配器
Checkpoint(检查点) 是某个训练时刻的状态快照。这个词有时只指模型权重;如果要求尽可能接着上次的训练轨迹继续,还需要优化器状态、学习率调度状态、训练步数及随机状态等。推理通常不需要这些训练状态。
若训练篇使用的是 LoRA,单独发布的适配器通常只保存训练得到的参数增量,还需要匹配的基座模型才能运行。也可以在条件允许时合并后发布完整权重,但不能把适配器文件当成完整模型。
2.2 文件大小不等于运行显存
权重大小可以粗估为:
例如一个 70 亿参数模型,用 16 位格式保存时,单纯参数约占 字节,即 14 GB,约 13.0 GiB。推理还要容纳 KV Cache、中间结果和运行时开销,不能据此认定 14 GB 显存一定够用。
量化(Quantization) 是用较低精度近似表示数值。它可以减小权重存储,但也有缩放参数等额外开销,并可能改变输出分数和质量;量化版本应作为明确的模型产物加以区分。
3. 开放权重与开源:公开了哪些内容
取得训练结果,并不等于取得完整训练过程。可以逐项看公开范围:
| 组成 | 回答的问题 | 单凭「开放权重」能否确定 |
|---|---|---|
| 参数文件 | 能否拿到训练好的数值 | 通常能,但需看访问条件 |
| 推理代码与配置 | 能否运行、研究计算过程 | 需看配套发布与兼容实现 |
| 训练代码与配方 | 如何处理数据、训练和评估 | 不能,需单独查看 |
| 训练数据信息 | 用过哪些数据,如何取得和筛选 | 不能,需单独查看 |
| 许可证 | 能否使用、修改、分享及商用 | 不能,需读取具体条款 |
这里的训练配方包括数据配比、超参数、训练顺序和评估设置等。开放权重与开源不是两个互斥的盒子:符合某种开源 AI 定义的模型也会提供参数;但仅有可下载的参数,不足以证明它符合该定义。
3.1 OSI 的 OSAID 1.0 实际要求什么
OSI(Open Source Initiative,开源促进会)的 Open Source AI Definition 1.0 要求使用、研究、修改和分享的自由,并要求提供适合修改系统的形式,主要包括:
- 足够详细的训练数据信息(Data Information):让有能力的人可以构建实质等价的系统,包括数据来源、范围、选择和处理方法,以及可获取数据的清单等。
- 完整的训练与运行代码:包括数据处理、训练设置、推理实现等。
- 模型参数及相关配置,并满足该定义规定的开放条款。
它没有一概要求公开全部原始训练数据。 因此,「没有下载到全量训练数据,就一定不符合 OSAID」不是准确判断。同样,「某仓库用了开源许可证」也不能自动证明完整模型系统符合该定义。
例子推进 · 能运行,和能重建,是不同问题
如果我们只提供权重及推理所需文件,读者可以尝试续写
小猫跑了一天,它很;但他仍不知道训练样本怎样收集、去重、配比,也无法据此还原训练过程。补充代码、数据信息和训练配方,会提高研究与复现的可能性。即使资料齐全,硬件、随机性和数值实现也可能影响结果;「可构建实质等价系统」不等于每个权重字节都必须一致。
4. 许可证:可以怎样使用
许可证(License) 规定发布者授予哪些使用权利,以及附带哪些条件。应针对具体模型版本及具体文件判断,不能仅凭某个模型家族名称概括。
| 条款类型 | 需要确认的内容 |
|---|---|
| 使用范围 | 是否允许研究、商业部署及计划中的使用场景 |
| 修改与再分发 | 是否可以微调、发布改版或分享权重 |
| 附带义务 | 是否需要保留版权声明、许可证、NOTICE 或修改说明 |
| 多份许可 | 基座权重、适配器、代码和数据是否各有不同条件 |
Apache License 2.0 和 MIT License 是常见的宽松许可证,通常允许商业使用,但仍有保留声明等义务。「宽松」不等于「没有条件」。自定义模型许可证则可能额外限制用途、再分发或特定规模的商业使用。
例子推进 · 发布前把条件写清楚
对我们的续写模型,接收方至少需要知道:是否可以在自己的产品里运行,是否允许微调后再发布,以及分享时需要附带哪些声明。如果只发布 LoRA 适配器,还要一起核对基座模型的使用条件。
5. 把五篇连起来:另一台机器如何生成同一句话
接收方拿到配套产物,并满足运行环境和许可条件后,流程如下:
| 步骤 | 对贯穿例子实际做的事 | 对应篇目 |
|---|---|---|
| 训练并保存 | 用损失与梯度优化参数,保存权重和配置 | LLM_4_Training |
| 发布与加载 | 交付权重、Tokenizer、配置和使用条款,加载到兼容实现 | 本篇 |
| 编码 | 把输入变为 [10, 11, 12, 13, 14, 15, 16],按需加 BOS | LLM_1_Tokenization |
| 前向计算 | 查 Embedding,经多层 Block,计算词表 Logits | LLM_2_Transformer |
| 连续生成 | Prefill 后选出 17,后续 Decode 假设选出 18、2 | LLM_3_Inference |
| 文本还原 | 将 [17, 18, 2] 解码为 累。,隐藏 EOS | LLM_1_Tokenization |
Note
相同权重不保证每次输出完全相同。Tokenizer、模板、采样设置、随机数、量化和运行实现都可能影响结果。若要比较两次运行,需要记录这些条件,而不是只记录模型名称。
这时,训练中学到的规则保存在权重里,本次输入对应的向量和 KV Cache 在运行中产生,输出 ID 再被转换为文字。发布权重使别人能够接着使用训练结果;是否公开训练过程、是否允许特定用途,需要分别查看。