【问题标题】:is there a way to save only the model with huggingface trainer?有没有办法只保存带有拥抱脸训练器的模型?
【发布时间】:2021-12-07 14:53:07
【问题描述】:

我想在训练期间保留多个检查点以便以后分析它们,但Trainer 还保存其他文件以恢复训练。有没有办法只保存模型以节省空间和编写时间?

 15K  rng_state.pth
 906  trainer_state.json
 623  scheduler.pt
2,1G  optimizer.pt
2,5K  training_args.bin
1,1G  pytorch_model.bin
 900  config.json

我可以在训练后删除优化器,但我也在使用写入速度较慢的磁盘,所以这也是一个考虑因素

【问题讨论】:

    标签: huggingface-transformers


    【解决方案1】:

    很遗憾,目前无法禁用单个文件的保存。基本上有两种方法可以获取您的行为:

    1. “hacky”方法是简单地禁用存储优化器的Trainer 源代码中的代码行,(如果您在本地机器上训练)应该是this one。然而,每当你更新你的转换器版本时,这可能会导致丑陋的行为,这就是我推荐第二个的原因。
    2. 覆盖您自己的Trainer 对象中的_save_checkpoint() 函数。这样,您始终可以保证保存正确的文件,并且不必与库的代码进行交互。

    这个外观的轮廓:

    from transformers import Trainer
    class OwnTrainer(Trainer):
       # Don't forget to correctly set up __init__()
       # ...
    
       def _save_checkpoint(self, model, trial, metrics=None):
           # insert your own behavior here
    

    【讨论】:

    • _save_checkpoint() 可能是一个选项,但它仍然是私有的,并且覆盖它需要复制一些也可以在较新版本中更新的部分(包括出于某种原因确定最佳检查点的机制)
    • 是的,这很准确,但至少它清楚地将您的 自己的 实现与库分开,这是部分改进。由于目前没有其他方法(除了自己编写整个培训师),恐怕你将不得不照顾任何未来的更新,无论如何......
    猜你喜欢
    • 2021-08-16
    • 2021-12-21
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 2021-12-06
    • 2019-07-27
    相关资源
    最近更新 更多