Pytorch: RuntimeError: cuda runtime error (2) : kehabisan memori di /data/users/soumith/miniconda2/conda-bld/pytorch-0.1.9_1487346124464/work/torch/lib/THC/generic/THCStorage.cu:66

Dibuat pada 8 Mar 2017  ·  41Komentar  ·  Sumber: pytorch/pytorch

Saya mengalami kesalahan:

THCudaCheck FAIL file=/data/users/soumith/miniconda2/conda-bld/pytorch-0.1.9_1487346124464/work/torch/lib/THC/generic/THCStorage.cu line=66 error=2 : out of memory
Traceback (most recent call last):
  File "main_snli.py", line 293, in <module>
    experiment=BaseExperiment()
  File "main_snli.py", line 74, in __init__
    self.model.cuda()
  File "/home/bbbian/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 143, in cuda
    return self._apply(lambda t: t.cuda(device_id))
  File "/home/bbbian/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 114, in _apply
    module._apply(fn)
  File "/home/bbbian/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 114, in _apply
    module._apply(fn)
  File "/home/bbbian/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 120, in _apply
    param.data = fn(param.data)
  File "/home/bbbian/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 143, in <lambda>
    return self._apply(lambda t: t.cuda(device_id))
  File "/home/bbbian/anaconda3/lib/python3.6/site-packages/torch/_utils.py", line 51, in _cuda
    return self.type(getattr(torch.cuda, self.__class__.__name__), async)
  File "/home/bbbian/anaconda3/lib/python3.6/site-packages/torch/_utils.py", line 24, in _type
    return new_type(self.size()).copy_(self, async)
RuntimeError: cuda runtime error (2) : out of memory at /data/users/soumith/miniconda2/conda-bld/pytorch-0.1.9_1487346124464/work/torch/lib/THC/generic/THCStorage.cu:66

bagaimana saya bisa mengatasi kesalahan ini?

Komentar yang paling membantu

Anda kehabisan memori pada GPU. Ini bukan bug.

Semua 41 komentar

Anda kehabisan memori pada GPU. Ini bukan bug.

@paszke
Saya baru saja menulis kode tes sederhana seperti berikut, dan terjadi kesalahan 'kehabisan memori .....', dimensi data input pengujian adalah 49200.
tetapi ketika saya mencoba dimensi data yang lebih rendah dari 49200 ke 1000, kodenya berjalan dengan baik.
Apakah ada pengaturan parameter di pytorch yang harus saya ubah?

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.dropout = nn.Dropout(p=0.2)
        self.relu = nn.ReLU()
        self.fc1 = nn.Linear(49200, 49200)
        self.fc2 = nn.Linear(49200, 49200)
        self.fc3 = nn.Linear(49200, 3)
        self.out = nn.Sequential(
            self.fc1,
            self.relu,
            self.dropout,
            self.fc1,
            self.relu,
            self.dropout,
            self.fc3
            )
    def forward(self, premise, hypothesis):
        return self.out(torch.cat([premise, hypothesis], 1))

net = Net().cuda()
print (net)
premise = Variable(torch.randn(64, 82, 300))
hypothesis = Variable(torch.randn(64, 82, 300))
premise = premise.cuda()
hypothesis = hypothesis.cuda()
out = net(premise.contiguous().view(64,-1), hypothesis.contiguous().view(64,-1))
print(out)

Di antara parameter dan gradiennya dari dua lapisan FC besar, jaringan Anda (dengan ukuran 49200) membutuhkan memori 40GB...

@jekbradbury Bisakah Anda menjelaskan perhitungan Anda? berapa banyak memori yang dibutuhkan setiap lapisan sehubungan dengan parameter dan gradien? Terima kasih.

Jika Anda hanya mempertimbangkan bobot satu lapisan Linear dari model itu. Anda mendapatkan

49200^2 = 2 420 640 000

elemen + setiap elemen membutuhkan 4 byte, yang memberi Anda

2 420 640 000 * 4 / 1024^3 = 9,01GB

