doukione 2024-07-02 17:52 采纳率: 100%
浏览 7
已结题

ray.tune无法保存checkpoint文件


import ray  
from ray import tune  
from ray.rllib.agents.dqn import DQNTrainer  
from ray.tune.schedulers import ASHAScheduler  
import gym  

  
# 初始化Ray  
ray.init(num_cpus=8)       

def train_dqn(config):
    print("on train")  
    trainer = DQNTrainer(config=config, env="CartPole-v1") 
    result = trainer.train()  
    return result
  
# 设置训练配置  
config = {  
    "log_level": "DEBUG",  
    "num_workers": 4,  
    "framework": "torch",  
    "lr": 2e-3,  
    "replay_buffer_config": {  
        "capacity": 10000,  
        "learning_starts": 500  
    },  
    "train_batch_size": 64,  
    "target_network_update_freq": 10,  
    "gamma": 0.99,  
}
exp_config = {
    "run_or_experiment": train_dqn,
    "checkpoint_freq": 5,
    "checkpoint_at_end": True,
    "local_dir": "C:/Users/jinsong.shao/Desktop/model/checkpoints",
    "stop": {"training_iteration": 1000},
    "config": config,
    "scheduler":ASHAScheduler(metric="episode_reward_mean", mode="max"),
    "resources_per_trial":{"cpu": 4, "gpu": 0},
    }
# 运行Tune实验进行训练  
tune.run(**exp_config)

我是ray框架的初学者,尝试构建一个简单的训练,代码如上,遇到的问题是并没有如我期望的5次迭代保存一个checkpoint文件以及在达到最大迭代次数后也没有停止训练
ps.请不要使用AI作答,我已经和gpt纠结了很久都没有答案,期待各位的解惑,十分感谢!

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-02 17:53
    关注

    引自免费微信小程序:皆我百晓生

    从您给出的代码和描述中,我可以看出您在尝试使用 Ray 进行分布式训练并尝试使用其内置的 tune 模块来管理训练过程。关于您的问题,无法保存 checkpoint 文件以及训练未按照预期停止的问题,我可以提供一些可能的解决方案和建议。

    首先,关于无法保存 checkpoint 文件的问题,请确保您的本地目录路径("C:/Users/jinsong.shao/Desktop/model/checkpoints")存在且您有相应的写入权限。同时,确认该路径是否被正确地设置为 local_dir 参数的值。另外,确保在您的 Ray 版本中支持保存 checkpoint 功能。在 Ray 的某些版本中可能存在关于 checkpoint 功能的问题或缺陷,您可以尝试更新 Ray 到最新版本并再次尝试。

    其次,关于训练未按照预期停止的问题,您可以确认训练迭代次数是否正确设置了 stop 参数中的 "training_iteration": 1000 这一部分。此外,确认您的代码是否正确运行并且没有被其他异常中断。如果在训练过程中发生异常,训练可能会提前终止,但可能由于某种原因并未正常结束并保存 checkpoint 文件。确保训练过程中的所有操作都符合预期执行完毕。

    您可以尝试以下几个步骤来调试和解决这些问题:

    1. 确认路径问题:确保 "C:/Users/jinsong.shao/Desktop/model/checkpoints" 这个目录路径是正确的,并且您有足够的权限在该路径下创建文件。尝试手动创建一个测试文件来验证权限和路径是否正确。

    2. 更新 Ray 版本:检查您当前的 Ray 版本,并尝试更新到最新版本。可以使用如下命令来更新 Ray:pip install --upgrade ray。更新后重新运行代码尝试保存 checkpoint 文件。

    3. 检查代码执行流程:确保训练过程中没有任何异常抛出,并且代码正常执行完毕。可以使用断点调试或者打印日志来追踪代码执行流程。

    如果以上步骤仍然无法解决问题,您可以尝试查看 Ray 的日志输出信息,寻找可能的错误信息或警告信息,以便进一步定位问题所在。此外,也可以考虑查阅 Ray 的官方文档或社区论坛,看看是否有其他用户遇到类似的问题和解决方案。希望这些建议能够帮助您解决问题!如果您还有其他问题或需要进一步的帮助,请随时提问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月12日
  • 已采纳回答 7月4日
  • 创建了问题 7月2日

悬赏问题

  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含