Tensorflow如何使用我的GPU?

时间:2018-08-14 00:55:04

标签: python tensorflow gpu

所以我正在训练Tensorflow中的NN,同时我正在监视我的GPU负载。

GPU Load

从屏幕截图中,我看到Tensorflow基本上只使用GPU内存,这正常吗?我以为他们利用了我所有的cuda核心来执行一些计算等。

真的有人知道吗?

谢谢!

代码来了...

import tensorflow as tf
tf.logging.set_verbosity(tf.logging.INFO)

# ... some file reading here 

def train_input_fn(features, labels, batch_size):
    return tf.estimator.inputs.pandas_input_fn(
        x = features,
        y = labels,
        num_epochs = 1,
        shuffle = True,
        batch_size = batch_size)

def eval_input_fn(features, labels):
    return tf.estimator.inputs.pandas_input_fn(
        x = features,
        y = labels,
        num_epochs = 1,
        shuffle = True)

def pred_input_fn(features):
    return tf.estimator.inputs.pandas_input_fn(
        x = features,
        num_epochs = 1,
        shuffle = False)

model_dir = './DNN_Linear_Combined_Regressor'

file_writer = tf.summary.FileWriter(model_dir)

estimator = tf.estimator.DNNLinearCombinedRegressor(
    model_dir = model_dir,
    linear_feature_columns = wide_columns,
    dnn_feature_columns = deep_columns,
    dnn_optimizer = tf.train.AdamOptimizer(learning_rate=0.001),
    dnn_hidden_units = [64,64,64,8], 
    batch_norm = True,
    dnn_dropout = 0.1
)

train_spec = tf.estimator.TrainSpec(input_fn = train_input_fn(train, y_train, batch_size=5000))
eval_spec = tf.estimator.EvalSpec(input_fn = eval_input_fn(valid, y_valid))

tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec)

2 个答案:

答案 0 :(得分:2)

根据TensorFlow文档here,默认情况下,TensorFlow将使用您的GPU内存。

此外,您可以通过以下代码检查终端中哪个设备正在使用哪个张量计算:

# Creates an estimator with log_device_placement set to True.
sess_config = tf.ConfigProto(log_device_placement=True)
run_config = tf.estimator.RunConfig(session_config = sess_config)
your_classifier = tf.estimator.Estimator(config=run_config)

您会看到类似这样的内容:

Device mapping:
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: Tesla K40c, pci bus
id: 0000:05:00.0
b: /job:localhost/replica:0/task:0/device:GPU:0
a: /job:localhost/replica:0/task:0/device:GPU:0
MatMul: /job:localhost/replica:0/task:0/device:GPU:0

其中GPU:0是您的默认GPU。

答案 1 :(得分:1)

Cuda是一个平台,允许您在GPU上运行C / C ++代码。 Cuda内核是GPU的一部分。因此它使用Cuda内核进行计算。

Tensorflow使用GPU是正常的。与CPU相比,特殊的运算(例如矩阵加法,乘法等)可以在GPU上高效地执行(由于并行性和硬件加速)。