LLM 学习系列(5 / 5)

分词 → 架构 → 推理 → 训练 → 开放权重
模型练好后,别人如何拿到并运行它?本篇从实际交付文件出发,厘清开放权重、开源与许可证,再把五篇的流程接回一次完整生成。

1. Open Weights(开放权重):把训练结果交给别人

开放权重通常指模型的参数文件对外提供,使使用者能够取得权重,并在相应条件下自行加载和运行。 这些参数就是 训练篇 反复更新的那批数字,常保存为 .safetensors 等格式。

这个说法主要描述权重能否取得,不自动保证匿名下载、任意商用、修改或再分发。有的发布需要登录、接受条款或申请访问;具体权限仍要看该版本的发布条件。

训练后的参数 提供权重及配套文件 使用者自行加载运行 由提供方部署 使用者调用 API

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 要求使用、研究、修改和分享的自由,并要求提供适合修改系统的形式,主要包括:

  1. 足够详细的训练数据信息(Data Information):让有能力的人可以构建实质等价的系统,包括数据来源、范围、选择和处理方法,以及可获取数据的清单等。
  2. 完整的训练与运行代码:包括数据处理、训练设置、推理实现等。
  3. 模型参数及相关配置,并满足该定义规定的开放条款。

它没有一概要求公开全部原始训练数据。 因此,「没有下载到全量训练数据,就一定不符合 OSAID」不是准确判断。同样,「某仓库用了开源许可证」也不能自动证明完整模型系统符合该定义。

例子推进 · 能运行,和能重建,是不同问题

如果我们只提供权重及推理所需文件,读者可以尝试续写 小猫跑了一天,它很;但他仍不知道训练样本怎样收集、去重、配比,也无法据此还原训练过程。

补充代码、数据信息和训练配方,会提高研究与复现的可能性。即使资料齐全,硬件、随机性和数值实现也可能影响结果;「可构建实质等价系统」不等于每个权重字节都必须一致。

4. 许可证:可以怎样使用

许可证(License) 规定发布者授予哪些使用权利,以及附带哪些条件。应针对具体模型版本及具体文件判断,不能仅凭某个模型家族名称概括。

条款类型需要确认的内容
使用范围是否允许研究、商业部署及计划中的使用场景
修改与再分发是否可以微调、发布改版或分享权重
附带义务是否需要保留版权声明、许可证、NOTICE 或修改说明
多份许可基座权重、适配器、代码和数据是否各有不同条件

Apache License 2.0 和 MIT License 是常见的宽松许可证,通常允许商业使用,但仍有保留声明等义务。「宽松」不等于「没有条件」。自定义模型许可证则可能额外限制用途、再分发或特定规模的商业使用。

例子推进 · 发布前把条件写清楚

对我们的续写模型,接收方至少需要知道:是否可以在自己的产品里运行,是否允许微调后再发布,以及分享时需要附带哪些声明。如果只发布 LoRA 适配器,还要一起核对基座模型的使用条件。

5. 把五篇连起来:另一台机器如何生成同一句话

接收方拿到配套产物,并满足运行环境和许可条件后,流程如下:

步骤对贯穿例子实际做的事对应篇目
训练并保存用损失与梯度优化参数,保存权重和配置LLM_4_Training
发布与加载交付权重、Tokenizer、配置和使用条款,加载到兼容实现本篇
编码把输入变为 [10, 11, 12, 13, 14, 15, 16],按需加 BOSLLM_1_Tokenization
前向计算查 Embedding,经多层 Block,计算词表 LogitsLLM_2_Transformer
连续生成Prefill 后选出 17,后续 Decode 假设选出 18、2LLM_3_Inference
文本还原将 [17, 18, 2] 解码为 累。,隐藏 EOSLLM_1_Tokenization

Note

相同权重不保证每次输出完全相同。Tokenizer、模板、采样设置、随机数、量化和运行实现都可能影响结果。若要比较两次运行,需要记录这些条件,而不是只记录模型名称。

这时,训练中学到的规则保存在权重里,本次输入对应的向量和 KV Cache 在运行中产生,输出 ID 再被转换为文字。发布权重使别人能够接着使用训练结果;是否公开训练过程、是否允许特定用途,需要分别查看。