GPT-2 продолжить обучение с контрольно-пропускного пункта - PullRequest
2 голосов
/ 06 февраля 2020

Я пытаюсь продолжить обучение с сохраненной контрольной точки, используя настройку colab для GPT-2-simple по адресу:

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

Но я просто не могу заставить его работать. Загрузка сохраненной контрольной точки из моего googledrive работает нормально, и я могу использовать ее для генерации текста, но я не могу продолжить обучение с этой контрольной точки. В gpt2.finetune () я ввожу restore.from='latest" и overwrite=True, и я пытался использовать и одно и то же имя_произведения и другое, используя 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() выдает эту ошибку

1 Ответ

0 голосов
/ 24 апреля 2020

Вам не нужно (и не можете) запустить 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, загрузит ее веса и продолжит тренировки с того места, где она остановилась. Вы можете подтвердить это, проверив номер эпохи - он не начинается снова с 0. Например, если вы ранее обучали 25 эпох, он начнется с 26:

Training...

[26 | 7.48] loss=0.49 avg=0.49

Также обратите внимание, что для запускать предварительную настройку несколько раз (или для загрузки другой модели) обычно необходимо перезапустить среду выполнения python. Вместо этого вы можете выполнить это перед каждой командой finetine:

tf.reset_default_graph()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...