2017-09-06 146 views
1

我现在正在微调VGG-Face(非常大的型号),其中有8个TITAN Xp GPU可用。但是,当我增加batch_size时,Caffe会发生内存不足错误。以下是我所做的:在Caffe中使用多个具有较大batch_size的GPU时内存不足

首先,batch_size在训练阶段设置为40,并且它在单个GPU上正常工作。选择的GPU几乎100%被利用。 然后,我增加batch_size 128使用

'./build/tools/caffe train -solver mysolver.prototxt -gpu all' 

所有的GPU得到充分利用所有的8个GPU,如在nvidia-smi.jpg

示出和来自Caffe给我以下错误:

F0906 03:41:32.776806 95655 parallel.cpp:90] Check failed: error ==cudaSuccess (2 vs. 0) out of memory 
*** Check failure stack trace: *** 
@  0x7f9a0832995d google::LogMessage::Fail() 
@  0x7f9a0832b6e0 google::LogMessage::SendToLog() 
@  0x7f9a08329543 google::LogMessage::Flush() 
@  0x7f9a0832c0ae google::LogMessageFatal::~LogMessageFatal() 
@  0x7f9a08abe825 caffe::GPUParams<>::GPUParams() 
@  0x7f9a08abefd8 caffe::NCCL<>::NCCL() 
@   0x40dc69 train() 
@   0x40a8ed main 
@  0x7f9a06abf830 (unknown) 
@   0x40b349 _start 
Aborted (core dumped) 

理论上我可以用batch_size=40*8=320进行训练。 (请让我知道如果我在这里)

那么,我该如何充分利用GPU来加速我的模型训练? 在此先感谢!

回答

1

使用多个GPU时,不需要增加原型文件中的批量大小。如果批量大小为40,Caffe将单独为每个GPU使用该尺寸,从而有效地为您提供40 * 8的批量大小(无需改变任何内容)。

+0

那么,TESTING呢?如果我有8个GPU,哪一个将用于测试? –

+0

@ Y.C.Sun我相信会使用默认的0 GPU,除非您明确指定要使用哪一个。 – shubhamgoel27

+0

又一个混乱。如果批量大小为40,并且使用8个GPU,则通过对320个样本进行平均来计算梯度,或对每40个样本的8个单独平均梯度进行平均? –