如您所知,使用单个 CPU 进行深度强化学习 (DRL) 训练可能需要 10 天以上的时间。使用并行执行工具(如 CUDA),训练时间最多可减少 1 天(取决于 CPU 和 GPU 功能)。但是在使用 CUDA 时,GPU 使用率在 10% 左右,训练时间仍然太长。对于想要在开发代码时经常检查结果的开发人员来说,这非常令人不安。在编码技巧、构建模型、设置、GPU 硬件等方面,您有什么建议尽可能减少训练时间?
问问题
243 次
1 回答
0
从文档:
默认情况下,TensorFlow 映射几乎所有 GPU 的所有 GPU 内存(受 CUDA_VISIBLE_DEVICES 限制)对进程可见
因此,您不必更改任何设置以允许更多 GPU 使用。因此,要检查的最快的事情可能是它是否batch size
足够大——您可能根本没有充分利用可用内存。尝试将批量大小增加到出现 OOM 错误的程度,然后将其缩小一点以使其正常工作。
如果您可以访问多个 GPU,则可以使用 tensorflow 中的分布式策略来确保所有 GPU 都被使用:
mirrored_strategy = tf.distribute.MirroredStrategy()
with mirrored_strategy.scope():
<your model training code>
在此处查看文档
镜像策略用于在单个服务器上跨多个 GPU 进行同步分布式训练。这个博客里也有更直观的解释。
最后,为了更有效的处理,您可以使用混合精度来更改模型间参数的数据类型。
于 2021-04-29T09:37:43.020 回答