文章目录
- 前言
- 一、参数决定权重保存
- 二、Resume的Demo
- 三、Resume训练源码解读(Trainer->train方法)
- 三、Resume训练源码解读(Trainer->train->_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(resume_from_checkpoint)源码解读
- 六、self._load_rng_state(resume_from_checkpoint)源码解读
- 总结
前言
在huggingface中,有关trainer内容实在太多了,想完整给出trainer相关内容需要多篇文章来阐明。我想了想,我将布局6篇文章来构建有关内容。第一篇文章介绍TrainingArguments与trainner参数;第二篇文章给出一个完整Demo,并介绍trainner(train与_inner_training_loop)源码的整体结构,呈现一个整体框架;第三篇文章介绍(_inner_training_loop)给出数据构造、优化器构建方法源码解读;第四篇篇文章介绍(_inner_training_loop)中epoch外循环训练相关源码解读;第五篇文章介绍(_inner_training_loop)中step内循环训练相关源码解读;第六篇文章介绍Resume方法内容,包含继承数据、继承优化器、继承模型等实现完整断点续训功能。 而本篇为第五篇文章,主要解读huggingface的trainer的_inner_training_loop的step内循环训练相关源码内容。