【问题标题】:GPU underutilized in Actor Critic (A2C) Stable Baselines3 implementation在 Actor Critic (A2C) Stable Baselines3 实施中未充分利用 GPU
【发布时间】:2021-06-12 03:30:36
【问题描述】:

我正在尝试使用 StablesBaselines3 的 A2C 在我的自定义环境中训练代理。我的问题是我的 GPU 利用率非常低(仅 10 % 左右),而我的 CPU 利用率已经达到上限。因此,训练非常非常缓慢。根据@araffin 解决的这个讨论主题,我尝试了以下事情 [https://github.com/hill-a/stable-baselines/issues/308]

  • 将 Actor 和 Critic 架构扩展到三层神经网络 网络分别有 256、256 和 128 个神经元。图形处理器 在那之后利用率确实增加了,但只是微不足道的 (从 10 % 增加到 15 %)如本建议所述
  • 将 A2C 方法的 device 参数从默认的“auto”更改为“cuda”- 没有改善

在上述讨论中,对用户有用的方法并不完全清楚。 我的 A2C 初始化如下:

import gym
from stable_baselines3 import A2C
policy_kwargs = dict(activation_fn=th.nn.ReLU,
                     net_arch=[dict(pi=[256, 256, 128], vf=[256, 256, 128])])
model = A2C("MlpPolicy", env, verbose=1,  learning_rate=linear_schedule(0.001),\
 n_steps=50, gamma=0.8, gae_lambda=1.0, ent_coef=0.2, vf_coef=0.2, \
tensorboard_log=logdir,  policy_kwargs=policy_kwargs, seed=50, device='cuda' )
model.learn(total_timesteps=50000)

GPU 配置为:

  • Cuda 版本 - 9.0
  • GPU - NVIDIA RTX 2080i
  • GPU 内存 - 11GB(其中仅使用了大约 1600MB)

CPU 配置

  • 每个核心的线程数 - 2
  • 每个插槽的核心 - 8 个
  • 英特尔 i9 内核 9900 K @ 3.6 Ghz
  • CPU 内存 - 32GB 软件版本
  • 火炬 - 1.6.0
  • Tensorflow GPU - 2.4.1(虽然我知道 SB3 实现使用 Torch)
  • 蟒蛇环境中的 Python 3.7

任何帮助将不胜感激!

【问题讨论】:

    标签: pytorch gpu reinforcement-learning


    【解决方案1】:

    稳定的基线正在使用您的 gpu ...如果您查看任务管理器 在第二个选项卡上单击您的 gpu 而不是 3D 选择cuda,你会看到cuda的用法

    我的 env 遇到了一些问题,因为我的 env 使用 pandas .. 而 pandas 使用 cpu .. 在 windows 上使用 cudf 是不可能的,所以我的 cpu 使用 100%

    我在我的自定义环境中使用了 pandas 和 numpy .. 为了改进它,我应该改用 cunumery 和 cudf,但要做到这一点,我需要 linux。

    所以现在,我的 cpu 使用 100% gpu 使用 cuda 70% 和 gpu 内存几乎 1.7 gb

    【讨论】:

      猜你喜欢
      • 2018-12-08
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 2019-03-03
      • 2018-03-20
      • 2021-10-27
      • 2020-04-22
      • 2021-03-09
      相关资源
      最近更新 更多