tensorflow - 如何进行更快的深度强化学习训练
问题描述
如您所知,使用单个 CPU 进行深度强化学习 (DRL) 训练可能需要 10 天以上的时间。使用并行执行工具(如 CUDA),训练时间最多可减少 1 天(取决于 CPU 和 GPU 功能)。但是在使用 CUDA 时,GPU 使用率在 10% 左右,训练时间仍然太长。对于想要在开发代码时经常检查结果的开发人员来说,这非常令人不安。在编码技巧、构建模型、设置、GPU 硬件等方面,您有什么建议尽可能减少训练时间?
解决方案
从文档:
默认情况下,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 进行同步分布式训练。这个博客里也有更直观的解释。
最后,为了更有效的处理,您可以使用混合精度来更改模型间参数的数据类型。
推荐阅读
- php - PHP当我输入文本以存储数据时会中断,但是当我拉它时显示水平
- php - 文件大小超过 5GB 的 AWS MultipartUploadException
- sql - 比较两个不同的表以检查新进程是否插入了与旧表相同的数据
- python - 当只有一个时,为什么 df.loc[] 返回同一行两次?
- python - 通过从另一个数据框中提取值来应用函数
- python - 遍历python中的任意嵌套数组并更改匹配值
- javascript - 发送请求后,Firebase http 无法设置标头
- java - 有没有更好/更短的语法?
- google-chrome-extension - 使用范围 = 名称电子邮件在 chrome 扩展中使用 Apple 登录
- python - 我该如何解决这个问题 pymongo.errors.OperationFailure?