培训因ResourceExausted错误而中断

培训因ResourceExausted错误而中断,第1张

培训因ResourceExausted错误而中断

这些天,我已经做了很多调整以解决此问题。

最后,我还没有解决问题中描述的内存大小之谜。我想在计算梯度时,tensoflow会积累大量用于计算梯度的额外内存。我需要检查这个时候看起来很麻烦的张量流的来源。您可以通过以下命令从终端检查模型使用了多少内存,

nvidia-smi

从此命令判断,您可以猜测可以使用多少额外的内存。

但是解决这类问题的方法在于减小批量大小,

就我而言,将批处理的大小减少到3个作品。这可能因模型而异。

但是,如果您使用的模型中的嵌入矩阵大得多而无法将其加载到内存中,该怎么办?

解决方案是编写一些痛苦的代码。

您必须查找嵌入矩阵,然后将嵌入加载到模型。简而言之,对于每一批,您都必须将查找矩阵提供给模型(通过中的feed_dict参数提供它们

sess.run()
)。

接下来,您将面临一个新问题,

您不能

trainable
以这种方式进行嵌入。解决方案是使用嵌入到中,
placeholder
然后将它们分配给
Variable
(例如
A
)。在每批训练之后,学习算法都会更新变量
A
。然后通过张量流计算
A
向量的输出,并将它们分配给模型外部的嵌入矩阵。(我说这个过程很痛苦)

现在,您的下一个问题应该是,如果因为嵌入查找太大而无法将嵌入查找提供给模型,该怎么办。这是您无法避免的基本问题。这就是为什么NVIDIA GTX
1080、1080ti和NVIDA TITAN Xp具有如此高的价格差异的原因,尽管NVIDIA 1080ti和1080具有更高的执行频率。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5645566.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存