untuk bobot saja. Kemudian, Anda memerlukan potongan memori lain dengan ukuran ini untuk menyimpan gradien. Anda juga perlu menyimpan hasil antara sehingga Anda dapat menghitung gradien.

Hai, saya mendapatkan kesalahan yang sama tetapi itu hanya datang untuk validasi. Seluruh proses pelatihan bekerja dengan sangat baik. Saya mencoba melakukan transfer learning menggunakan inception v3. Adakah yang bisa membantu saya? Terima kasih

@tabibusairam Saya juga mengalami masalah yang sama: proses pelatihan berfungsi dengan baik (dengan memori cuda 6G dan GPU saya memiliki memori 12G) tetapi proses evaluasi yang melalui jaringan yang sama mendapat informasi kesalahan sebagai berikut:

THCudaCheck FAIL file=/opt/conda/conda-bld/pytorch_1503965122592/work/torch/lib/THC/generic/THCStorage.cu line=66 error=2 : out of memory
Traceback (most recent call last):
  File "evaluate.py", line 132, in <module>
    evaluate(pnet, args)
  File "evaluate.py", line 94, in evaluate
    predictions = pnet(X_test, initial_states)
  File "/home/zcrwind/.conda/envs/condapython3.6/lib/python3.6/site-packages/torch/nn/modules/module.py", line 224, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/zcrwind/workspace/pro/predict/zcr/pnet.py", line 497, in forward
    output, hidden_states = self.step(A0, hidden_states)
  File "/home/zcrwind/workspace/pro/predict/zcr/pnet.py", line 377, in step
    forget_gate = hard_sigmoid(self.conv_layers['f'][lay](inputs))
  File "/home/zcrwind/workspace/pro/predict/zcr/pnet.py", line 28, in hard_sigmoid
    x = F.threshold(-x, 0, 0)
  File "/home/zcrwind/.conda/envs/condapython3.6/lib/python3.6/site-packages/torch/nn/functional.py", line 459, in threshold
    return _functions.thnn.Threshold.apply(input, threshold, value, inplace)
  File "/home/zcrwind/.conda/envs/condapython3.6/lib/python3.6/site-packages/torch/nn/_functions/thnn/auto.py", line 174, in forward
    getattr(ctx._backend, update_output.name)(ctx._backend.library_state, input, output, *args)
RuntimeError: cuda runtime error (2) : out of memory at /opt/conda/conda-bld/pytorch_1503965122592/work/torch/lib/THC/generic/THCStorage.cu:66

Sudahkah Anda berolahraga? Terima kasih.

Grafik komputasi saat validasi berbeda seperti di kereta sebagai
parameter tidak dilatih dalam validasi. Coba gunakan perintah -
nvidia-smi untuk melihat kebutuhan memori GPU saat validasi.

Coba kurangi ukuran batch (jika Anda hanya bekerja pada satu GPU), The
kebutuhan memori kurang untuk ukuran batch yang lebih kecil.

Pada Minggu, 14 Januari 2018 pukul 11:17, Chenrui Zhang [email protected]
menulis:

@tabibusairam https://github.com/tabibusairam Saya juga menemukan
masalah yang sama: proses pelatihan bekerja dengan baik (dengan memori cuda 6G dan my
GPU memiliki memori 12G) tetapi proses evaluasinya sama
jaringan mendapat informasi kesalahan sebagai berikut:

