郭震 AI公众号:郭震AI

15 大模型 LLM 微调过程中保存与加载模型

发布日期:

最近更新:

分类: 大模型微调

预计阅读: 3 分钟

阅读次数: 0

预计阅读3 分钟
结构重点10 个
图文要点6 张
正文规模1.4k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 10 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文索引

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

6 张图 · 可跳转
保存加载要分清产物流程图查看大图
保存加载要分清产物流程图

微调产物不只是一个权重文件。adapter、tokenizer、generation config、训练配置和基座模型版本都要能对应起来,否则后面加载出来的行为可能完全不一致。

保存加载要分清产物核对图查看大图
保存加载要分清产物核对图

我会用一次独立加载测试收尾:新进程从保存目录加载模型,跑固定评估样本。只有独立加载成功,产物才算真的可用。

在大模型的微调过程中,保存加载 模型是非常重要的一环。它不仅可以帮助我们保存训练好的模型以供后续使用,还可以在需要时快速恢复训练状态,以便进行进一步的微调或评估。在本篇文章中,我们将深入探讨如何有效地保存和加载大模型。

保存模型

在微调过程中,保存模型的主要目的是为了防止数据丢失,以及在达到一定的训练轮次后,可以对模型状态进行持久化。

模型保存加载判断卡查看大图
模型保存加载判断卡

处理微调模型保存与加载时,先看 checkpoint、配置文件、tokenizer、LoRA 权重、版本兼容和恢复测试。

使用 Hugging Face Transformers 库保存模型

假设我们在进行微调的过程使用的是 Hugging Face 的 Transformers 库,可以通过如下代码保存模型:

from transformers import Trainer, TrainingArguments

# 假设 trainer 是已经初始化好的 Trainer 对象
trainer = Trainer(
    model=model,
    args=TrainingArguments(
        output_dir="./results",
        save_total_limit=2,  # 仅保留最近的两个模型
        save_steps=500,      # 每500步保存一次模型
    ),
    train_dataset=train_dataset,
)

# 开始训练并自动保存模型
trainer.train()

在上述代码中,output_dir 用于指定模型保存的路径,save_steps 表示每经过 500 步训练就保存一次模型。使用 save_total_limit 参数可以控制保存的模型数量,避免占用过多的存储空间。

保存模型权重

除去完整的模型和配置之外,有时我们可能只需保存模型的权重,可以使用以下代码:

model.save_pretrained("./model_weights")
tokenizer.save_pretrained("./model_weights")

这将会把模型的权重和 tokenizer 保存到指定的文件夹中。

加载模型

在微调的后续过程中,或者在需要进行模型评估和推理时,加载之前保存的模型是必不可少的。我们可以通过类似的 Transformers 方法来实现模型的加载。

大模型微调阅读地图卡查看大图
大模型微调阅读地图卡

学《大模型 LLM 微调过程中保存与加载模型》时,可以先找一个自己能复现的小场景,再看相关概念和练习步骤,读完后用自己的例子复述一遍。

加载完整模型和Tokenizer

可以 воспользоваться следующим кодом для загрузки модели и токенизатора из ранее сохраненной папки:

from transformers import AutoModelForSequenceClassification, AutoTokenizer

# 加载模型
model = AutoModelForSequenceClassification.from_pretrained("./model_weights")
tokenizer = AutoTokenizer.from_pretrained("./model_weights")

加载特定权重

如果你只想加载模型的权重,可以单独执行以下命令:

model.load_state_dict(torch.load("./model_weights/pytorch_model.bin"))

案例演示

让我们举一个简单的例子,展示如何在微调完成后进行模型的保存与加载。

微调过程

假设我们微调了一个BERT模型进行情感分析,完整代码如下:

from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments

# 1. 加载模型和tokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')

# 2. 准备数据集(省略具体数据预处理步骤)

# 3. 设置训练参数
training_args = TrainingArguments(
    output_dir='./results',
    num_train_epochs=3,
    per_device_train_batch_size=8,
    save_steps=500,
)

# 4. 创建 Trainer 对象并开始训练
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
)

# 5. 开始训练并自动保存
trainer.train()

加载模型进行评估

训练完成后,我们想要进行模型的评估,可以使用如下代码加载模型并进行预测:

# 加载保存的模型和tokenizer
model = BertForSequenceClassification.from_pretrained('./results')
tokenizer = BertTokenizer.from_pretrained('./results')

# 进行推理(假设有一段新的文本需要预测)
inputs = tokenizer("I love using transformers!", return_tensors="pt")
outputs = model(**inputs)

# 解析模型输出
logits = outputs.logits
predicted_class = logits.argmax(dim=-1)
print(f"预测的情感类别: {predicted_class.item()}")

在这个例子中,我们完成了模型的微调并保存了其状态,然后成功加载该模型并进行了评估。通过以上方法,我们可以灵活地保存和加载模型,以便在实际应用中最大化模型的利用率。

大模型 LLM 微调过程中保存与加载模型应用复盘卡查看大图
大模型 LLM 微调过程中保存与加载模型应用复盘卡

如果《大模型 LLM 微调过程中保存与加载模型》还没完全消化,可以从这张卡片的四个动作重新走一遍。

大模型 LLM 微调过程中保存与加载模型应用检查卡查看大图
大模型 LLM 微调过程中保存与加载模型应用检查卡

回看《大模型 LLM 微调过程中保存与加载模型》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。

总结

本节的重点是如何在大模型 LLM 微调过程中有效地 保存加载 模型。合理的保存和加载策略不仅有助于节省训练时间,还有助于更好地利用已有的计算资源。在下一篇文章中,我们将探讨如何设置评估指标,以便对微调后的模型进行有效的评估和性能测试。

继续阅读

顺着这个系列继续看

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...