刚开始使用实验室的服务器网络训练时,有这样的现象:
能看到,只使用单个GPU跑程序,但三块显卡的显存都被占用。
这是因为TensorFlow训练时默认占用所有GPU的显存。引自TF官网:
By default, TensorFlow maps nearly all of the GPU memory of all GPUs (subject to CUDA_VISIBLE_DEVICES) visible to the process.
这样如果有人想使用其他两个GPU跑程序,就会因为显存不足而无法运行。
所以需要人为指定显存占用率或指定使用单张显卡。
根据 TF官网tutorial部分的Using GPUs,可以总结三种方法:
第一种是使用
allow_growth,实现显存运行时分配。当allow_growth设置为True时,TF程序一开始被分配很少的显存,在运行时根据需求增长而扩大显存的占用。

当使用TensorFlow进行GPU训练时,发现即使只使用单个GPU,所有显卡的显存都会被占用。解决这个问题可以通过设置`allow_growth`或指定显存分配率。`allow_growth`允许按需动态分配显存,而`gpu_options.per_process_gpu_memory_fraction`则限制每个GPU的显存使用比例。此外,还可以通过设置环境变量`CUDA_VISIBLE_DEVICES`选择使用特定GPU,但这将限制其他程序对GPU的访问。
最低0.47元/天 解锁文章
6万+

被折叠的 条评论
为什么被折叠?



