tensorflow在訓練時默認占用所有GPU的顯存。
可以通過以下方式解決該問題:
1、在構造tf.Session()時候通過傳遞tf.GPUOptions作為可選配置參數的一部分來顯式地指定需要分配的顯存比例,如下所示:
# 假如有12GB的顯存並使用其中的4GB: gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333) sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
per_process_gpu_memory_fraction指定了每個GPU進程中使用顯存的上限,但它只能均勻作用於所有GPU,無法對不同GPU設置不同的上限
2、嘗試如下設置:
config = tf.ConfigProto() config.gpu_options.allow_growth=True sess = tf.Session(config=config)
當allow_growth設置為True時,分配器將不會指定所有的GPU內存,而是根據需求增長
3、指定GPU編號:
import os os.environ["CUDA_VISIBLE_DEVICES"] = "0" 或者在腳本或者命令行中指定 export CUDA_VISIBLE_DEVICES=0
