问题标签 [rllib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
184 浏览

numpy - 带有 RuntimeWarning 的 RLlib PPO 奖励扁平线:空切片的平均值

我已经为此苦苦挣扎了几天,所以真的需要我能得到的所有帮助!在我使用 TensorFlow 支持的 RLlib 的 PPO 算法进行训练期间,所有训练都进行得很好(奖励正在增加)。系统可获得的最高奖励为 +20车辆静止不动且不做任何事情可以获得0奖励

奖励增加注释奖励增加

突出显示的区域并没有真正学习,因为这发生在看起来像的警告之后

打印了几次,然后是另一个多次打印的警告:

这大约是我的训练集开始超时并且集长度直线上升的时候。

剧集超时

剧集长度直接拍摄

请注意(在顶部)由于超时(而不是完成或达到目标)而结束的平均剧集数如何突然飙升至接近 1M 的训练步骤。剧集的长度(底部)或剧集中的步数也同时上升。

我不确定这是否是由于某种内存问题,因为某些运行也有 RAM 警告以及上面所说的仅剩 10% 的 RAM 内存,这可能会导致错误。我尝试在 ray.init() 上设置某些值但无济于事

  • object_store_memory
  • _redis_max_memory
  • _driver_object_store_memory
  • _记忆

我在具有 16 GB RAM、12 个 CPU 内核和 1 个 GPU 以及相关 RLlib(Ray 1.4.0)配置的 Ubuntu 18.04.5 LTS 上运行它:

更新(2021 年 3 月 7 日)

我做了更多的挖掘,似乎生成的连续动作突然变成了nan值。此外,在此之前的某些操作也会超出指定的操作空间范围。示例:动作空间应该在 -7.5 和 +3 之间,但生成的动作可能具有值 50。我仍然不确定为什么会发生这种情况,或者这两个问题是否相关。

有人可以指出我正确的方向吗?我将不胜感激。

更新(2021 年 5 月 7 日)

我已将其移至另一个问题,因为我已将问题的性质缩小到在这里获得nan 连续动作

0 投票
2 回答
303 浏览

machine-learning - RLlib PPO 连续动作在 total_loss = inf 之后似乎变成了 nan?

在使用 RLlib 的(1.4.0)PPO 网络在自定义多代理环境上进行了一些训练后,我发现我的连续动作变成了nan(爆炸?),这可能是由糟糕的梯度更新引起的,而梯度更新又取决于损失/目标函数

据我了解,PPO 的损失函数依赖于三个术语:

  1. PPO 梯度目标[取决于旧策略和新策略的输出、优势和“剪辑”参数 = 0.3,比如说]
  2. 价值函数损失
  3. 熵损失[主要是为了鼓励探索]

总损失 = PPO 梯度目标(裁剪)- vf_loss_coeff * VF 损失 + entropy_coeff * 熵。

我已将熵系数设置为 0。所以我专注于导致总损失的其他两个函数。如下面的进度表所示,总损失变为inf的相关部分是问题区域。我发现的唯一变化是政策损失在第 #445 行之前都是负数。

所以我的问题是:谁能解释一下保单损失应该是什么样子,这是否正常?一段时间后,如何通过连续动作变为 nan 来解决此问题?只是降低学习率的问题吗?

编辑

这是相关问题的链接(如果您需要更多上下文)

编辑结束

我真的很感激任何提示!谢谢!

总体损耗 保单损失 VF损失
430 6.068537 -0.053691725999999995 6.102932
431 5.9919114 -0.046943977000000005 6.0161843
432 8.134636 -0.05247503 8.164852
433 4.222730599999999 -0.048518334 4.2523246
434 6.563492 -0.05237444 6.594456
435 8.171028999999999 -0.048245672 8.198222999999999
436 8.948264 -0.048484523 8.976327000000001
437 7.556602000000001 -0.054372005 7.5880575
438 6.124418 -0.05249534 6.155608999999999
439 4.267647 -0.052565258 4.2978816
440 4.912957700000001 -0.054498855 4.9448576
441 16.630292999999998 -0.043477765999999994 16.656229
442 6.3149705 -0.057527818 6.349851999999999
443 4.2269225 -0.05446908599999999 4.260793700000001
444 9.503102 -0.052135203 9.53277
445 信息 0.2436709 4.410831
446 -0.00029848056 22.596403
447 0.00013323531 0.00043436907999999994
448 1.5656527000000002e-05 0.0002645221
449 1.3344318000000001e-05 0.0003139485
450 6.941916999999999e-05 0.00025863337
451 0.00015686743 0.00013607396
452 -5.0206604e-06 0.00027541115000000003
453 -4.5543664e-05 0.0004247162
454 8.841756999999999e-05 0.00020278389999999998
455 -8.465959e-05 9.261127e-05
456 3.8680790000000003e-05 0.00032097592999999995
457 2.7373152999999996e-06 0.0005146417
458 -6.271608e-06 0.0013273798000000001
459 -0.00013192794 0.00030621013
460 0.00038987884 0.00038019830000000004
461 -3.2747877999999998e-06 0.00031471922
462 -6.9349815e-05 0.00038836736000000006
463 -4.666238e-05 0.0002851575
464 -3.7067155e-05 0.00020161088
465 3.0623291e-06 0.00019258813999999998
466 -8.599938e-06 0.00036465342000000005
467 -1.1529375e-05 0.00016500981
468 -3.0851965e-07 0.00022042097
469 -0.0001133984 0.00030230957999999997
470 -1.0735256e-05 0.00034000343000000003
0 投票
0 回答
28 浏览

python-3.x - 存储来自 RLlib 训练的策略部署的观察、动作、奖励元组

我正在尝试存储来自 RLlib 推出操作的观察、动作和奖励元组。似乎推出功能仅在代理与环境交互时跟踪有关代理奖励的信息。有谁知道如何存储所有这些信息?我查看了 rllib 的rollout.py 文件,但看起来实际存储此信息的功能隐藏在 Ray 的分布式计算功能中。

0 投票
0 回答
15 浏览

reinforcement-learning - RLLIB 强化学习推车杆无法收敛/永远占用

我已经按照文档安装了 rllib(几乎只是运行了一个 pip install 命令),并尝试按照文档运行基本的 cartpole 环境,命令:rllib train --run DQN --env CartPole-v0 我尝试了这两个对于 tensorflow 和 pytorch,但问题仍然存在。政策永远不会收敛。

0 投票
0 回答
21 浏览

python - 为 ray.rllib.env.policy_client 创建单元测试

我有一个从Ray框架调用PolicyClient的函数,然后调用 start_episode。现在我想为这个函数创建单元测试:

任何人都可以帮忙吗?

0 投票
1 回答
269 浏览

python - 如何使用检查点以外的火炬保存加载方法将 ray rllib pytorch 整个模型导入下一轮训练和后续推理

在 ray rllib 中,我通常会应用 ray.tune.run 进行这样的 ppo 训练:

在下一轮,我通常使用这样的恢复检查点方法重新训练模型:

推断:

这些流程奏效了。问题是(1):我是否可以在 ray.tune.run 结束时保存整个 pytorch 模型?(2) 下一轮ray.tune.run训练除了checkpoints恢复以外,可以导入pytorch模型吗?(3) 在推理阶段,如何将训练好的整个 pytorch 模型导入 PPO 代理?在恢复代理推理流程中,我一次不能将超过 1o 个模型加载到计算机内存中。大负载显示OOM问题。如果我一个一个地恢复一个模型,检查点恢复过程太耗时,不能满足时效性要求。谁能帮我?

0 投票
0 回答
15 浏览

python - 将 RLlib 与 Jupyter 小部件一起使用

我正在尝试按照本教程来了解RLlib的基础知识。

我在 OS X 上使用 pipenv 使用以下 Pipfile 设置我的环境:

然后我通过运行设置环境:

这安装(除其他外):

  • 蟒蛇 3.8.12
  • jupyter 实验室 3.1.13
  • 射线 1.6.0
  • 火炬 1.9.1
  • ipywidgets 7.6.5

有了这个,我可以运行以下单元格:

这个简单的计数器给出了预期的输出。它打印 0,清除并打印 1,清除并打印 2,依此类推。

如果我然后运行以下两个单元格:

他们都运行没有错误。如果我然后重新运行计数器单元,它现在显示:

也就是说,小部件似乎突然停止工作。所有这些行都在不清除屏幕的情况下打印。导致问题的特定行是rllib_trainer = PPOTrainer(config=config). 如果我删除该行,小部件将继续工作。但是......创建像这样的 RL 训练器是本教程的重点。

我不是 Ray/RLlib 的专家。初始化培训师后如何保持小部件正常工作?

0 投票
0 回答
130 浏览

google-colaboratory - 即使分配了内存,也没有在 Google colab 中获得 Ray Rllib 的任何结果

我正在尝试遵循本教程 1https ://github.com/anyscale/academy/blob/main/ray-rllib/02-Introduction-to-RLlib.ipynb 。但是当我在 Google colab 上实现它时,我没有得到任何结果。它仅显示试用未决和已分配内存

运行此实例后,我得到

在此处输入图像描述

我在这里有什么问题吗?为什么即使初始化了ray它也没有运行

0 投票
1 回答
70 浏览

python - RLLIB PPO 算法中的神经网络输出

我想问,一个连续动作空间的策略的神经网络输出是如何组织的?

我知道 PPO 中的输出有均值和标准。开发。给定动作的价值。但是,这是如何组织的?例如,代理有 2 个动作。我们得到:

或者:

我在源代码中搜索了采样器功能。然而,我什么也没找到。

0 投票
0 回答
149 浏览

reinforcement-learning - 将 RLlib 用于自定义多智能体健身房环境

我正在尝试使用 RLlib 设置一个自定义的多代理环境,但是我正在使用曾经在线可用的环境,或者我正在制作一个,我遇到了与下面提到的相同的错误。请帮帮我。我已经安装了他们在步骤 (a) 中向我提出的任何要求我正在使用注册我的环境

还有什么我应该照顾的吗?这只是我看到的示例中的一个基本环境。甚至我正在定制的环境也面临着同样的问题。我已将观察空间初始化为元组,因此我无法使用稳定的基线进行评估。

请帮帮我。