PaddleNLP [问题]:在`paddle.distributed.launch`启动多进程训练结束后,从检查点加载最佳模型时出现错误,

dkqlctbz  于 2个月前  发布在  其他
关注(0)|答案(8)|浏览(53)

从错误信息来看,问题出在训练完成后尝试删除tokenizer_config.json文件时,找不到该文件。这可能是因为在训练过程中,该文件被移动或删除了。

为了解决这个问题,你可以在训练完成后确保tokenizer_config.json文件仍然存在,或者在删除检查点之前先将模型权重保存到其他位置。你可以使用以下代码来保存模型权重:

model.save_checkpoint(f"{checkpoint_path}/best_model")

然后,你可以继续删除检查点文件夹:

shutil.rmtree(checkpoint_path)
n8ghc7c1

n8ghc7c11#

请查看您的checkpoint/checkpoint-170目录,是否已保存tokenizer。一个简单的解决方法是去掉参数:

load_best_model_at_end
oxf4rvwz

oxf4rvwz2#

可以看一下你的checkpoint/checkpoint-170目录,是不是没有保存tokenizer,一个简单的解决方式是去掉参数:

load_best_model_at_end

是这样的,如果要使用early_stopping ,那么load_best_model_at_end是必须项。当报这个错的时候,类似checkpoint-170这种目录已经不存在了。我查看worklog发现,其实训练已经完成了。但是可能是多进程开启的原因,每个进程都想load_best_model_at_end。所以只有一个进程能成功。其它的进程应该都失败了。
python3 -m paddle.distributed.launch --nproc_per_node=24
这样是正确开启多进程的方式吗? 在CPU模式下

ttp71kqs

ttp71kqs3#

不建议在CPU上进行训练,因为训练效率较低。关于GPU的分布式训练,可以参考以下文档:

https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/distributed/launch_cn.html#launch

col17t5w

col17t5w4#

您可以使用paddle.distributed.launch模块启动训练任务。该模块通过指定启动的程序文件,以文件为单位启动多进程来实现多卡同步训练。如果您不想使用paddle.distributed.launch,您可以使用paddle.distributed.spawn方法以函数为单位启动多进程来实现多卡同步的,可以更好地控制进程,在日志打印、训练退出时更友好 。

hs1ihplo

hs1ihplo5#

这个可以在框架下面提issue,CPU场景不是很高频,应该是不支持的。分布式训练可以参考文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/06_distributed_training/index_cn.html

mum43rcc

mum43rcc6#

这个可以在框架下面提issue,cpu场景不是很高频,应该是不支持的,分布式训练可以参考文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/06_distributed_training/index_cn.html

明白了,感谢。

wlwcrazw

wlwcrazw7#

这个问题已经过时了,因为它已经开放了60天,没有任何活动。当前的问题在60天内没有活动,被标记为过时。

voj3qocg

voj3qocg8#

使用的版本如下:

  • paddlepaddle: 2.6.1
  • paddlenlp: 2.8.0

相关问题