Torch7 DataParallelTable在评估模式下没有使用任何GPU

时间:2017-01-30 16:30:31

标签: parallel-processing torch

我正在使用Torch7 DataParallelTable来并行化我的卷积神经网络。我的实施基于example

DataParallelTable效果很好,我的训练时间也大大减少了。但在验证阶段(调用 network:evaluate()之后),网络忽略GPU并仅在GPU上运行(nvidia-smi显示0%负载,htop显示CPU内核刻录)。我不确定是什么导致了这种行为。因此,虽然验证集的大小只是训练集的四分之一,但验证花费了大量时间,事实上,时间超过了近10个训练时期。 有人可以帮助我理解DataParallelTable的这种奇怪行为并解决这个问题。

我正在附加与我的代码相关的与DPT相关的代码段,其中大多数只是对链接中示例的简单修改。

创建DPT:

function create_DataParallelNetwork(model)
print('converting module to nn.DataParallelTable')
local model_single = model
model = nn.DataParallelTable(1)
for k,v in ipairs(GPU_LIST) do
    print ('Device ',v)
cutorch.setDevice(v)
model:add(model_single:clone():cuda(), v)
end
cutorch.setDevice(params.cuda_device_train) -- *** decide on the default GPU ***
return model
end

培训部分:(此工作正常)

network:training()  -- set flag for dropout
cutorch.synchronize()
loop begins
    network:forward(input_concat)
    network:backward(input_concat, df_do)
loop ends
cutorch.synchronize()

验证部分:(这里完全忽略了GPU)

network:evaluate()
loop begins
    network:forward(input_concat)
loop ends

0 个答案:

没有答案