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