文章目录
- 前言
- 一、Resume训练源码解读(Trainer->train方法)
- 二、Resume训练源码解读(_inner_training_loop)
-
- 1、条件判断加载权重(is_sagemaker_mp_enabled() and resume_from_checkpoint is not None)
- 2、条件判断加载权重(resume_from_checkpoint is not None and self.is_deepspeed_enabled)
- 3、optimizer_and_scheduler载入
- 4、状态载入与更新(trainer_state.json)
- 5、self.model、self.optimizer、self.lr_scheduler、train_dataloader更新
- 6、跳过resume的epoch
- 7、随机状态加载与step
- 8、总结
- 三、self._load_from_checkpoint(resume_from_checkpoint)源码解读
- 四、self._load_optimizer_and_scheduler源码解读
- 六、self._load_rng_state(resume_from_checkpoint)源码解读
- 总结
前言
大模型基本使用huggingface来实现。对于不太理解其内容基本按照官网教程或相关博客等来实现。想进一步激发开源大模型在行业领域提升性能是棘手问题。该问题会涉及开源代码二次开发进行实验测试。基于此,本教程不同文字或理论介绍内容,而从源码解读其训练逻辑、权重保存、高效微调方法(LoRA)、断点续训方法、模型推理权重处理等方法。本教程所有内容完全依托huggingface源码与相关Demo验证来解读,助力大模型使用。
本篇文章基于上篇文章Demo解读相关resume源码内容,特别是权重等相关内容加载。
一、Resume训练源码解读(Trainer->train方法)
依然使用trainer.train函数内容
,但我这次直解读与resume相关内容,其它在前面文章已有解读。
1、resume_from_checkpoint设定
仍然进入train函数,可知不给参数resume_from_checkpoint是默认为None,或给参数resume_from_checkpoint=False
则通过下面转成None。
其代码如下:
def train(
self,
resume_from_chec