ludwig 关于恢复训练的问题

xesrikrc  于 2个月前  发布在  其他
关注(0)|答案(4)|浏览(45)

描述错误

我使用以下命令恢复训练:

train_stats_model, _, _ = model.train(
    training_set=training_data,
    validation_set=val_data,
    model_name='model',
    skip_save_processed_input=True,
    model_resume_path='results/api_experiment_model_11/'
)

模型确实存在于 results/api_experiment_model_11/ 中,作为上一次运行的输出。
但是我得到了以下错误。想知道如何正确地恢复训练?谢谢。

ValueError: in user code:

    /Users/bachbui/miniforge3/envs/py39a/lib/python3.9/site-packages/ludwig/models/ecd.py:187 train_step  *
        optimizer.minimize_with_tape(
    /Users/bachbui/miniforge3/envs/py39a/lib/python3.9/site-packages/ludwig/modules/optimization_modules.py:78 minimize_with_tape  *
        self.apply_gradients(zip(gradients, variables))
    /Users/bachbui/miniforge3/envs/py39a/lib/python3.9/site-packages/tensorflow/python/keras/optimizer_v2/optimizer_v2.py:636 apply_gradients  **
        self._create_all_weights(var_list)
    /Users/bachbui/miniforge3/envs/py39a/lib/python3.9/site-packages/tensorflow/python/keras/optimizer_v2/optimizer_v2.py:821 _create_all_weights
        _ = self.iterations
    /Users/bachbui/miniforge3/envs/py39a/lib/python3.9/site-packages/tensorflow/python/keras/optimizer_v2/optimizer_v2.py:828 __getattribute__
        return super(OptimizerV2, self).__getattribute__(name)
    /Users/bachbui/miniforge3/envs/py39a/lib/python3.9/site-packages/tensorflow/python/keras/optimizer_v2/optimizer_v2.py:983 iterations
        self._iterations = self.add_weight(
    /Users/bachbui/miniforge3/envs/py39a/lib/python3.9/site-packages/tensorflow/python/keras/optimizer_v2/optimizer_v2.py:1184 add_weight
        variable = self._add_variable_with_custom_getter(
    /Users/bachbui/miniforge3/envs/py39a/lib/python3.9/site-packages/tensorflow/python/training/tracking/base.py:810 _add_variable_with_custom_getter
        new_variable = getter(
    /Users/bachbui/miniforge3/envs/py39a/lib/python3.9/site-packages/tensorflow/python/keras/engine/base_layer_utils.py:127 make_variable
        return tf_variables.VariableV1(
    /Users/bachbui/miniforge3/envs/py39a/lib/python3.9/site-packages/tensorflow/python/ops/variables.py:260 __call__
        return cls._variable_v1_call(*args, **kwargs)
    /Users/bachbui/miniforge3/envs/py39a/lib/python3.9/site-packages/tensorflow/python/ops/variables.py:206 _variable_v1_call
        return previous_getter(
    /Users/bachbui/miniforge3/envs/py39a/lib/python3.9/site-packages/tensorflow/python/ops/variables.py:67 getter
        return captured_getter(captured_previous, **kwargs)
    /Users/bachbui/miniforge3/envs/py39a/lib/python3.9/site-packages/tensorflow/python/eager/def_function.py:768 invalid_creator_scope
        raise ValueError(

    ValueError: tf.function-decorated function tried to create variables on non-first call.
5vf7fwbs

5vf7fwbs1#

@mbui0327 可能是文档的问题,我们应该更清楚地说明实验输出目录和模型输出目录之间的区别。
您可以通过指定:
model_resume_path='results/api_experiment_model_11/model'
来解决这个问题。
如果这解决了您的问题,请告诉我。

sbtkgmzw

sbtkgmzw2#

@w4nderlust 它对model_resume_path='results/api_experiment_model_11/model'也没有效果。我得到了这样的结果:

FileNotFoundError: [Errno 2] No such file or directory: '.../results/api_experiment_model_11/model/model/training_progress.json'

如果我在不改变epoch(即不更新model.config['training']['epochs'])的情况下使用model_resume_path='results/api_experiment_model_11/,那么训练就会立即完成。但是如果我增加了那个epoch值,那么我就会遇到之前帖子中提到的错误。

uklbhaso

uklbhaso3#

明白了。我需要进一步详细调查一下,对于之前的误导性回答表示抱歉(在加载训练好的模型进行初始化时,需要指定路径中的model部分,而不是在恢复时)。

你能提供一个脚本来复制这种行为吗?如果数据是个问题,你可以使用lLudwig数据集合成器。另一个问题是:你是在另一个进程中继续训练,还是在原始训练的同一个进程中继续?我问这个问题是因为你收到的错误似乎可能与在恢复之前已经定义了由TF定义的图有关。

查看一下配置也会有所帮助。

fgw7neuy

fgw7neuy4#

感谢@w4nderlust。我会尝试提供可复现的脚本。快速回答您的问题。我使用了与第一个训练相同的笔记本上的不同Jupyter笔记本单元格。

相关问题