outputs/notebook_demo/ 目录说明文档

这个目录是:

也就是说,它不是原始模型目录,而是 01_lora_demo.ipynb 跑完以后生成的结果。

对 LoRA 实验来说,这个目录尤其重要,因为它最能说明一件事:

很多初学者会以为训练完会得到一个“全新的完整模型目录”。
但在 LoRA 里,通常更重要的是:

这就是这个目录存在的意义。


一、这个目录里有哪些文件

当前目录里主要有:

这些文件共同构成:


二、adapter_config.json:LoRA 配置说明书

这个文件非常关键。

它不是权重本身,而是:

里面最值得学生看的字段

"base_model_name_or_path": "/root/course_lora/models/tiny-gpt2"

这说明:

这也是 LoRA 最重要的证据之一:

"peft_type": "LORA"

明确告诉你:

"r": 8

这对应训练时的低秩大小。

"lora_alpha": 16

这对应训练时的缩放系数。

"lora_dropout": 0.05

这对应训练时的 LoRA dropout。

也就是说,这些参数并不是只在训练时临时存在,它们会被写进配置文件里,方便以后重新加载。

"bias": "none"

表示这次 LoRA 没有额外训练 bias。

"task_type": "CAUSAL_LM"

说明这次任务类型是因果语言模型。

"target_modules": ["c_attn"]

这一项特别值得学生注意。

它表示:

这里写的是:

可以先粗略理解成:

这条信息非常重要,因为它说明:

"inference_mode": true

说明这个 adapter 当前被保存成适合推理加载的状态。


三、adapter_model.safetensors:LoRA 真正学到的增量参数

这个文件是:

如果说:

那么:

这是学生最该真正理解的一点:

这也正是 LoRA 节省存储和微调成本的原因之一。


四、tokenizer.jsontokenizer_config.json

这两个文件和 base model 目录里同名文件的作用类似:

为什么训练输出目录里也要保存一份 tokenizer

因为在真实工程里,训练结果目录通常希望尽量自包含。

也就是说,你后面如果拿到这个目录做推理,最好能直接:

而不是再去猜该用哪份 tokenizer 配置。

在这套课程最小实验里,代码就是这样做的:

tokenizer = AutoTokenizer.from_pretrained(adapter_dir)

这说明:


五、training_args.bin:训练参数快照

这个文件保存的是:

也就是 TrainingArguments(...) 里的那一整组设置。

比如:

对初学者来说,不需要直接打开这个二进制文件。
你只需要知道:

这有助于以后做复现和排查。


六、README.md:自动生成的模型卡

这个文件看起来很长,而且有很多:

这是正常的。

它通常是 Hugging Face / PEFT 在保存模型时自动生成的一份模板型模型卡。

它目前真正有用的信息主要有哪些

base_model: /root/course_lora/models/tiny-gpt2

再次告诉你:

library_name: peft

说明这份训练输出来自:

pipeline_tag: text-generation

说明这个结果主要面向:

tags:

里面有:

这些标签更多是元信息。

为什么这份 README 不完整

因为这是自动生成模板,课程实验没有专门把模型卡完整填写。

所以学生不需要被这份长 README 吓到。
真正重要的信息主要是:


七、这个目录在推理阶段是怎么被使用的

02_eval_and_infer.ipynb 里,核心代码是:

base_model = AutoModelForCausalLM.from_pretrained(base_model_name)
model = PeftModel.from_pretrained(base_model, adapter_dir)

这里的 adapter_dir 就是:

也就是说:

  1. 先加载原始 base model
  2. 再加载这里的 adapter 配置和 adapter 权重
  3. 把二者组合起来,得到最终可推理模型

这正是为什么这个目录不能单独替代 base model 目录:


八、这个目录和 models/tiny-gpt2 的关系

这是学生最容易混淆的点。

models/tiny-gpt2

表示:

outputs/notebook_demo

表示:

所以:

两者加在一起,才构成完整推理能力。


九、这一份目录最值得学生真正看懂什么

  1. LoRA 训练结果的核心不是完整模型,而是 adapter_model.safetensors
  2. adapter_config.json 记录了这次 LoRA 是怎么配的
  3. base_model_name_or_path 说明 adapter 必须依赖原始模型
  4. 推理时真正做的是“base model + adapter”组合,而不是只加载 adapter

十、如果以后换成更大的模型,这个目录会发生什么变化

整体结构大体还是类似的:

变化的主要会是:

但核心思想不变: