Pytorch: RuntimeError: CUDA error: akses memori ilegal ditemukan

Dibuat pada 15 Jun 2019  ·  103Komentar  ·  Sumber: pytorch/pytorch

Halo semuanya!
Saya menemukan kesalahan akses memori ilegal yang aneh. Itu terjadi secara acak tanpa pola yang teratur.
Kodenya sangat sederhana. Ini adalah PointNet untuk segmentasi point cloud. Saya tidak berpikir ada yang salah dalam kode.

import torch
import torch.nn as nn
import torch.nn.functional as F
import os
class InstanceSeg(nn.Module):
    def __init__(self, num_points=1024):
        super(InstanceSeg, self).__init__()

        self.num_points = num_points

        self.conv1 = nn.Conv1d(9, 64, 1)
        self.conv2 = nn.Conv1d(64, 64, 1)
        self.conv3 = nn.Conv1d(64, 64, 1)
        self.conv4 = nn.Conv1d(64, 128, 1)
        self.conv5 = nn.Conv1d(128, 1024, 1)
        self.conv6 = nn.Conv1d(1088, 512, 1)
        self.conv7 = nn.Conv1d(512, 256, 1)
        self.conv8 = nn.Conv1d(256, 128, 1)
        self.conv9 = nn.Conv1d(128, 128, 1)
        self.conv10 = nn.Conv1d(128, 2, 1)
        self.max_pool = nn.MaxPool1d(num_points)

    def forward(self, x):
        batch_size = x.size()[0] # (x has shape (batch_size, 9, num_points))

        out = F.relu(self.conv1(x)) # (shape: (batch_size, 64, num_points))
        out = F.relu(self.conv2(out)) # (shape: (batch_size, 64, num_points))
        point_features = out

        out = F.relu(self.conv3(out)) # (shape: (batch_size, 64, num_points))
        out = F.relu(self.conv4(out)) # (shape: (batch_size, 128, num_points))
        out = F.relu(self.conv5(out)) # (shape: (batch_size, 1024, num_points))
        global_feature = self.max_pool(out) # (shape: (batch_size, 1024, 1))

        global_feature_repeated = global_feature.repeat(1, 1, self.num_points) # (shape: (batch_size, 1024, num_points))
        out = torch.cat([global_feature_repeated, point_features], 1) # (shape: (batch_size, 1024+64=1088, num_points))

        out = F.relu(self.conv6(out)) # (shape: (batch_size, 512, num_points))
        out = F.relu(self.conv7(out)) # (shape: (batch_size, 256, num_points))
        out = F.relu(self.conv8(out)) # (shape: (batch_size, 128, num_points))
        out = F.relu(self.conv9(out)) # (shape: (batch_size, 128, num_points))

        out = self.conv10(out) # (shape: (batch_size, 2, num_points))

        out = out.transpose(2,1).contiguous() # (shape: (batch_size, num_points, 2))
        out = F.log_softmax(out.view(-1, 2), dim=1) # (shape: (batch_size*num_points, 2))
        out = out.view(batch_size, self.num_points, 2) # (shape: (batch_size, num_points, 2))

        return out

Num = 0
network = InstanceSeg()
network.cuda()
while(1):

    input0 = torch.randn(32, 3, 1024).cuda()
    input1 = torch.randn(32, 3, 1024).cuda()
    input2 = torch.randn(32, 3, 1024).cuda()
    input = torch.cat((input0, input1, input2), 1)

    out = network(input)
    Num = Num+1
    print(Num)

Setelah sejumlah langkah acak, kesalahan meningkat. Laporan kesalahan adalah

Traceback (most recent call last):
  File "/home/wangye/Frustum-PointNet_Test/frustum_pointnet.py", line 58, in <module>
    input0 = torch.randn(32, 3, 1024).cuda()
RuntimeError: CUDA error: an illegal memory access was encountered

Ketika saya menambahkan "os.environ['CUDA_LAUNCH_BLOCKING'] = '1'" di bagian atas skrip ini, laporan kesalahan diubah menjadi ini

Traceback (most recent call last):
  File "/home/wangye/Frustum-PointNet_Test/frustum_pointnet.py", line 64, in <module>
    out = network(input)
  File "/home/wangye/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/wangye/Frustum-PointNet_Test/frustum_pointnet.py", line 35, in forward
    out = F.relu(self.conv5(out)) # (shape: (batch_size, 1024, num_points))
  File "/home/wangye/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/wangye/anaconda3/lib/python3.6/site-packages/torch/nn/modules/conv.py", line 187, in forward
    self.padding, self.dilation, self.groups)
RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED

Saya tahu beberapa operasi pengindeksan yang salah dan beberapa metode penggunaan fungsi kehilangan yang salah dapat menyebabkan kesalahan akses memori ilegal. Tetapi dalam skrip ini, tidak ada operasi semacam itu.
Saya yakin kesalahan ini bukan karena kehabisan memori karena hanya sekitar 2G memori GPU yang digunakan, dan saya memiliki memori GPU 12G sepenuhnya.

Ini adalah informasi lingkungan saya:

OS: Ubuntu 16.04 LTS 64-bit
Command: conda install pytorch torchvision cudatoolkit=9.0 -c pytorch
GPU: Titan XP
Driver Version: 410.93
Python Version: 3.6
cuda Version: cuda_9.0.176_384.81_linux
cudnn Version: cudnn-9.0-linux-x64-v7.4.2.24
pytorch Version: pytorch-1.0.1-py3.6_cuda9.0.176_cudnn7.4.2_2

Saya sudah lama terjebak di sini.
Sebenarnya, tidak hanya proyek ini yang menghadapi kesalahan ini, banyak proyek lain menghadapi kesalahan serupa di komputer saya.
Saya tidak berpikir ada yang salah dalam kode. Itu dapat berjalan dengan benar untuk beberapa langkah. Mungkin kesalahan ini karena lingkungan. Saya tidak yakin.
Apakah ada yang tahu tentang situasi ini? Jika informasi lebih rinci diperlukan, beri tahu saya.
Terima kasih atas saran apa pun.

cuda triaged

Komentar yang paling membantu

@jzazo
Hai, saya punya masalah serupa.
Jika saya menggunakan device = torch.device("cuda:1") , saya selalu mendapatkan kesalahan RuntimeError: CUDA error: an illegal memory access was encountered .

Tetapi ketika saya menetapkan gpu tertentu dengan torch.cuda.set_device(1) , semuanya baik-baik saja.

Semua 103 komentar

Bisa jadi bug cudnn yang sama diperbaiki di 7.6. Lihat https://github.com/pytorch/pytorch/issues/16831. Bisakah Anda mencoba pytorch 1.1?

@SsnL Terima kasih atas balasan Anda. Saya akan melakukan lebih banyak percobaan dan memposting hasilnya di sini. Ini benar-benar kesalahan yang aneh dan sangat sulit untuk di-debug.

@SsnL Saya memperbarui lingkungan ke pytorch 1.1, cuda 10.0, cudnn 7.6, tetapi kesalahan ini masih terjadi.

Tidak dapat melakukan repro dengan pytorch 1.1/cuda10/cudnn7.6 setelah lebih dari 5000 iterasi (baik V100 dan P100, P100 harus serupa dengan TitanXP).

Masih mengalami masalah ini

@zhixuanli apakah Anda melihat kesalahan yang sama menggunakan rilis PyTorch terbaru (1.3.0)?
Bisakah Anda memposting pengaturan yang Anda gunakan, sehingga kami dapat mencoba mereproduksi masalah ini, karena kami tidak dapat melakukannya sampai sekarang.

Saya menemui masalah yang sama dengan 2080ti. Mengatur batch dari 2 ke 1 dan mengurangi gtBox per gambar tidak berhasil.
Ini adalah informasi lingkungan saya:

OS: Ubuntu 16.04 LTS 64-bit
Perintah: conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
GPU: 2080ti
Versi Pengemudi: 418.67
Versi Python: 3.7
Versi cuda: 10.1
Versi cudnn: 7
Versi pytorch: torch-1.1.0, torchvision-0.2.0

@ptrblck Saya mencoba PyTorch(1.3.0), masih mengalami masalah yang sama
Log trian:

kehabisan memori
argumen yang tidak sah
akses memori ilegal ditemukan
akses memori ilegal ditemukan
Traceback (panggilan terakhir terakhir):
File "tools/train_net.py", baris 174, di
utama()
File "tools/train_net.py", baris 167, di main
model = kereta(cfg, args.local_rank, args.distributed)
File "tools/train_net.py", baris 73, di kereta
argumen,
File "/home/fw/Softwares/RetinaNet/maskrcnn_benchmark/engine/trainer.py", baris 68, di do_train
loss_dict = model(gambar, target)
File "/home/fw/Softwares/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", baris 541, di __call__
hasil = self.forward( input, * kwargs)
File "/home/fw/Softwares/anaconda3/lib/python3.7/site-packages/torch/nn/parallel/distributed.py", baris 442, di depan
keluaran = self.module( input[0], * kwargs[0])
File "/home/fw/Softwares/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", baris 541, di __call__
hasil = self.forward( input, * kwargs)
File "/home/fw/Softwares/RetinaNet/maskrcnn_benchmark/modeling/detector/generalized_rcnn.py", baris 50, di depan
proposal, proposal_losses = self.rpn(gambar, fitur, target)
File "/home/fw/Softwares/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", baris 541, di __call__
hasil = self.forward( input, * kwargs)
File "/home/fw/Softwares/RetinaNet/maskrcnn_benchmark/modeling/rpn/retinanet/retinanet.py", baris 136, di depan
return self._forward_train(jangkar, box_cls, box_regression, target)
File "/home/fw/Softwares/RetinaNet/maskrcnn_benchmark/modeling/rpn/retinanet/retinanet.py", baris 143, di _forward_train
jangkar, box_cls, box_regression, target
File "/home/fw/Softwares/RetinaNet/maskrcnn_benchmark/modeling/rpn/retinanet/loss.py", baris 172, di __call__
match_quality_matrix = boxlist_iou(target_, jangkar_)
File "/home/fw/Softwares/RetinaNet/maskrcnn_benchmark/structures/rboxlist_ops.py", baris 167, di boxlist_iou
overlaps_th = torch.tensor(overlaps).to(boxlist1.bbox.device) #[N, M]
RuntimeError: CUDA error: akses memori ilegal ditemukan
terminasi dipanggil setelah melempar instance 'c10::Error'
what(): CUDA error: ditemukan akses memori ilegal (insert_events di /pytorch/c10/cuda/CUDACachingAllocator.cpp:569)
frame #0: c10::Error::Error(c10::SourceLocation, std::string const&) + 0x33 (0x7fb1e9515813 di /home/fw/Softwares/anaconda3/lib/python3.7/site-packages/torch/lib /libc10.so)

pengaturan CUDA_LAUNCH_BLOCKING ke 1 tidak berhasil.

Apakah masalah ini terkait dengan yang satu ini?
Saya menggunakan Ubuntu 18.04, dan saya telah mencoba pytorch 1.1.0, 1.2.0, 1.3.0 dan cuda's 9.2, 10.0, 10.1 dengan Python 3.7.4 dalam instalasi conda. Driver nvidia-smi yang saya gunakan saat ini adalah 440.26, tetapi saya telah mencoba banyak juga, tidak ada yang berfungsi.

Dalam kasus saya, saya mendapatkan pesan RuntimeError: CUDA error: an illegal memory access was encountered ketika saya menjalankan kode saya di gpu 1, tetapi berjalan dengan baik di gpu 0:

gpu=1
device = torch.device(f"cuda:{gpu}" if torch.cuda.is_available() else "cpu")
if torch.cuda.is_available():
    torch.cuda.set_device(device)

Adakah ide tentang cara mencoba men-debug ini?

@jzazo
Hai, saya punya masalah serupa.
Jika saya menggunakan device = torch.device("cuda:1") , saya selalu mendapatkan kesalahan RuntimeError: CUDA error: an illegal memory access was encountered .

Tetapi ketika saya menetapkan gpu tertentu dengan torch.cuda.set_device(1) , semuanya baik-baik saja.

Saya mendapatkan kesalahan ini juga, tetapi tampaknya tergantung pada ukuran batch saya. Saya tidak menemukannya pada ukuran batch yang lebih kecil.
pytorch v 1.3.1 pada V100

@heiyuxiaokai
Output pertama menunjukkan kesalahan "kehabisan memori".
Bisakah Anda menurunkan ukuran batch dan menjalankan kembali kode Anda lagi?
Apakah Anda menggunakan potongan kode dari posting pertama atau yang lain?

@jzazo
Skrip asli tidak menggunakan apex, jadi masalah ini seharusnya tidak terkait.

@kouohhashi @dan-nadler
Apakah Anda menggunakan skrip dari posting pertama atau yang lain?

Saya masih tidak dapat mereproduksi kesalahan untuk lebih dari 20k iterasi, jadi saya memerlukan cuplikan kode (lainnya) untuk mereproduksi masalah ini.

@ptrblck Saya menggunakan skrip yang berbeda. Menjaga ukuran batch tetap rendah dan memindahkan operasi ke dalam fungsi tampaknya telah menyelesaikannya, meskipun saya menggunakan sekitar 80% pemanfaatan memori GPU. Saya memiliki beberapa masalah, jadi saya tidak yakin perubahan mana yang mengatasi masalah mana.

Saya mencoba contoh MNIST ini .

Saya menambahkan baris berikut di awal skrip:

gpu = 1
device = torch.device(gpu if torch.cuda.is_available() else "cpu")
if torch.cuda.is_available():
    torch.cuda.set_device(gpu)

dan device = torch.device(gpu if use_cuda else "cpu") dalam fungsi utama.
Saya mendapatkan kesalahan berikut: RuntimeError: cublas runtime error : resource allocation failed at /opt/conda/conda-bld/pytorch_1570710718161/work/aten/src/THC/THCGeneral.cpp:216

Ini adalah kesalahan yang berbeda dari apa yang saya dapatkan dalam skrip saya sendiri, tetapi contoh sederhana masih tidak berjalan pada gpu=1 , tetapi itu berfungsi pada gpu=0 .

Saya baru ingat saya mengikuti panduan ini untuk memindahkan Xorg dari dimuat pada GPU diskrit, untuk dijalankan pada chip terintegrasi Intel. Mungkinkah perubahan ini bertanggung jawab atas perilaku aneh ini?
Saya akan membatalkan perubahan dan melaporkan kembali hasilnya.

Saya melakukan rollback dan itu tidak memperbaiki masalah. Saya sekali lagi menghapus driver nvidia, menginstalnya dan cuda lagi, dan saya masih mendapatkan kesalahan. Saya tidak tahu bagaimana menemukan sumber masalahnya.

@dan-nadler penggunaan memori puncak mungkin menyebabkan masalah OOM.

@jzazo Saya tidak dapat mereproduksi masalah ini dengan menambahkan kode yang Anda berikan ke contoh MNIST pada sistem 8 GPU (dijalankan kembali dengan id GPU yang berbeda).

GPU apa yang Anda gunakan sebagai GPU1? Jika itu adalah chip terintegrasi intel, ini tidak akan berfungsi.
Anda akan membutuhkan GPU yang dapat mengeksekusi kode CUDA.

Saya memiliki kartu terintegrasi Intel dan 2x Ti 1080-GTX di sistem Ubuntu 18.04. Ketika saya mendapatkan beberapa waktu saya akan mencoba mempersempit masalah. Saya tidak tahu apa penyebabnya.

Sudahkah Anda memecahkan masalah ini? Saya bertemu dengan yang sama baru-baru ini. Saya dapat menjalankan kode dengan benar di mesin, tetapi bug muncul di komputer saya sendiri, bahkan kedua mesin memiliki kartu 2080Ti yang sama dengan penyelam yang sama dan lingkungan conda yang sama @xiaoxiangyeyuwangye

permasalahan yang sama. ubuntu 16.04, 2080 ti Versi Driver: 440.33.01 Versi CUDA: 10.2

Saya mengalami masalah yang berpotensi terkait juga. Pada mesin dengan 8 GPU RTX 2080 Ti, satu GPU tertentu (4) memberikan masalah akses memori ilegal CUDA saat mencoba menyalin dari GPU ke CPU:

# predicted = pytorch tensor on GPU
predicted = predicted.view(-1).detach().cpu().numpy()
# RuntimeError: CUDA error: an illegal memory access was encountered

Kode identik berjalan dengan baik pada 7 GPU lainnya tetapi memberikan kesalahan pada GPU khusus ini setelah sejumlah iterasi acak.

Driver: 430.50
Ubuntu 18.04.3 LTS
CUDA: 10.1.243
cuDNN: 7.5.1

conda install
python: 3.7.4
pytorch:  1.1.0 py3.7_cuda10.1.243_cudnn7.6.3_0
cudatoolkit: 10.1.243
torchvision:  0.4.2

Saya belum terlalu banyak bermain-main, tetapi ini terjadi cukup berulang (biasanya dalam 20-30 menit berjalan) hanya pada GPU yang satu ini. Adakah perkembangan tentang masalah ini sebelum saya mulai memeriksa perangkat keras?

@sicklife @bhaeffele Apakah Anda melihat kesalahan ini menggunakan cuplikan kode dari posting pertama di pengaturan Anda?

Masalah yang sama di sini, terjadi ketika saya mencoba dan memanggil .to(device). CUDA 9.2, obor 0.4.0, torchvision 0.2.1.

Saya menjalankan kode dari posting pertama untuk iterasi 1e6 tanpa kesalahan pada GPU "bermasalah" saya. Masih mendapatkan kesalahan dengan kode saya di GPU itu saja.

@knagrecha
0.4.0 sudah cukup tua sekarang. Bisakah Anda memperbarui ke rilis stabil terbaru ( 1.4.0 ) dan coba lagi skrip Anda? Jangan ragu untuk membuat masalah baru jika Anda melihat kesalahan yang sama dengan panggilan to('cuda') dan melakukan ping ke saya di sana atau apakah Anda melihat kesalahan ini dengan cuplikan kode yang pertama kali diposting?

@bhaeffele Bisakah Anda memposting cuplikan kode yang dapat dieksekusi (minimal) untuk mereproduksi kesalahan ini?

input0 = obor.randn(32, 3, 1024).cuda()

coba ini

input0 = Variabel(obor.randn(32, 3, 1024).cuda())

dan jangan lupa

dari variabel impor obor.autograd

@hadypranoto Variables tidak digunakan lagi di 0.4.0 , jadi ini tidak perlu.
Namun, saya masih akan merekomendasikan untuk memperbarui ke rilis stabil terbaru dan menjalankan kembali skrip.

Halo semuanya!
Saya menemukan kesalahan akses memori ilegal yang aneh. Itu terjadi secara acak tanpa pola yang teratur.
Kodenya sangat sederhana. Ini adalah PointNet untuk segmentasi point cloud. Saya tidak berpikir ada yang salah dalam kode.

import torch
import torch.nn as nn
import torch.nn.functional as F
import os
class InstanceSeg(nn.Module):
    def __init__(self, num_points=1024):
        super(InstanceSeg, self).__init__()

        self.num_points = num_points

        self.conv1 = nn.Conv1d(9, 64, 1)
        self.conv2 = nn.Conv1d(64, 64, 1)
        self.conv3 = nn.Conv1d(64, 64, 1)
        self.conv4 = nn.Conv1d(64, 128, 1)
        self.conv5 = nn.Conv1d(128, 1024, 1)
        self.conv6 = nn.Conv1d(1088, 512, 1)
        self.conv7 = nn.Conv1d(512, 256, 1)
        self.conv8 = nn.Conv1d(256, 128, 1)
        self.conv9 = nn.Conv1d(128, 128, 1)
        self.conv10 = nn.Conv1d(128, 2, 1)
        self.max_pool = nn.MaxPool1d(num_points)

    def forward(self, x):
        batch_size = x.size()[0] # (x has shape (batch_size, 9, num_points))

        out = F.relu(self.conv1(x)) # (shape: (batch_size, 64, num_points))
        out = F.relu(self.conv2(out)) # (shape: (batch_size, 64, num_points))
        point_features = out

        out = F.relu(self.conv3(out)) # (shape: (batch_size, 64, num_points))
        out = F.relu(self.conv4(out)) # (shape: (batch_size, 128, num_points))
        out = F.relu(self.conv5(out)) # (shape: (batch_size, 1024, num_points))
        global_feature = self.max_pool(out) # (shape: (batch_size, 1024, 1))

        global_feature_repeated = global_feature.repeat(1, 1, self.num_points) # (shape: (batch_size, 1024, num_points))
        out = torch.cat([global_feature_repeated, point_features], 1) # (shape: (batch_size, 1024+64=1088, num_points))

        out = F.relu(self.conv6(out)) # (shape: (batch_size, 512, num_points))
        out = F.relu(self.conv7(out)) # (shape: (batch_size, 256, num_points))
        out = F.relu(self.conv8(out)) # (shape: (batch_size, 128, num_points))
        out = F.relu(self.conv9(out)) # (shape: (batch_size, 128, num_points))

        out = self.conv10(out) # (shape: (batch_size, 2, num_points))

        out = out.transpose(2,1).contiguous() # (shape: (batch_size, num_points, 2))
        out = F.log_softmax(out.view(-1, 2), dim=1) # (shape: (batch_size*num_points, 2))
        out = out.view(batch_size, self.num_points, 2) # (shape: (batch_size, num_points, 2))

        return out

Num = 0
network = InstanceSeg()
network.cuda()
while(1):

    input0 = torch.randn(32, 3, 1024).cuda()
    input1 = torch.randn(32, 3, 1024).cuda()
    input2 = torch.randn(32, 3, 1024).cuda()
    input = torch.cat((input0, input1, input2), 1)

    out = network(input)
    Num = Num+1
    print(Num)

Setelah sejumlah langkah acak, kesalahan meningkat. Laporan kesalahan adalah

Traceback (most recent call last):
  File "/home/wangye/Frustum-PointNet_Test/frustum_pointnet.py", line 58, in <module>
    input0 = torch.randn(32, 3, 1024).cuda()
RuntimeError: CUDA error: an illegal memory access was encountered

Ketika saya menambahkan "os.environ['CUDA_LAUNCH_BLOCKING'] = '1'" di bagian atas skrip ini, laporan kesalahan diubah menjadi ini

Traceback (most recent call last):
  File "/home/wangye/Frustum-PointNet_Test/frustum_pointnet.py", line 64, in <module>
    out = network(input)
  File "/home/wangye/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/wangye/Frustum-PointNet_Test/frustum_pointnet.py", line 35, in forward
    out = F.relu(self.conv5(out)) # (shape: (batch_size, 1024, num_points))
  File "/home/wangye/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/wangye/anaconda3/lib/python3.6/site-packages/torch/nn/modules/conv.py", line 187, in forward
    self.padding, self.dilation, self.groups)
RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED

Saya tahu beberapa operasi pengindeksan yang salah dan beberapa metode penggunaan fungsi kehilangan yang salah dapat menyebabkan kesalahan akses memori ilegal. Tetapi dalam skrip ini, tidak ada operasi semacam itu.
Saya yakin kesalahan ini bukan karena kehabisan memori karena hanya sekitar 2G memori GPU yang digunakan, dan saya memiliki memori GPU 12G sepenuhnya.

Ini adalah informasi lingkungan saya:

OS: Ubuntu 16.04 LTS 64-bit
Command: conda install pytorch torchvision cudatoolkit=9.0 -c pytorch
GPU: Titan XP
Driver Version: 410.93
Python Version: 3.6
cuda Version: cuda_9.0.176_384.81_linux
cudnn Version: cudnn-9.0-linux-x64-v7.4.2.24
pytorch Version: pytorch-1.0.1-py3.6_cuda9.0.176_cudnn7.4.2_2

Saya sudah lama terjebak di sini.
Sebenarnya, tidak hanya proyek ini yang menghadapi kesalahan ini, banyak proyek lain menghadapi kesalahan serupa di komputer saya.
Saya tidak berpikir ada yang salah dalam kode. Itu dapat berjalan dengan benar untuk beberapa langkah. Mungkin kesalahan ini karena lingkungan. Saya tidak yakin.
Apakah ada yang tahu tentang situasi ini? Jika informasi lebih rinci diperlukan, beri tahu saya.
Terima kasih atas saran apa pun.

saya menghadapi masalah ini..
Tapi fungsi saya adalah torch.zeros atau torch.ones

input0 = obor.randn(32, 3, 1024).cuda()

coba ini

input0 = Variabel(obor.randn(32, 3, 1024).cuda())

dan jangan lupa

dari variabel impor obor.autograd

Cara ini tidak membantu saya hanya menunda kesalahan kode ... j7

