ubuntu 16.04,python 2.7.12,tensorflow 1.10.1(gpu版本),cuda 9.0,cudnn 7.2
我已经建立并训练了CNN模型,现在我正在使用while循环反复让我的模型做出预测。
为了限制内存使用量,我使用以下代码创建分类器:
import tensorflow as tf
session_config = tf.ConfigProto(log_device_placement=False)
session_config.gpu_options.allow_growth = True
run_config = tf.estimator.RunConfig().replace(session_config=session_config)
classifier = tf.estimator.Estimator(
model_fn = my_model_fn,
model_dir = my_trained_model_dir,
config = run_config,
params={}
)
然后我在classifier.predict(my_input_fn)
循环中调用while
,以反复进行预测。
问题:
我正在两台计算机上运行我的代码,这两台计算机都具有上面列出的相同软件环境。
但是,两台计算机具有不同的GPU:
计算机A:1050 2G
计算机B:1070 8G
我的代码在两台计算机上都能很好地工作。
但是,当我使用nvidia-smi
检查GPU内存分配时,我发现我的代码将在计算机A上分配1.4G GPU内存,而在计算机B上变为3.6G。
那么,为什么会发生这种情况?
我认为session_config.gpu_options.allow_growth = True
告诉程序分配所需的数量。计算机A已证明1.4G足够,那么为什么相同的代码在计算机B上分配3.6G?
答案 0 :(得分:-1)
实际上可能是1.4gb还不够,并且某些所需的内存已交换到主内存中。视频卡驱动程序可以做到这一点。