第十三章:huggingface的resume训练源码内容

作者 : admin 本文共1849个字,预计阅读时间需要5分钟 发布时间: 2024-06-14 共1人阅读

文章目录

  • 前言
  • 一、Resume训练源码解读(Trainer->train方法)
    • 1、resume_from_checkpoint设定
    • 2、resume_from_checkpoint获得文件夹路径
    • 3、条件判断加载权重(resume_from_checkpoint is not None and not is_sagemaker_mp_enabled() and not self.is_deepspeed_enabled)
    • 4、inner_training_loop继续传入resume_from_checkpoint文件路径
  • 二、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)
      • 1、ignore_data_skip决定当前epoch继续迭代
      • 2、trainer_state.json内容
    • 5、self.model、self.optimizer、self.lr_scheduler、train_dataloader更新
    • 6、跳过resume的epoch
    • 7、随机状态加载与step
      • 1、满足steps_trained_in_current_epoch == 0条件加载随机状态参数rng_state.pth
      • 2、当前迭代数据处理与rng_to_sync设置
      • 3、满足rng_to_sync条件加载随机状态参数rng_state.pth
    • 8、总结
  • 三、self._load_from_checkpoint(resume_from_checkpoint)源码解读
    • 1、参数
    • 2、获取模型相关配置文件路径
    • 3、config加载更新
      • 1、config = PretrainedConfig.from_json_file(config_file)
    • 4、权重文件加载
      • 1、不同条件权重载入
      • 2、os.path.isfile(weights_file) or os.path.isfile(safe_weights_file)条件载入权重
      • 3、is_peft_available() and isinstance(model, PeftModel)条件载入权重-LoRA
      • 4、else条件载入权重
  • 四、self._load_optimizer_and_scheduler源码解读
    • 1、self._load_optimizer_and_scheduler源码调用
    • 2、checkpoint is None与self.is_deepspeed_enabled判断
    • 3、optimizer.pt文件存在判断
    • 4、optimizer.pt、scheduler.pt与scaler.pt重载结构
    • 5、小节概括
  • 六、self._load_rng_state(resume_from_checkpoint)源码解读
    • 1、self._load_rng_state完整源码
    • 2、self._load_rng_state源码解读
  • 总结

前言

大模型基本使用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
本站无任何商业行为
个人在线分享 » 第十三章:huggingface的resume训练源码内容
E-->