Caffe:如何选择可以容纳在内存中的最大可用批量大小?

Posted

技术标签:

【中文标题】Caffe:如何选择可以容纳在内存中的最大可用批量大小?【英文标题】:Caffe: how to choose maximum avalible batch size that can fit in memory? 【发布时间】:2016-10-08 11:44:14 【问题描述】:

由于 GPU 内存 (1Gb) 较小,我遇到了一些问题,问题是现在我通过反复试验选择了 batch_size,即使在日志中按行打印的内存大小 Memory required for data: 似乎小于 1Gb 它可能会失败。

所以我的问题是:

    如何自动选择适合 GPU 内存的最大可用批量大小? batch_size 越大越好吗? 如何计算网络部署期间训练和前向传递所需的峰值内存?

更新: 我还检查了 code ,但我不确定 top_vecs_ 是什么

【问题讨论】:

【参考方案1】:

如果日志中按行打印的内存大小 数据所需的内存小于您的​​总 GPU 内存,它仍然可能失败,因为其他程序正在使用您的一些 GPU 内存。在 linux 下,您可以使用 nvidia-smi 命令来检查统计信息。对我来说 Ubuntu 图形环境使用 97MB。

    没有办法说 caffe 可以自动完成。 是的,用于培训。它一次处理更多数据,并且会在更少的时期内收敛,因为 SGD 每次迭代都会产生与 GD 更相似的结果。对于部署而言,这并不重要 这可以让你大致了解如何计算这个:http://cs231n.github.io/convolutional-networks/

【讨论】:

是的,我已经阅读了这篇文章,但我的问题是更具体的 Caffe 实现,所以我想知道 Caffe 如何管理它的内存。

以上是关于Caffe:如何选择可以容纳在内存中的最大可用批量大小?的主要内容,如果未能解决你的问题,请参考以下文章

redis内存满了怎么办

Caffe内存不足,用在哪里?

redis怎么做到高可用的 高并发

如何获取联系人可用的最大内存

java大批量数据导入(MySQL)

如何在训练期间调整 gpu 批量大小?