pytorch - 在 Actor Critic (A2C) Stable Baselines3 实施中未充分利用 GPU
问题描述
我正在尝试使用 StablesBaselines3 的 A2C 在我的自定义环境中训练代理。我的问题是我的 GPU 利用率非常低(仅 10 % 左右),而我的 CPU 利用率已经达到上限。因此,训练非常非常缓慢。根据@araffin [https://github.com/hill-a/stable-baselines/issues/308] 解决的这个讨论线程,我尝试了以下事情
- 将 Actor 和 Critic 架构扩展为分别具有 256、256 和 128 个神经元的三层神经网络。在那之后 GPU 利用率确实增加了,但它只是微不足道的(从 10 % 增加到 15 %),就像这个建议一样
- 将
device
A2C 方法的参数cuda
从默认值 ' ' 更改为 'auto
' - 没有改进
在上述讨论中,尚不完全清楚什么对用户有用。我的 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配置是:
- 库达版本 - 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)
- anaconda 环境中的 Python 3.7
任何帮助将不胜感激!
解决方案
稳定的基线正在使用您的 gpu ...如果您在第二个选项卡上查看任务管理器,请单击您的 gpu 而不是 3D 选择 cuda,您将看到 cuda 的使用
我的环境遇到了一些问题,因为我的环境使用了 pandas .. 而 pandas 使用 cpu .. 在 windows 上使用 cudf 是不可能的,所以我的 cpu 使用了 100%
我在我的自定义环境中使用了 pandas 和 numpy .. 为了改进它,我应该使用 cunumery 和 cudf,但要做到这一点,我需要 linux。
所以现在,我的 cpu 使用 100% gpu 使用 cuda 70% 和 gpu 内存几乎 1.7 gb
推荐阅读
- bitbucket - bitbucket 中某些文件中的编辑按钮被禁用
- javascript - React Material UI Autocomplete - 如何将文本名称显示为选择但将 ID 作为值发送?
- java - 无法运行 Cucumber 文件
- python - 字符串类型的排序列表,包含电子邮件域名
- simulation - 使用 FMU 容器的 ModelStructure/Outputs 错误
- javascript - 返回(或映射)Javascript + React后添加类
- arrays - 动态分配二维字符数组,并创建自身的副本
- makefile - 忍者:错误:build.ninja:6:预期的“命令=”行
- r - BlueSky Statistics (Open Source 64bit) v7.20 error "could not find function "BSkyOpenNewDataset"
- ios - Flutter ios“无法为模拟器构建应用程序。”