Saya menemui masalah yang sama, Itu terjadi secara acak ketika mendistribusikan pelatihan pada 4 GPU, dan selalu pada GPU 0. (Ubuntu 16.04, 1080ti x 3 dan Titan Xp x 1, Versi Driver: 430.50, Versi CUDA: 10.1, pytorch: 1.4.0a0 +7f73f1d

Ini juga terjadi pada saya ketika saya mencoba menjalankan PRNet .

RuntimeError: Caught RuntimeError in replica 0 on device 0.
...
...
H = torch.matmul(src_centered, src_corr_centered.transpose(2, 1).contiguous()).cpu()
RuntimeError: CUDA error: an illegal memory access was encountered

Yang perlu diperhatikan adalah perangkat 0 adalah perangkat yang sama yang saya gunakan untuk monitor saya. Saya ingin tahu apakah orang lain juga memiliki masalah dengan GPU yang bertanggung jawab untuk menggerakkan monitor mereka.

Saat ini saya menjalankannya dengan CUDA_VISIBLE_DEVICES=1 dan akan melaporkan kembali jika saya masih mendapatkan masalah.

Suntingan terlambat: Itu tidak membantu. Mencoba di GPU utama saja.
Perbarui lagi: Meskipun ada kesalahan di atas, ini berjalan dengan baik pada perangkat 0 (2 zaman saat menulis ini). Dan seperti yang disebutkan, perangkat 0 adalah GPU yang sama yang digunakan untuk monitor saya.
Pembaruan lain: Setelah 7 zaman itu macet lagi dengan kesalahan yang sama seperti di atas.

Ubuntu 18.04
2 x GeForce GTX TITAN X
Versi Pengemudi: 440.64
Versi Cuda: 10.1
Versi obor: 1.5.0 (setiap malam)

@jzazo
Hai, saya punya masalah serupa.
Jika saya menggunakan device = torch.device("cuda:1") , saya selalu mendapatkan kesalahan RuntimeError: CUDA error: an illegal memory access was encountered .

Tetapi ketika saya menetapkan gpu tertentu dengan torch.cuda.set_device(1) , semuanya baik-baik saja.

Sudahkah Anda memecahkan masalah Anda? Saya menemui masalah yang sama, dapatkah Anda membantu saya?

Tidak, saya belum menghabiskan lebih banyak waktu untuk ini, dan saya tidak bisa memperbaikinya.

Tidak, saya belum menghabiskan lebih banyak waktu untuk ini, dan saya tidak bisa memperbaikinya.

Apakah Anda pernah mencoba untuk menghapus GPU dan menginstalnya kembali?

Never end .. problem... Dikirim dari smartphone Samsung Galaxy saya.
-------- Pesan asli -------- Dari: Sebastian Grans [email protected] Tanggal: 28/3/20 1:30 (GMT+07:00) Kepada: pytorch/pytorch [email protected] Cc: hadypranoto [email protected] , Sebutkan [email protected] Perihal: Re: [pytorch/pytorch] RuntimeError: CUDA error: akses memori ilegal ditemukan (#21819)
Ini juga terjadi pada saya ketika saya mencoba menjalankan PRNet.
RuntimeError: Tertangkap RuntimeError di replika 0 pada perangkat 0.
...
...
H = obor.matmul(src_center, src_corr_center.transpose(2, 1).contiguous()).cpu()
RuntimeError: CUDA error: akses memori ilegal ditemukan

Yang perlu diperhatikan adalah perangkat 0 adalah perangkat yang sama yang saya gunakan untuk monitor saya. Saya ingin tahu apakah orang lain juga memiliki masalah dengan GPU yang bertanggung jawab untuk menggerakkan monitor mereka.
Saat ini saya menjalankannya dengan CUDA_VISIBLE_DEVICES=1 dan akan melaporkan kembali jika saya masih mendapatkan masalah.
Ubuntu 18.04
2 x GeForce GTX TITAN X
Versi Pengemudi: 440.64
Versi Cuda: 10.1
Versi obor: 1.5.0 (setiap malam)

—Anda menerima ini karena Anda disebutkan. Balas email ini secara langsung, lihat di GitHub, atau berhenti berlangganan.
[
{
"@konteks": " http://schema.org ",
"@type": "Pesan Email",
"potensiAksi": {
"@type": "ViewAction",
"target": " https://github.com/pytorch/pytorch/issues/21819#issuecomment -605201414",
"url": " https://github.com/pytorch/pytorch/issues/21819#issuecomment -605201414",
"name": "Lihat Masalah"
},
"description": "Lihat Masalah ini di GitHub",
"penerbit": {
"@type": "Organisasi",
"nama": "GitHub",
"url": " https://github.com "
}
}
]

Pembaruan lain:
Menjalankan dengan CUDA_LAUNCH_BLOCKING=1 Saya bisa mendapatkan beberapa informasi lebih lanjut.

Exception has occurred: RuntimeError
cuda runtime error (700) : an illegal memory access was encountered at /pytorch/aten/src/THC/generic/THCTensorScatterGather.cu:72
  File "/home/grans/Documents/prnet2/model.py", line 535, in forward
    src_keypoints = torch.gather(src, dim=2, index=src_keypoints_idx)

[omitted]

Saya menjalankan ini dalam mode debug di VS Code sehingga saya bisa melihat jejak tumpukan dan juga melihat variabel secara interaktif, tetapi tidak ada variabel cuda yang dapat diakses di jejak tumpukan. Faktanya, menggunakan cuda sama sekali tampaknya memberikan kesalahan.

Saya mencoba membuat tensor baru di terminal debug, tetapi ini juga menghasilkan kesalahan illegal memory access :

> mytensor = torch.Tensor([[1,2,3,4,5]])
> mytensor.numpy()
array([[1., 2., 3., 4., 5.]], dtype=float32)
> mytensor = torch.Tensor([[1,2,3,4,5]]).cuda()
RuntimeError: CUDA error: an illegal memory access was encountered

Catatan: Ini terjadi terlepas dari GPU mana saya menjalankannya.

Catatan tambahan:
Kode tampaknya berjalan dengan baik dengan torch.backends.cudnn.enabled = False dan sekitar dua kali lebih cepat. 🤔

Dalam PR yang tampaknya tidak terkait ( https://github.com/pytorch/pytorch/pull/36668 ) saya mengalami kesalahan yang sama di PyTorch CI

@SebastianGrans perintah mana yang Anda gunakan untuk melatih model?
Ketiga cmd pelatihan menghasilkan:

ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 128])

Juga, apakah Anda menginstal semua dependensi dari environment.yml ?
Jika demikian, dapatkah Anda mengomentari paket torch dan torchvision , karena sekarang sudah cukup tua?

Akan sangat bagus jika salah satu pengguna di sini dapat memeriksa https://github.com/pytorch/pytorch/pull/36668 , membangunnya, menjalankan pytest -sv test/test_autograd.py -x , dan mengonfirmasi apakah mereka mengalami kesalahan yang sama. Jika demikian, kami akhirnya akan memiliki cara untuk mereproduksi kesalahan ini di CI dengan andal.

@Baranowski Akses memori ilegal dapat dibuat dengan berbagai cara. Saya ragu PR Anda terkait dengan pertanyaan awal, yang menggunakan CNN 1D.

Saya melihat, terima kasih untuk mengklarifikasi.

@ptrblck : Saya mungkin memiliki masalah itu juga. Berikut adalah repo dari kode "berfungsi" saya saat ini yang tidak memberikan kesalahan itu: repo .

Hanya untuk memastikan semuanya masih berfungsi, saya melakukan klon baru dan mengatur lingkungan virtual dengan obor dan torchvision default pip. Anehnya, ini berfungsi saat berjalan di kedua GPU. (Setidaknya sampai macet karena masalah dengan pemecah svd topk , masalah yang telah dibahas di pelacak masalah repo asli: di sini )

Saya kemudian menginstal torch==1.5.0 , torchvision==0.6.0.dev20200327+cu101 . Dengan perintah berikut saya mendapatkan RuntimeError: CUDA error ... pada iterasi 372/820.

python3 main.py --exp_name "gittest" --svd_on_gpu --batch_size 12

Untuk menambah tumpukan, saya juga memiliki kesalahan ini setelah 28 periode pelatihan imagenet:

THCudaCheck FAIL file=/pytorch/aten/src/THC/THCCachingHostAllocator.cpp line=278 error=700 : an illegal memory access was encountered
Traceback (most recent call last):
  File "train_imagenet.py", line 350, in <module>
    main()
  File "train_imagenet.py", line 79, in main
    main_worker(args.gpu, args.pretrained, args.arch, args.lr, args.momentum, args.weight_decay, args.resume, args.data, args.epochs, args.workers, args.batch_size, args.evaluate, args.print_freq)
  File "train_imagenet.py", line 170, in main_worker
    train(train_loader, model, criterion, optimizer, epoch, gpu, print_freq)
  File "train_imagenet.py", line 217, in train
    losses.update(loss.detach().item(), images.size(0))
RuntimeError: CUDA error: an illegal memory access was encountered

Ubuntu 18.04
1 x GeForce RTX 2080 berpendingin air
Versi Pengemudi: 440.64
Versi Cuda: 10.2
Versi obor: 1.4.0

@SebastianGrans
"Ini adalah repo dari kode "berfungsi" saya saat ini yang tidak memberikan kesalahan itu: repo."
Bisakah Anda memposting cuplikan kode, yang mereproduksi kesalahan ini?

Kode yang Anda berikan berjalan tanpa kesalahan menggunakan:

python3 main.py --exp_name "gittest" --svd_on_gpu --batch_size 12

@mgolub2
Kode mana yang Anda jalankan?

@ptrblck Menarik, karena itu crash di mesin saya. Aku akan melihat ke dalamnya...

@SebastianGrans Saya akan mencoba mereproduksinya di sistem yang berbeda dan versi PyTorch.

Saya juga mengalami masalah serupa. Tidak apa-apa sebelum memperbarui ke CUDA10.2 dan PyTorch1.5

images = images.to(device, non_blocking=True)
labels = labels.to(device, non_blocking=True)
logits = self.model(images)
acc, _ = util.accuracy(logits, labels, topk=(1, 5))
acc_meters.update(acc.item(), labels.shape[0])
acc_meters.update(acc.item(), labels.shape[0])
RuntimeError: CUDA error: an illegal memory access was encountered

Ubuntu 19.10
1 x GeForce RTX 2080ti
Versi Pengemudi: 440.64
Versi Cuda: 10.2
Versi obor: 1.5.0

Saya memiliki masalah yang sama pada iterasi acak dengan obor 1.5.0 dan CUDA 10.1.
THCudaCheck FAIL file=/pytorch/aten/src/THC/THCCachingHostAllocator.cpp line=278 error=700 : ditemukan akses memori ilegal
benar = pred.eq(masker).sum().item()
RuntimeError: CUDA error: akses memori ilegal ditemukan

Saya juga memenuhi pertanyaan ini, dan saya menemukan ketika dataset saya kecil, pertanyaan ini tidak akan muncul. Saya kira ini adalah bug untuk pytorch

Saya ingin menambahkan bahwa saya mengalami masalah yang sama pada PyTorch 1.3 dengan CUDA 10.0. Saya menggunakan 8 GPU dan masalahnya hanya terjadi pada GPU 4.

Masalah yang sama di sini, tetapi ketika saya mengubah ukuran batch dari 16 menjadi 12 masalahnya hilang,
pytorch 1.4, v100

@HanxunHuangLemonBear @yczhang1017 @XinMing0411 @greeneggsandyaml @curiosity2
Jika Anda tidak mengalami akses memori ilegal dengan kode yang diposting dari komentar 1, harap buat masalah baru dengan informasi tentang skrip dan pengaturan Anda (menggunakan templat yang disediakan).

Sudahkah Anda memeriksa penggunaan memori GPU?
Dalam kasus saya, kesalahan memori ilegal berarti kesalahan memori GPU.

Saya mengalami masalah yang sama ketika menjalankan skrip untuk fine-tuning gpt2. Ini mungkin disebabkan oleh beberapa bug di CUDA atau pytorch.

Kesalahan CUDA: ditemukan akses memori ilegal (insert_events di /pytorch/c10/cuda/CUDACachingAllocator.cpp:764)

Memutakhirkan obor ke 1.5.0 dan cuda ke 10.2 memecahkan masalah saya.

@ptrblck Maaf atas respons yang tertunda, saya adalah kode pelatihan imagenet dari sini https://github.com/pytorch/examples/tree/master/imagenet.

Saya belum mengalami kesalahan sejak memodifikasi batas daya pada GPU saya - Jadi saya tidak lagi yakin kerusakan saya terkait dengan masalah asli di sini. Saya perhatikan bahwa saat menjalankan beban kerja komputasi, RTX 2080 sangat tercekik segera setelah suhu >50C dan level daya ~> 140W. Dengan membatasi gpu ke 130W, sebenarnya akan tetap di ~1500MHz alih-alih turun ke 800MHz atau bahkan 300MHz, bahkan jika suhunya >60C. Saya telah menyelesaikan dua proses dengan cara ini tanpa masalah.

Untuk mempertaruhkan tebakan potensial, mungkin Nvidia melakukan sesuatu bahkan dengan voltase juga ketika GPU mundur, yang mungkin menyebabkan beberapa perhitungan menjadi serba salah?

Saya juga menggunakan Torch 1.5.0 dan CUDA 10.2 dan saya masih mengalami masalah ini. Ketika saya mendapatkan di atas sekitar 4 Gb penggunaan memori pada GPU adalah saat yang tampaknya terjadi. Saya menggunakan GTX 1080 dan menjalankan jaringan saraf convolutional 2d jika itu penting.

Kesalahan CUDA: ditemukan akses memori ilegal

Saya memiliki masalah yang sama dan saya menemukan bahwa saya telah mendefinisikan nn.layer dalam file inferensi dan tidak menambahkannya ke GPU.
nn.layer = nn.layer.to(args.device)
Saya tidak tahu apakah itu masalah yang Anda miliki, tetapi saya pikir ini mungkin membantu.

Saya memiliki masalah yang sama pada pytorch1.0 dan cuda 9.2 saat melatih kode segmentasi saya. Saya menemukan bahwa pengaturan torch.backends.cudnn.deterministic = True dapat menyelesaikan kesalahan, tetapi saya tidak tahu mekanisme di balik kesalahan ini.

@youth123 Ada pengaturan lain tentang torch cuda kecuali torch.backends.cudnn.deterministic, menyukai torch.backends.cudnn.enabled, os.environ["CUDA_VISIBLE_DEVICES"] atau .to(config.devices[0])?
Saya memiliki masalah yang sama. Ini mengganggu saya waktu yang lama. Tolong bantu aku. Terima kasih banyak.

@tjusxh Saya mencoba pengaturan lain dan semuanya tidak berfungsi kecuali torch.backends.cudnn.deterministic . Mungkin memperbarui versi pytorch adalah solusi cepat.

Dapatkan kesalahan ini hari ini 3 Juni 2020 menggunakan pytorch 1.5. GPU adalah T4 di Debian. Saya punya torch.backends.cudnn.deterministic = False

     Epoch   gpu_mem      GIoU       obj       cls     total   targets  img_size
    85/299     10.4G   0.05363   0.07044   0.03127    0.1553       779       640:  25%|████████████████                                               | 470/1849 [07:00<20:26,  1.12it/s]Traceback (most recent call last):
  File "train.py", line 395, in <module>
    train(hyp)
  File "train.py", line 262, in train
    scaled_loss.backward()
  File "/opt/conda/lib/python3.6/contextlib.py", line 88, in __exit__
    next(self.gen)
  File "/opt/conda/lib/python3.6/site-packages/apex/amp/handle.py", line 127, in scale_loss
    should_skip = False if delay_overflow_check else loss_scaler.update_scale()
  File "/opt/conda/lib/python3.6/site-packages/apex/amp/scaler.py", line 200, in update_scale
    self._has_overflow = self._overflow_buf.item()
RuntimeError: CUDA error: an illegal memory access was encountered

"akses memori ilegal ditemukan" adalah kesalahan umum yang dapat disebabkan oleh berbagai alasan. Kecuali jika laporan Anda disertai dengan contoh minimum yang dapat dijalankan dan dapat direproduksi yang memicu kesalahan ini, laporan tersebut tidak dapat ditindaklanjuti.

@ngimel ya saya mengerti. Sayangnya ini sangat jarang, jadi saya tidak dapat menyediakan kode untuk direproduksi, karena saya bahkan tidak dapat mereproduksinya sendiri, tetapi saya pikir saya akan menambahkan statistik di sini.

Satu-satunya detail lain yang saya miliki adalah saya menggunakan Nvidia Apex untuk pelatihan.

@tjusxh Saya mencoba pengaturan lain dan semuanya tidak berfungsi kecuali torch.backends.cudnn.deterministic . Mungkin memperbarui versi pytorch adalah solusi cepat.

Terima kasih banyak. Saya memecahkan masalah dengan mengubah ke cpu. Data saya di luar batas.

@ngimel Apakah Anda punya saran bagaimana kami bisa mencapai ini? Bug ini tampaknya sangat sulit dipahami.

Kode yang mogok di satu GPU atau komputer, mungkin berjalan dengan baik di yang lain. Mengubah ukuran batch terkadang mencegah crash pada batch tertentu, hanya untuk muncul kemudian di epoch. 😕

@tjusxh Hanya mengubah ke cpu dapat memecahkan masalah bahwa data di luar batas?

Traceback (panggilan terakhir terakhir):
File "train.py", baris 104, di
train(model, train_iter, pengoptimal, kriteria)
File "train.py", baris 28, di kereta
rugi.mundur()
File "/usr/local/lib/python3.6/dist-packages/torch/tensor.py", baris 198, di belakang
torch.autograd.backward(self, gradient, retain_graph, create_graph)
File "/usr/local/lib/python3.6/dist-packages/torch/autograd/__init__.py", baris 100, mundur
allow_unreachable=True) # flag allow_unreachable
RuntimeError: CUDA error: akses memori ilegal ditemukan (embedding_dense_backward_cuda di /pytorch/aten/src/ATen/native/cuda/Embedding.cu:267)
Saya juga menemukan masalah ini dan berharap mendapatkan bantuan.

Mungkin petunjuk: Saya memiliki kode obor 1.5 fp32 yang menimbulkan kesalahan ini untuk model besar dan tidak untuk model kecil:

rp_bucket = rp_bucket.to(self.relative_attention_bias.weight.device)
RuntimeError: CUDA error: an illegal memory access was encountered

Bahkan saya mendapatkan kesalahan ini. Lebih detail di sini

Saya mengalami kesuksesan yang lebih baik dengan pytorch 1.6 (setiap malam), saya sarankan untuk mencobanya.

Saya mengalami kesuksesan yang lebih baik dengan pytorch 1.6 (setiap malam), saya sarankan untuk mencobanya.

Di mana pytorch 1.6? Saya hanya dapat menemukan 1.5.1

Semoga membantu orang lain yang berakhir di sini, solusi yang disarankan di sini berhasil untuk saya:

@jzazo
Hai, saya punya masalah serupa.
Jika saya menggunakan device = torch.device("cuda:1") , saya selalu mendapatkan kesalahan RuntimeError: CUDA error: an illegal memory access was encountered .

Tetapi ketika saya menetapkan gpu tertentu dengan torch.cuda.set_device(1) , semuanya baik-baik saja.

Saya baru saja menambahkan torch.cuda.set_device(<device_num>) sebelum sisa kode saya, dan berhasil. Kesalahan bagi saya adalah saya memuat model dari pos pemeriksaan menggunakan pytorch lightning dan ada sesuatu yang diletakkan di gpu default (yaitu gpu 0).

Saya mengalami kesuksesan yang lebih baik dengan pytorch 1.6 (setiap malam), saya sarankan untuk mencobanya.

Di mana pytorch 1.6? Saya hanya dapat menemukan 1.5.1

@LetsGoFir seharusnya:

conda install pytorch torchvision cudatoolkit=10.2 -c pytorch-nightly

Tampaknya ada beberapa kemungkinan penyebab. Hanya untuk referensi, saya mengalami masalah yang sama tetapi ketika saya beralih dari satu server GPU (cluster) ke yang lain, kesalahannya hilang. Jadi, perangkat mungkin menjadi salah satu kemungkinan penyebabnya.

periksa torch.backends.cudnn.benchmark=Ture
gunakan torch.backends.cudnn.benchmark=Salah atau # torch.backends.cudnn.benchmark=Benar

@brucemuller Masalah ini masih dapat ditemukan di Pytorch 1.6:

>>> import torch
>>> torch.__version__
'1.6.0'

Dan inilah info coredump:

Traceback (most recent call last):
  File "train.py", line 212, in <module>
    train(None)
  File "/gemfield/hostpv/gemfield/deepvac/lib/syszux_deepvac.py", line 335, in __call__
    self.process()
  File "train.py", line 163, in process
    self.processTrain()
  File "/gemfield/hostpv/gemfield/deepvac/lib/syszux_deepvac.py", line 294, in processTrain
    self.doBackward()
  File "train.py", line 139, in doBackward
    self.loss.backward()
  File "/opt/conda/lib/python3.7/site-packages/torch/tensor.py", line 185, in backward
    torch.autograd.backward(self, gradient, retain_graph, create_graph)
  File "/opt/conda/lib/python3.7/site-packages/torch/autograd/__init__.py", line 127, in backward
    allow_unreachable=True)  # allow_unreachable flag
RuntimeError: transform: failed to synchronize: cudaErrorIllegalAddress: an illegal memory access was encountered
terminate called after throwing an instance of 'c10::Error'
  what():  CUDA error: an illegal memory access was encountered
Exception raised from create_event_internal at /opt/conda/conda-bld/pytorch_1595629403081/work/c10/cuda/CUDACachingAllocator.cpp:687 (most recent call first):
frame #0: c10::Error::Error(c10::SourceLocation, std::string) + 0x4d (0x7fb3e291677d in /opt/conda/lib/python3.7/site-packages/torch/lib/libc10.so)
frame #1: c10::cuda::CUDACachingAllocator::raw_delete(void*) + 0xb5d (0x7fb3e2b66d9d in /opt/conda/lib/python3.7/site-packages/torch/lib/libc10_cuda.so)
frame #2: c10::TensorImpl::release_resources() + 0x4d (0x7fb3e2902b1d in /opt/conda/lib/python3.7/site-packages/torch/lib/libc10.so)
frame #3: <unknown function> + 0x53f0ea (0x7fb41c1990ea in /opt/conda/lib/python3.7/site-packages/torch/lib/libtorch_python.so)
<omitting python frames>
frame #17: __libc_start_main + 0xe7 (0x7fb442bdfb97 in /lib/x86_64-linux-gnu/libc.so.6)

Aborted (core dumped)

mendapat masalah yang sama pada pytorch 1.6 untuk RTX 2070 di Ubuntu 18.04. CUDA 10.2

Ada solusi?
Silakan merujuk ke masalah saya @ darknet: https://github.com/AlexeyAB/darknet/issues/6531

https://github.com/PyTorchLightning/pytorch-lightning/issues/2085#issuecomment -678938629 ini mungkin berguna untuk beberapa kasus.

Kesalahan terjadi pada saya di loss.backward() ketika saya menjalankan model saya pada GPU non-nol dengan apex. Akan ada perbedaan data yang disebabkan oleh apex dalam kasus ini. Mengatur CUDA_VISIBLE_DEVICES=2,3 dan selalu dimulai dari 0 dalam kode trik apex untuk menyelaraskan data internal dan model dan menghindari masalah bagi saya.

Dalam penerjemah python,Saya dapat mereproduksi salah satu skenario:

root<strong i="6">@880e1530b95c</strong>:~/examples# python
Python 3.6.9 (default, Jul 17 2020, 12:50:27) 
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> model = torch.nn.Linear(10, 10)
>>> x = torch.rand(15, 10)
>>> model(x)

sekarang semuanya baik-baik saja.

>>> model.cuda()
Linear(in_features=10, out_features=10, bias=True)
>>> model(x.to(0))

sekarang semuanya baik-baik saja.

>>> model(x)

karena x ada di device:cpu , jadi itu akan melaporkan sesuatu kesalahan

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/dist-packages/torch/tensor.py", line 172, in __repr__
    return torch._tensor_str._str(self)
  File "/usr/local/lib/python3.6/dist-packages/torch/_tensor_str.py", line 372, in _str
    return _str_intern(self)
  File "/usr/local/lib/python3.6/dist-packages/torch/_tensor_str.py", line 352, in _str_intern
    tensor_str = _tensor_str(self, indent)
  File "/usr/local/lib/python3.6/dist-packages/torch/_tensor_str.py", line 241, in _tensor_str
    formatter = _Formatter(get_summarized_data(self) if summarize else self)
  File "/usr/local/lib/python3.6/dist-packages/torch/_tensor_str.py", line 89, in __init__
    nonzero_finite_vals = torch.masked_select(tensor_view, torch.isfinite(tensor_view) & tensor_view.ne(0))
RuntimeError: copy_if failed to synchronize: cudaErrorIllegalAddress: an illegal memory access was encountered

Tetapi setelah ini, jika saya ingin mengonversi perangkat tensor atau modul ke gpu/cpu, itu akan menimbulkan kesalahan:

>>> x.to(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: CUDA error: an illegal memory access was encountered
>>> model.to('cpu')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 612, in to
    return self._apply(convert)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 381, in _apply
    param_applied = fn(param)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 610, in convert
    return t.to(device, dtype if t.is_floating_point() else None, non_blocking)
RuntimeError: CUDA error: an illegal memory access was encountered

Semuanya akan baik-baik saja jika saya me-restart penerjemah python.

Entah bagaimana saya menurunkan pytorch ke 1.4 dan kesalahannya hilang.

Saya juga memiliki masalah yang sama. Tetapi jika saya menjalankan seluruh kode dalam satu sel, maka tidak ada kesalahan. Kesalahan hanya muncul jika saya membagi kode di sel yang berbeda dari notebook jypyter.

Saya juga mengalami masalah ini, saya menguji kode saya baik di tensorflow dan pytorch, semua muncul kesalahan yang sama. Itu dapat berjalan dengan benar untuk beberapa langkah, saya tidak tahu bagaimana menyelesaikan masalah ini. Seseorang tolong aku!

kami telah menguji ini dengan cukup ketat di Lightning (master) dan sepertinya kami tidak mengalami masalah ini... mungkin coba itu?

https://pytorch-lightning.readthedocs.io/en/latest/new-project.html

Masalah ada di rilis terbaru (PyTorch 1.6.0, CUDA 10.1), ini berfungsi dengan baik dengan PyTorch 1.4.0 CUDA 10.1
Siapa saja dari Google Colab, gunakan ini

!pip install torch==1.4.0 torchvision==0.5.0

Saya memiliki masalah yang sama.
Itu muncul setelah saya menambahkan pytorch tensorboard ke saluran pipa saya.
Alasan sepertinya itu terjadi adalah saya lupa memasukkan data saya ke gpu sebelum menulis grafik dengan data ke tensorboard.

Berikut ini adalah contoh "mirip" kecil. Ini sebenarnya kesalahan untuk beberapa alasan yang pelatihan saya tidak. Tetapi setelah menjalankannya model.wieght tidak dapat diakses.

import torch as torch
import torch.nn as nn
from torch.utils.tensorboard import SummaryWriter

model = nn.Linear(5,5)
data = torch.rand(20,5)  # .to('cuda')
model.to('cuda')
# model(data)

writer = SummaryWriter()

writer.add_graph(model, data)
writer.close()

sekarang coba akses model.weight memori cuda rusak.

Selama pelatihan saya tidak ada kesalahan selama runtime. Hanya ketika saya penutup mencoba mengakses bobot model. Kode ini agak menghasilkan kesalahan yang sama.

@xparx tolong ajukan masalah terpisah

Saya juga mendapatkan kesalahan ini dengan Pytorch 1.6.0, Cuda 10.2 dan Cudnn 7.6.5

Traceback (most recent call last):
  File "f:/pythonapps/alphazero_singleplayer/alphazero_pytorch.py", line 240, in <module>
    episode_returns, timepoints, a_best, seed_best, R_best = agent(game=args.game, n_ep=args.n_ep, n_mcts=args.n_mcts,
  File "f:/pythonapps/alphazero_singleplayer/alphazero_pytorch.py", line 214, in agent
    model.train(sb, Vb, pib)
  File "f:\pythonapps\alphazero_singleplayer\nn_model.py", line 49, in train
    vb, pib = vb.cuda(), pib.cuda()
RuntimeError: CUDA error: an illegal memory access was encountered

Saya juga mendapatkan kesalahan ini dengan Pytorch 1.6.0, Cuda 10.2 dan Cudnn 7.6.5

Traceback (most recent call last):
  File "f:/pythonapps/alphazero_singleplayer/alphazero_pytorch.py", line 240, in <module>
    episode_returns, timepoints, a_best, seed_best, R_best = agent(game=args.game, n_ep=args.n_ep, n_mcts=args.n_mcts,
  File "f:/pythonapps/alphazero_singleplayer/alphazero_pytorch.py", line 214, in agent
    model.train(sb, Vb, pib)
  File "f:\pythonapps\alphazero_singleplayer\nn_model.py", line 49, in train
    vb, pib = vb.cuda(), pib.cuda()
RuntimeError: CUDA error: an illegal memory access was encountered

https://github.com/pytorch/pytorch/issues/21819#issuecomment -698809496

https://github.com/pytorch/pytorch/issues/21819#issuecomment -638493770

"akses memori ilegal ditemukan" adalah kesalahan umum yang dapat disebabkan oleh berbagai alasan. Kecuali jika laporan Anda disertai dengan contoh minimum yang dapat dijalankan dan dapat direproduksi yang memicu kesalahan ini, laporan tersebut tidak dapat ditindaklanjuti.

Saya juga mendapatkan kesalahan ini dengan Pytorch 1.6.0, Cuda 10.2 dan Cudnn 7.6.5

Traceback (most recent call last):
  File "f:/pythonapps/alphazero_singleplayer/alphazero_pytorch.py", line 240, in <module>
    episode_returns, timepoints, a_best, seed_best, R_best = agent(game=args.game, n_ep=args.n_ep, n_mcts=args.n_mcts,
  File "f:/pythonapps/alphazero_singleplayer/alphazero_pytorch.py", line 214, in agent
    model.train(sb, Vb, pib)
  File "f:\pythonapps\alphazero_singleplayer\nn_model.py", line 49, in train
    vb, pib = vb.cuda(), pib.cuda()
RuntimeError: CUDA error: an illegal memory access was encountered

@ngimel maaf kesalahan ini ada pada saya, saya bisa memperbaikinya.

Saya menutup masalah ini. Semua pengguna yang melihat "akses memori ilegal" silakan buka masalah baru dengan skrip reproduksi. "akses memori ilegal ditemukan" adalah kesalahan umum yang dapat disebabkan oleh berbagai alasan. Kecuali jika laporan Anda disertai dengan contoh minimum yang dapat dijalankan dan dapat direproduksi yang memicu kesalahan ini, laporan tersebut tidak dapat ditindaklanjuti.

Cara @xiaofeng-fan bekerja untuk saya.
Saya menurunkan pytorch ke 1.4 dan kesalahannya hilang.

Masalah ini masih ada pada saya. Bahkan saya menggunakan pytorch 1.4 dan CUDA 10.1.
Saya menggunakan 2080ti.

Masalah ini masih ada pada saya. Bahkan saya menggunakan pytorch 1.4 dan CUDA 10.1.
Saya menggunakan 2080ti.

https://github.com/pytorch/pytorch/issues/21819#issuecomment -702877382

Pada Sabtu, 3 Okt 2020 pukul 19:15 Chung Rakjoon [email protected]
menulis:

Masalah ini masih ada pada saya. Bahkan saya menggunakan pytorch 1.4 dan CUDA 10.1.
Saya menggunakan 2080ti.


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/pytorch/pytorch/issues/21819#issuecomment-703106176 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/AJIJRG7SP3ZREYG5ANVK7XLSI4TIPANCNFSM4HYOP62Q
.

Saya juga mendapatkan kesalahan ini dengan Pytorch 1.6.0, Cuda 10.2 dan Cudnn 7.6.5

Traceback (most recent call last):
  File "f:/pythonapps/alphazero_singleplayer/alphazero_pytorch.py", line 240, in <module>
    episode_returns, timepoints, a_best, seed_best, R_best = agent(game=args.game, n_ep=args.n_ep, n_mcts=args.n_mcts,
  File "f:/pythonapps/alphazero_singleplayer/alphazero_pytorch.py", line 214, in agent
    model.train(sb, Vb, pib)
  File "f:\pythonapps\alphazero_singleplayer\nn_model.py", line 49, in train
    vb, pib = vb.cuda(), pib.cuda()
RuntimeError: CUDA error: an illegal memory access was encountered

@ngimel maaf kesalahan ini ada pada saya, saya bisa memperbaikinya.

Bisakah Anda menjelaskan apa perbaikan Anda?

Saya dapat mengatakan bahwa perbaikan di pihak saya adalah bahwa saya memiliki nn.EmbeddingBag yang menerima input di luar jangkauan (terlalu besar, satu per satu).

Mungkin bermanfaat bagi seseorang. Saya memiliki masalah ini dan itu adalah hasil dari mengalikan tensor pada gpu dengan tensor pada cpu, dan kemudian mencoba mengakses memori. Khususnya jika Anda membuat tensor baru di tempatnya (yaitu torch.eye(3), maka pastikan tensor ada di gpu). Mungkin torch.matmul() seharusnya menimbulkan kesalahan jika tensor input tidak berada di perangkat yang sama.

Saya memiliki pengalaman serupa juga, saya memiliki nn.LayerNorm pada cpu yang menerima sebagai input tensor pada gpu, karena keduanya pada perangkat yang sama memperbaiki masalah.

@totomobile43 Terima kasih banyak, saya juga mengalami kesalahan akses memori ilegal ini, dan saya pikir saya memiliki masalah yang sama - mengalikan tensor dan kemudian mengakses hasilnya nanti akan menimbulkan kesalahan.

Namun, ketika saya secara eksplisit memindahkan kedua tensor saya ke cpu sebelum melakukan perkalian matriks, kesalahannya hilang.

Masalah ada di rilis terbaru (PyTorch 1.6.0, CUDA 10.1), ini berfungsi dengan baik dengan PyTorch 1.4.0 CUDA 10.1
Siapa saja dari Google Colab, gunakan ini

!pip install torch==1.4.0 torchvision==0.5.0

ini memperbaiki masalah saya @prameth terima kasih!

Saya memutakhirkan pytorch ke 1.7 dan kesalahannya hilang.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat