2

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

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

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

"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()抛出这个错误

4

2 回答 2

2

load_gpt2()在微调之前您不需要(也不能)运行。run_name相反,您只需要给予finetune(). 我同意这令人困惑。我有同样的麻烦。

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文件夹中获取最新的检查点,加载其权重,并从中断处继续训练。您可以通过检查 epoch 编号来确认这一点——它不会再次从 0 开始。例如,如果您之前训练了 25 个 epoch,它将从 26 开始:

Training...

[26 | 7.48] loss=0.49 avg=0.49

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

tf.reset_default_graph()
于 2020-04-24T04:17:54.627 回答
1

我已经尝试了以下并且工作正常:

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 相同的“run_name”restore_from = 'latest'

于 2021-04-13T11:19:13.797 回答