File THCudaCheck FAIL=/opt/conda/conda-bld/pytorch_1503965122592/work/torch/lib/THC/generic/THCStorage.cu line=66 error=2 : kehabisan memori
Traceback (panggilan terakhir terakhir):
File "evaluate.py", baris 132, di
mengevaluasi (prednet, args)
File "evaluate.py", baris 94, di evaluasi
prediksi = prednet(X_test, initial_states)
File "/home/zcrwind/.conda/envs/condapython3.6/lib/python3.6/site-packages/torch/nn/modules/module.py", baris 224, di __call__
hasil = self.forward( input, * kwargs)
File "/home/zcrwind/workspace/ijcai2018/predict/zcrPredNet/prednet.py", baris 497, di depan
output, hidden_states = self.step(A0, hidden_states)
File "/home/zcrwind/workspace/ijcai2018/predict/zcrPredNet/prednet.py", baris 377, dalam langkah
forget_gate = hard_sigmoid(self.conv_layers['f'][lay](input))
File "/home/zcrwind/workspace/ijcai2018/predict/zcrPredNet/prednet.py", baris 28, di hard_sigmoid
x = F.ambang (-x, 0, 0)
File "/home/zcrwind/.conda/envs/condapython3.6/lib/python3.6/site-packages/torch/nn/functional.py", baris 459, di ambang batas
kembalikan _functions.thnn.Threshold.apply(input, threshold, value, inplace)
File "/home/zcrwind/.conda/envs/condapython3.6/lib/python3.6/site-packages/torch/nn/_functions/thnn/auto.py", baris 174, di depan
getattr(ctx._backend, update_output.name)(ctx._backend.library_state, input, output, *args)
RuntimeError: cuda runtime error (2): kehabisan memori di /opt/conda/conda-bld/pytorch_1503965122592/work/torch/lib/THC/generic/THCStorage.cu:66

Sudahkah Anda berolahraga? Terima kasih.


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/pytorch/pytorch/issues/958#issuecomment-357490369 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AMHzdCQ_jJ9ogDm1jaNSLB6wCbfP08XOks5tKZT8gaJpZM4MW6we
.

@tabibusairam Terima kasih banyak. Saya telah mengurangi ukuran batch dan kode evaluasi berfungsi dengan baik sekarang.

@tabibusairam Apakah Anda menulis kode condong transfer Anda sebagai contoh di pytorch.org? Jika demikian, saya punya ide lain untuk mengatasinya.

Ya saya menulis kode dalam format itu.
Saya juga menambahkan nn.DataParallel ke model
Ide lain pasti diterima

Pada 22 Jan 2018 5:32, "Tommeychang" [email protected] menulis:

@tabibusairam https://github.com/tabibusairam Apakah Anda menulis
transfer kode condong sebagai contoh di pytorch.org? Jika demikian, saya punya
ide lain untuk mengatasinya.


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/pytorch/pytorch/issues/958#issuecomment-359294050 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AMHzdN8mRJKNr_0czrXDd-p66-iJImubks5tM9AggaJpZM4MW6we
.

@tabibusairam Kesalahan yang sama terjadi pada saya dalam situasi yang sama. Itu diselesaikan dengan mengubah "volatile" di Variabel() saat inferensi. Jika kita menetapkan volatile=True, grafik komputasi akan dipertahankan selama inferensi. Dalam waktu inferensi, kita tidak perlu mempertahankan grafik komputasi. Ini sangat memakan memori.
Anda bisa mengatur flag volatile ke True seperti ini, `Variable(x, volatile=True).

Dalam contoh, dua model akan dihasilkan untuk pelatihan dan validasi masing-masing. Dengan pengaturan ini, akan ada model lain yang berjalan di GPU saat validasi, dan GPU akan kehabisan memori bahkan Anda membungkus data validasi dengan parameter volatil.
Saya memecahkan masalah ini dengan hanya mengatur satu model, dan membungkus data validasi dengan parameter volatil untuk mengurangi perhitungan. @tabibusairam

Terima kasih, @TommeyChang. Saya memeriksa sampel pembelajaran transfer, tetapi saya tidak dapat memahami di mana model diatur juga dalam validasi. Maukah Anda menunjukkan kepada kami di mana model diatur dalam kode?

Masalah ini mungkin disebabkan oleh pytorch bukan kodenya. Kode-kodenya seperti di bawah ini:
jika fase == 'berlatih':
penjadwal.langkah()
model.train(True) # Setel model ke mode pelatihan
lain:
model.train(False) # Setel model ke mode evaluasi
Jika Anda melacak stat GPU dengan watch -n 1 -d nvidia-smi, Anda akan melihat penggunaan memori akan meningkat saat periode validasi pertama.

Bagaimana Anda memilih model yang sama untuk validasi untuk kereta dan validasi?

Pada 27 Januari 2018 11:44, "Tommeychang" [email protected] menulis:

Masalah ini mungkin disebabkan oleh pytorch bukan kodenya. Kode-kode tersebut adalah sebagai
di bawah:
jika fase == 'berlatih':
penjadwal.langkah()
model.train(True) # Setel model ke mode pelatihan
lain:
model.train(False) # Setel model ke mode evaluasi
Jika Anda melacak stat GPU dengan watch -n 1 -d nvidia-smi, Anda akan melihat
penggunaan memori akan meningkat saat epoch validasi pertama.


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/pytorch/pytorch/issues/958#issuecomment-360963591 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AMHzdBKY_UCQ3QMtnUhdHoahxUx-oG4eks5tOr6ugaJpZM4MW6we
.

Jika kita tidak mengatur mode model, itu akan menjadi mode pelatihan implisit. Jadi, kita tidak memerlukan garis set mode, tetapi bungkus tensor ke variabel dengan parameter volatil saat fase validasi. Kode saya adalah seperti di bawah ini:

if phase == 'train':
scheduler.step()

........

for data in dataloaders[phase]:  ## Iterate over data.

inputs, labels = data  ## get the inputs

if use_gpu:  ## pass them into GPU
inputs = inputs.cuda()
labels = labels.cuda()

if phase == 'train':  ## wrap them in Variable
inputs, labels = Variable(inputs), Variable(labels)
else:
inputs = Variable(inputs, volatile=True)
labels = Variable(labels, volatile=True)

Terima kasih. Tapi saya khawatir jika kita tidak menyetel flag kereta ke False bahkan selama validasi, kita tidak bisa mendapatkan hasil yang sesuai karena BatchNormalization dan Dropout berperilaku berbeda dalam fase kereta/validasi.

Ya aku setuju denganmu. Dan saya telah menguji model saya dengan flag train False, kinerjanya meningkat. Terima kasih atas saranmu.

Saya mencoba volatile=True dan berhasil untuk saya. Terima kasih telah mengajari saya ini @jekbradbury

@TommeyChang @tabibusairam Saya mengalami kesalahan yang sama, tetapi pada kasus yang berbeda. Saya menambahkan istilah regularisasi baru dalam model saya, melalui fungsi ini:

def l2_reg(mdl):
        l2_reg = None
        for W in mdl.parameters():
                if W.ndimension() < 2:
                        continue
                else:   
                        if l2_reg is None:
                                l2_reg = (torch.max(torch.abs(W)))**2
                        else:   
                                l2_reg = l2_reg + (torch.max(torch.abs(W)))**2

        return l2_reg

Apa yang saya amati adalah bahkan jika saya mengubah ukuran batch saya dari 128 menjadi 8, Kesalahan muncul setelah Epoch pertama, dan Jika saya hanya mengubah regularisasi dan mengembalikan regularisasi l2. Saya tidak mengerti kesalahan ini.
Setiap saran/komentar akan sangat dihargai!

@TommeyChang Anda biasanya ingin membedakan istilah regularisasi (setelah semua itu ada untuk mempengaruhi nilai gradien) jadi pu mungkin tidak ingin melakukannya seperti yang Anda sarankan

@apaszke halo~ Saya mendapat pertanyaan yang sama, tetapi saya dapat melatih model dengan benar di awal. Setelah mungkin 600 langkah, saya mendapatkan kesalahan "RuntimeError: cuda runtime error (2) : kehabisan memori di /opt/conda/conda-bld/pytorch_1518243271935/work/torch/lib/THC/generic/THCStorage.cu:58 " .

Saat pelatihan, memori hanya berharga 7G (gpu saya memiliki 11G). Biasanya, menurut saya pelatihan dengan benar di awal berarti kode saya benar. Apakah itu benar? Apakah ada hal-hal lain yang akan terakumulasi dengan proses pelatihan ke depan? Terima kasih banyak!!

Beberapa variabel terakumulasi dan mengambil lebih banyak ruang sebagai model Anda
melatih lebih lanjut .. coba cari tahu variabel seperti itu dan lihat Anda tidak menabung
yang tidak diinginkan

Pada Sabtu, 21 April 2018, 07:35 EricKani [email protected] menulis:

@apaszke https://github.com/apaszke halo~ Saya mendapat pertanyaan yang sama, tapi
Saya bisa melatih model dengan benar di awal. Setelah mungkin 600 langkah, saya
mendapat kesalahan "RuntimeError: cuda runtime error (2): kehabisan memori di
/opt/conda/conda-bld/pytorch_1518243271935/work/torch/lib/THC/generic/THCStorage.cu:58
".


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/pytorch/pytorch/issues/958#issuecomment-383259455 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AMHzdN8KuyZIjewB6gkY1MvswGWuF1QMks5tqpPegaJpZM4MW6we
.

@tabibusairam Terima kasih banyak, pertama. Ini adalah alasan utama untuk banyak masalah oom. Tapi saya tidak menemukan masalah jaringan saya. Ketika saya melatih jaringan saya tanpa validasi (jaringan transformasi gambar), memori GPU stabil sepanjang waktu. Tetapi ketika ada langkah validasi, memori GPU pertama saya (validasi pada GPU itu) akan meningkat dua kali lipat.
Misalnya, di awal epoch pertama saya, memori GPU saya menggunakan 7G, kemudian berubah menjadi 9G setelah epoch pertama selesai dengan awal validasi. Setelah validasi ke epoch kedua, konsumsi memori menjadi 10G. Sejak itu memori stabil. Saya sangat kebingungan...

Apakah Anda menjalankan validasi dengan Variabel volatile (dalam 0,3) atau dalam konteks torch.no_grad (jika menggunakan master)?

@apaszke @tabibusairam halo, saya menemukan kesalahan ini ketika saya menggunakan pytorch untuk membangun GAN dengan GP, ​​dan saya macet di sini selama 2 hari, saya sudah mencoba beberapa metode untuk menyelesaikannya, tetapi tidak berhasil. Saya sangat membutuhkan bantuan plz.
kesalahannya adalah:
_RuntimeError: cuda runtime error (2) : kehabisan memori di xx\torch\lib\thc\generic/THCStorage.cu:66_
ketika saya melakukan mundur

_File "xxx/train_extractor.py", baris 128, di
gradient_penalty.backward()
File "xxx\lib\site-packages\torch\autograd\variable.py", baris 156, mundur
torch.autograd.backward(self, gradient, retain_graph, create_graph, retain_variables)
File "xxx\lib\site-packages\torch\autograd__init__.py", baris 98, di belakang
variabel, grad_variables, retain_graph)_

Itu terjadi pada epoch ke-12 dari proses pelatihan saya setiap saat, dan saya telah mengurangi batch_size dan ukuran di jaring saya.
Tidak ada prosedur validasi.
di sini adalah segmen kecil dari kode saya:
alpha = torch.rand(conf.batch_size,1).expand(X.size())
x_hat = autograd.Variable(alpha real.data.cpu()+(1-alpha) (real.data.cpu()+0.5 real.data.std() torch.rand(real.size())),requires_grad = Benar)
x_hat = x_hat.cuda() jika conf.cuda lain x_hat
pred_hat,_ = Dis(x_hat)
label = obor.ones(pred_hat.size())
label = label.cuda() jika conf.cuda else label
gradien = autograd.grad(outputs = pred_hat, inputs = x_hat, grad_outputs=label, create_graph=True, retain_graph=True,only_inputs=True)[0]
gradient_penalty = conf.gp_lambda ((gradients.norm(2,dim=1)-1) 2).mean()* gradient_penalty.backward()

Mengurangi ukuran Batch dari 64 menjadi 32 berhasil untuk saya.

@lyakaap Variabel(x, volatile=True). Ini bekerja untuk saya. Terima kasih banyak.

@EricKani ,
halo, Anda telah memecahkan masalah ini?
Saya juga mendapatkan pertanyaan yang sama.
dapatkah Anda memberi tahu saya metodenya?

@qlwang25 @EricKani Situasi yang paling mungkin adalah bahwa gradien terakumulasi secara tidak sengaja selama perhitungan kerugian seperti di bawah ini.

loss = criterion(y_, y)
loss.backward()
loss_meter += loss  # incorrect
# loss_meter += loss.item()  # correct

@lyakaap
Terima kasih banyak, pertama.
Saya menulis sama seperti yang Anda sebutkan.
Setelah setiap batch validasi, konsumsi memori GPU meningkat, jadi kereta berikutnya akan menjadi kesalahan:

THCudaCheck FAIL file=/pytorch/aten/src/THC/generic/THCStorage.cu line=58 error=2 : out of memory
Traceback (most recent call last):
  File "train.py", line 290, in <module>
    main()
  File "train.py", line 263, in main
    train(i)
  File "train.py", line 152, in train
    loss, num_total, num_correct = model.train_model(src, src_len, src_sent_len, tgt, tgt_len, optim)
  File "/home/wangqianlong/model/bytecup/models/seq2seq.py", line 110, in train_model
    loss.backward()
  File "/home/wangqianlong/.local/lib/python3.6/site-packages/torch/tensor.py", line 93, in backward
    torch.autograd.backward(self, gradient, retain_graph, create_graph)
  File "/home/wangqianlong/.local/lib/python3.6/site-packages/torch/autograd/__init__.py", line 89, in backward
    allow_unreachable=True)  # allow_unreachable flag
RuntimeError: cuda runtime error (2) : out of memory at /pytorch/aten/src/THC/generic/THCStorage.cu:58

Aliran kode umum:

def train_model(self, data):
    outputs = self(data)
    loss = self.criterion(outputs, y)
    loss.backward()
    optim.step()
    return loss

def sample(self, data):
    src, src_len = data
        with torch.no_grad():
                bos = torch.ones(src.size(0)).long().fill_(dict.BOS)
        if self.use_cuda:
            src = src.cuda()
            src_len = src_len.cuda()
            bos = bos.cuda()

        contexts = other_function(src, src_len)
            samples = self.decoder.sample([bos], contexts)
            return samples

def train(i):
    model.train()
    global train_dataloader
    for data in train_dataloader:
        model.zero_grad()
        loss = model.train_model(data)

        count_loss += loss.item()
        if ...:
            # not important
            print(count_loss)

def eval(i):
    model.eval()
    for batch in eval_dataloader:
        samples = model.sample(data)
        print(samples)

def main():
    global train_dataloader
    for i in range(epoch):
        train_dataloader = load(data_(i%9)) 
        train(i)

        eval(i)

Trainsetnya relatif besar, saya bagi menjadi delapan (data_0, data_1, ...., data_8)
Bisakah Anda memberi saya beberapa saran?
Terima kasih banyak.

@ qlwang25 Saya memeriksa kode Anda tetapi saya tidak dapat menemukan bagian mana yang salah.
Saya kira dua kemungkinan:

  1. gunakan pengoptimal.zero_grad() sebagai gantinya model.zero_grad()
  2. beberapa variabel dalam gpu memiliki referensi persisten dan dengan demikian variabel ini tidak pernah melepaskan memori GPU. Bagaimana kalau meninjau sampel Anda().

@lyakaap
Pertama-tama, terima kasih atas balasan Anda begitu cepat.
Saya dapat memahami poin pertama Anda.
Namun, dengan demikian variabel-variabel ini tidak pernah melepaskan memori GPU membuat saya bingung.
variabel yang mana? bisa kasih contoh?
Bagaimana cara melepaskan variabel-variabel ini. torch.cuda.empty_cache() berguna?

@qlwang25
Saya tidak tahu Variabel mana, tetapi src, bos, yang mungkin.
AFAIK,torch.cuda.empty_cache() tidak merilis variabel yang direferensikan. Anda harus menemukan vars mana yang menjadi penyebab dan menulis del {var_name} sebelum memanggil fungsi ini.

@lyakaap
Terima kasih banyak!
Saya sudah tahu saran Anda.
Terima kasih lagi atas balasan Anda.

@ladyrick
Terima kasih banyak!
Saya sudah tahu saran Anda.
Terima kasih lagi atas balasan Anda.

Saya pikir maksud Anda @lyakaap , kan?
ha ha

Saya mencoba volatile - tidak berhasil (kemudian saya tahu itu karena saya menggunakan pytroch 1.01 dan "UserWarning: volatile telah dihapus dan sekarang tidak berpengaruh. Gunakan with torch.no_grad(): sebagai gantinya.")
Tetapi restart sederhana juga memperbaiki hal-hal untuk saya ....

Saya memiliki masalah yang sama, jadi saya mencoba mengurangi ukuran batch seminimal mungkin karena model saya dapat berlatih. ditambah Anda dapat meningkatkan zaman Anda, tingkat pembelajaran, sampel pelatihan untuk mempertahankan trade off dalam hal akurasi

Masalah ini mungkin disebabkan oleh ukuran dataset validasi yang besar, Anda dapat memilih dataset kecil dan kemudian menguji dengan memasukkan dataset besar.

Grafik komputasi saat validasi berbeda seperti di kereta karena parameter tidak dilatih dalam validasi. Coba gunakan perintah - nvidia-smi untuk melihat kebutuhan memori GPU saat validasi. Coba kurangi ukuran batch ( jika Anda bekerja pada satu GPU saja), Persyaratan memori lebih sedikit untuk ukuran batch yang lebih kecil.

Pada Minggu, 14 Januari 2018 pukul 11:17, Chenrui Zhang @ . * > menulis: @tabibusairam https://github.com/tabibusairam Saya juga mengalami masalah yang sama: proses pelatihan bekerja dengan baik (dengan memori cuda 6G dan GPU saya memiliki memori 12G) tetapi proses evaluasi yang melewati jaringan yang sama mendapat informasi kesalahan sebagai berikut: THCudaCheck FAIL file=/opt/conda/conda-bld/pytorch_1503965122592/work/torch/lib/THC/generic/THCStorage.cu line=66 error=2 : kehabisan memori Traceback (panggilan terakhir terakhir ): File "evaluate.py", baris 132, dievaluasi(prednet, args) File "evaluate.py", baris 94, dalam evaluasi prediksi = prednet(X_test, initial_states) File "/home/zcrwind/.conda/envs/condapython3.6/lib/python3.6/site- package/torch/nn/modules/module.py", baris 224, di __call__ result = self.forward( input, * kwargs) File "/home/zcrwind/workspace/ijcai2018/predict/zcrPredNet/prednet.py", baris 497, dalam output maju, hidden_states = self.step(A0, hidden_states) File "/home/zcrwind/workspace/ijcai2018/predict/zcrPredNet/prednet.py", baris 377, pada langkah forget_gate = hard_sigmoid(self.conv_layers[' f'][lay](inputs)) File "/home/zcrwind/workspace/ijcai2018/predict/zcrPredNet/prednet.py", baris 28, di hard_sigmoid x = F.threshold(-x, 0, 0) File " /home/zcrwind/.conda/envs/condapython3.6/lib/python3.6/site-packages/torch/nn/functional.py", baris 459, di ambang kembali _functions.thnn.Threshold.apply(input, ambang batas , nilai, inplace) File "/home/zcrwind/.conda/envs/condapython3.6/lib/python3.6/site-packages/torch/nn/_functions/thnn/auto. py", baris 174, di depan getattr(ctx._backend, update_output.name)(ctx._backend.library_state, input, output, *args) RuntimeError: cuda runtime error (2) : kehabisan memori di /opt/conda/ conda-bld/pytorch_1503965122592/work/torch/lib/THC/generic/THCStorage.cu:66 Sudahkah Anda berolahraga? Terima kasih. — Anda menerima ini karena Anda disebutkan. Balas email ini secara langsung, lihat di GitHub < #958 (komentar) >, atau nonaktifkan utasnya https://github.com/notifications/unsubscribe-auth/AMHzdCQ_jJ9ogDm1jaNSLB6wCbfP08XOks5tKZT8gaJpZM4MW6we .

Ini berhasil. Terima kasih banyak.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat