如何加载已保存模型,仅保留最佳epoch并重新保存以缩小体积?
解决方案
完全可以这么做——加载最佳epoch的模型权重后重新保存,就能大幅减小文件体积,具体操作分两种常见框架来说:
基于Hugging Face Transformers的操作
- 加载最佳检查点
直接指定你认为效果最好的那个epoch对应的检查点目录加载模型就行:
from transformers import AutoModel, AutoTokenizer # 把路径换成你自己的最佳检查点目录 model = AutoModel.from_pretrained("./best_epoch_checkpoint") tokenizer = AutoTokenizer.from_pretrained("./best_epoch_checkpoint")
- 重新保存精简模型
加载完成后直接保存,此时生成的文件只会包含最佳epoch的模型权重,不会带其他epoch的冗余数据:
model.save_pretrained("./trimmed_model") tokenizer.save_pretrained("./trimmed_model")
基于PyTorch原生训练的操作
- 加载最佳权重
先初始化模型结构,再加载最佳epoch对应的权重文件:
import torch # 替换成你自己的模型类所在模块和类名 from your_model_file import YourModel model = YourModel() # 路径换成最佳epoch的权重文件 model.load_state_dict(torch.load("./best_epoch_weights.bin")) model.eval() # 切换到评估模式,可选
- 保存精简权重
直接保存当前模型的状态字典,此时文件只包含模型权重,体积会小很多:
torch.save(model.state_dict(), "./trimmed_model_weights.bin")
额外提醒
- 之前体积大往往是因为保存了训练过程中的优化器状态、学习率调度器信息,甚至多个epoch的权重,重新保存时默认不会带这些冗余内容,这也是体积减小的关键。
- 一定要确认好哪个是最佳epoch(比如验证集准确率最高、损失最低),别加载错了。
内容的提问来源于stack exchange,提问作者math_guy_shy
相关产品推荐
相关产品推荐

