我用GPU训练了很多模型。我想调优网络的架构,所以我对不同的模型进行了顺序的训练,以比较它们的性能(我使用的是keras-tuner
)。
问题是有些模型非常小,而另一些则非常大。我不想把所有的GPU内存分配给我的培训,而只是我需要的数量。我有TF_FORCE_GPU_ALLOW_GROWTH
到true
,这意味着当一个模型需要大量内存时,GPU就会分配它。然而,一旦大模型已经训练,内存将不会释放,即使下一个训练是小模型。
有没有办法强迫GPU释放未使用的内存?有点像TF_FORCE_GPU_ALLOW_SHRINK
也许自动收缩可能很难实现。如果是这样的话,我会很高兴有一个手动发布,我可以添加一个回调,以便在每次培训后运行。
发布于 2022-11-16 12:31:39
您可以尝试使用以下代码限制GPU内存的增长:
import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(gpus[0], True)
第二种方法是使用tf.config.set_logical_device_configuration
配置虚拟GPU设备,并对总内存设置硬限制,以便将其分配给GPU。
有关更多细节,请查看此链接。
https://stackoverflow.com/questions/74190403
复制相似问题