首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GPT-2从检查点继续训练

GPT-2从检查点继续训练
EN

Stack Overflow用户
提问于 2020-02-06 22:52:00
回答 2查看 1.9K关注 0票数 2

我正在尝试使用GPT-2的colab设置从已保存的检查点继续训练-simple网址为:

https://colab.research.google.com/drive/1SvQne5O_7hSdmPvUXl5UzPeG5A6csvRA#scrollTo=aeXshJM-Cuaf

但是我就是不能让它工作。从我的googledrive加载保存的检查点运行良好,我可以使用它来生成文本,但我不能从该检查点继续训练。在gpt2.finetune ()中,我输入了restore.from='latest"overwrite=True,并且我一直在尝试使用相同和不同的run_name,并且使用overwrite=True,或者不使用。我也尝试过在两者之间重启运行时,就像有人建议的那样,但没有帮助,我一直收到以下错误:

代码语言:javascript
运行
复制
"ValueError: Variable model/wpe already exists, disallowed. Did you mean to set reuse=True 
or reuse=tf.AUTO_REUSE in VarScope?"

我假设在继续训练之前我需要运行gpt2.load_gpt2(sess, run_name='myRun'),但是每当我第一次运行它时,gtp2.finetune()就会抛出这个错误

EN

回答 2

Stack Overflow用户

发布于 2020-04-24 12:17:55

在微调之前,你不需要(也不能)运行load_gpt2()。相反,您只需将run_name提供给finetune()即可。我同意这是令人困惑的地狱;我也有同样的麻烦。

代码语言:javascript
运行
复制
sess = gpt2.start_tf_sess()

gpt2.finetune(sess,
    file_name,
    model_name=model_name,
    checkpoint_dir=checkpoint_dir,
    run_name=run_name,
    steps=25,
)

这将自动从你的checkpoint/run-name文件夹中获取最新的检查点,加载它的权重,并从它停止的地方继续训练。您可以通过检查纪元编号来确认这一点-它不会再次从0开始。例如,如果你之前训练了25个时期,它将从26开始:

代码语言:javascript
运行
复制
Training...

[26 | 7.48] loss=0.49 avg=0.49

还要注意,要多次运行finetuning (或加载另一个模型),通常必须重新启动python运行时。您可以在每个finetine命令之前运行以下命令:

代码语言:javascript
运行
复制
tf.reset_default_graph()
票数 2
EN

Stack Overflow用户

发布于 2021-04-13 19:19:14

我尝试了以下几种方法,效果很好:

代码语言:javascript
运行
复制
tf.reset_default_graph()
sess = gpt2.start_tf_sess()
gpt2.finetune(sess,
          steps=n,
          dataset=file_name,
          model_name='model', 
          print_every=z,
          run_name= 'run_name',
          restore_from='latest',
          sample_every=x,
          save_every=y
          )

您必须指定与要恢复训练和hp restore_from = 'latest'的模型相同的‘run_name

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60097717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档