Pytorch: خطأ وقت التشغيل: خطأ CUDA: تمت مصادفة وصول غير قانوني للذاكرة

تم إنشاؤها على ١٥ يونيو ٢٠١٩  ·  103تعليقات  ·  مصدر: pytorch/pytorch

مرحبا جميعا!
لقد واجهت خطأ غير قانوني غريب في الوصول إلى الذاكرة. يحدث بشكل عشوائي دون أي نمط منتظم.
الكود بسيط حقًا. إنها PointNet لتجزئة السحابة النقطية. لا أعتقد أن هناك أي خطأ في الكود.

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)

بعد عدد عشوائي من الخطوات ، يرتفع الخطأ. تقرير الخطأ هو

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

عندما أضفت "os.environ ['CUDA_LAUNCH_BLOCKING'] = '1'" في الجزء العلوي من هذا البرنامج النصي ، تم تغيير تقرير الخطأ إلى هذا

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

أعلم أن بعض عمليات الفهرسة الخاطئة وبعض طرق الاستخدام الخاطئة لوظيفة الخسارة قد تؤدي إلى خطأ غير قانوني في الوصول إلى الذاكرة. لكن في هذا النص ، لا يوجد مثل هذا النوع من العمليات.
أنا متأكد تمامًا من أن هذا الخطأ ليس بسبب نفاد الذاكرة نظرًا لاستخدام ذاكرة GPU 2G فقط ، ولدي ذاكرة GPU 12G بالكامل.

هذه هي معلومات بيئتي:

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

لقد علقت هنا لفترة طويلة.
في الواقع ، ليس هذا المشروع فقط يواجه هذا الخطأ ، فالعديد من المشاريع الأخرى تواجه خطأً مماثلاً في جهاز الكمبيوتر الخاص بي.
لا أعتقد أن هناك أي خطأ في الكود. يمكن أن يعمل بشكل صحيح لبعض الخطوات. ربما هذا الخطأ بسبب البيئة. لست متأكدا.
هل لدى أي شخص أي فكرة عن هذا الوضع؟ إذا كانت هناك حاجة إلى مزيد من المعلومات التفصيلية ، فيرجى إبلاغي بذلك.
شكرا على أي اقتراح.

cuda triaged

التعليق الأكثر فائدة

تضمين التغريدة
مرحبا ، لدي مشكلة مماثلة.
إذا استخدمت device = torch.device("cuda:1") ، فإنني أتلقى دائمًا خطأ RuntimeError: CUDA error: an illegal memory access was encountered .

ولكن عندما أقوم بتعيين وحدة معالجة مركزية محددة بمقدار torch.cuda.set_device(1) ، كل شيء على ما يرام.

ال 103 كومينتر

يمكن أن يكون نفس خطأ cudnn الثابت في 7.6. انظر https://github.com/pytorch/pytorch/issues/16831. هل يمكنك تجربة pytorch 1.1؟

SsnL شكرا

SsnL أقوم بتحديث البيئة إلى pytorch 1.1 ، cuda 10.0 ، cudnn 7.6 ، لكن هذا الخطأ لا يزال يحدث.

لا يمكن إعادة النسخ باستخدام pytorch 1.1 / cuda10 / cudnn7.6 بعد أكثر من 5000 تكرار (يجب أن يكون كل من V100 و P100 و P100 مشابهًا لـ TitanXP).

لا تزال تواجه هذه المشكلة

zhixuanli هل ترى نفس الخطأ باستخدام أحدث إصدار من PyTorch (1.3.0)؟
هل يمكنك نشر الإعداد الذي تستخدمه ، حتى نتمكن من محاولة إعادة إظهار هذه المشكلة ، حيث لم نتمكن من القيام بذلك حتى الآن.

واجهت نفس المشكلة مع 2080ti. لم ينجح تعيين الدُفعة من 2 إلى 1 وتقليل gtBoxes لكل صورة.
هذه هي معلومات بيئتي:

نظام التشغيل: Ubuntu 16.04 LTS 64 بت
الأمر: conda install pytorch torchvision cudatoolkit = 10.1 -c pytorch
وحدة معالجة الرسومات: 2080ti
إصدار برنامج التشغيل: 418.67.1
إصدار بايثون: 3.7
إصدار cuda: 10.1.2
نسخة cudnn: 7
إصدار pytorch: torch-1.1.0 ، torchvision-0.2.0

ptrblck جربت PyTorch (1.3.0) ، وما زلت أواجه نفس المشكلة
سجل تريان:

خارج الذاكرة
سيطة غير صالحة
تمت مصادفة وصول غير قانوني إلى الذاكرة
تمت مصادفة وصول غير قانوني إلى الذاكرة
Traceback (آخر مكالمة أخيرة):
ملف "tools / train_net.py" ، السطر 174 ، بتنسيق
الأساسية()
ملف "tools / train_net.py" ، السطر 167 ، بشكل رئيسي
النموذج = القطار (cfg، args.local_rank، args.distributed)
ملف "tools / train_net.py" ، السطر 73 ، في القطار
الحجج،
ملف "/home/fw/Softwares/RetinaNet/maskrcnn_benchmark/engine/trainer.py" ، السطر 68 ، في do_train
Loss_dict = نموذج (صور ، أهداف)
ملف "/home/fw/Softwares/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py" ، السطر 541 ، في __call__
النتيجة = self.forward ( الإدخال ، * kwargs)
ملف "/home/fw/Softwares/anaconda3/lib/python3.7/site-packages/torch/nn/parallel/distributed.py" ، السطر 442 ، في المقدمة
الإخراج = self.module ( المدخلات [0] ، * kwargs [0])
ملف "/home/fw/Softwares/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py" ، السطر 541 ، في __call__
النتيجة = self.forward ( الإدخال ، * kwargs)
ملف "/home/fw/Softwares/RetinaNet/maskrcnn_benchmark/modeling/detector/generalized_rcnn.py" ، السطر 50 ، في المقدمة
مقترحات ، خسارات مقترحة = self.rpn (صور ، ميزات ، أهداف)
ملف "/home/fw/Softwares/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py" ، السطر 541 ، في __call__
النتيجة = self.forward ( الإدخال ، * kwargs)
ملف "/home/fw/Softwares/RetinaNet/maskrcnn_benchmark/modeling/rpn/retinanet/retinanet.py" ، السطر 136 ، في المقدمة
إرجاع self._forward_train (المراسي ، box_cls ، box_regression ، الأهداف)
ملف "/home/fw/Softwares/RetinaNet/maskrcnn_benchmark/modeling/rpn/retinanet/retinanet.py" ، السطر 143 ، في _forward_train
المراسي ، box_cls ، box_regression ، الأهداف
ملف "/home/fw/Softwares/RetinaNet/maskrcnn_benchmark/modeling/rpn/retinanet/loss.py" ، السطر 172 ، في __call__
match_quality_matrix = boxlist_iou (الأهداف_ ، المراسي_)
ملف "/home/fw/Softwares/RetinaNet/maskrcnn_benchmark/structures/rboxlist_ops.py" ، السطر 167 ، في boxlist_iou
overaps_th = torch.tensor (التداخلات). to (boxlist1.bbox.device) # [N، M]
خطأ وقت التشغيل: خطأ CUDA: تمت مصادفة وصول غير قانوني للذاكرة
تم استدعاء الإنهاء بعد طرح مثيل لـ "c10 :: Error"
what (): خطأ CUDA: تمت مصادفة وصول غير قانوني للذاكرة (insert_events at /pytorch/c10/cuda/CUDACachingAllocator.cpp:569)
frame # 0: c10 :: Error :: Error (c10 :: SourceLocation، std :: string const &) + 0x33 (0x7fb1e9515813 في /home/fw/Softwares/anaconda3/lib/python3.7/site-packages/torch/lib /libc10.so)

تعيين CUDA_LAUNCH_BLOCKING إلى 1 لم ينجح.

هل هذه مشكلة تتعلق هذه واحدة ؟
أنا على Ubuntu 18.04 ، وقد جربت pytorch 1.1.0 و 1.2.0 و 1.3.0 و cuda 9.2 و 10.0 و 10.1 مع Python 3.7.4 داخل تثبيت conda. برامج تشغيل nvidia-smi التي أستخدمها حاليًا هي 440.26 ، لكنني جربت مجموعة أيضًا ، ولم يعمل أي منها.

في حالتي ، أحصل على رسالة RuntimeError: CUDA error: an illegal memory access was encountered عندما أقوم بتشغيل الكود الخاص بي على gpu 1 ، لكنه يعمل بشكل جيد على 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)

أي أفكار حول كيفية محاولة تصحيح هذا؟

تضمين التغريدة
مرحبا ، لدي مشكلة مماثلة.
إذا استخدمت device = torch.device("cuda:1") ، فإنني أتلقى دائمًا خطأ RuntimeError: CUDA error: an illegal memory access was encountered .

ولكن عندما أقوم بتعيين وحدة معالجة مركزية محددة بمقدار torch.cuda.set_device(1) ، كل شيء على ما يرام.

أتلقى هذا الخطأ أيضًا ، ولكن يبدو أنه يعتمد على حجم الدفعة الخاصة بي. لا أواجهه في أحجام الدُفعات الأصغر.
pytorch v 1.3.1 على V100

تضمين التغريدة
يشير الإخراج الأول إلى خطأ "نفاد الذاكرة".
هل يمكنك تقليل حجم الدفعة وإعادة تشغيل الكود الخاص بك مرة أخرى؟
هل تستخدم مقتطف الشفرة من المنشور الأول أم آخر؟

تضمين التغريدة
النص الأصلي لا يستخدم القمة ، لذا يجب أن تكون هذه المشكلة غير ذات صلة.

تضمين التغريدة
هل تستخدم البرنامج النصي من المشاركة الأولى أم من آخر؟

ما زلت لا أستطيع إعادة إنتاج الخطأ لأكثر من 20 ألف تكرار ، لذلك سأحتاج إلى مقتطف رمز (آخر) لإعادة إظهار هذه المشكلة.

ptrblck أستخدم

لقد جربت مثال MNIST هذا .

أضفت الأسطر التالية في بداية البرنامج النصي:

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

و device = torch.device(gpu if use_cuda else "cpu") في الوظيفة الرئيسية.
يظهر لي الخطأ التالي: RuntimeError: cublas runtime error : resource allocation failed at /opt/conda/conda-bld/pytorch_1570710718161/work/aten/src/THC/THCGeneral.cpp:216

إنه خطأ مختلف عما كنت أحصل عليه في البرنامج النصي الخاص بي ، ولكن لا يزال المثال البسيط لا يعمل على gpu=1 ، لكنه يعمل على gpu=0 .

لقد تذكرت للتو أنني اتبعت هذا الدليل لنقل Xorg من التحميل على وحدة معالجة مركزية منفصلة ، ليتم تشغيلها على شريحة Intel المتكاملة. هل يمكن أن يكون هذا التغيير مسؤولاً عن هذا السلوك الغريب؟
سأقوم بالتراجع عن التغيير وتقديم تقرير بالنتيجة.

لقد أجريت التراجع ولم يتم إصلاح المشكلة. لقد قمت مرة أخرى بإزالة برامج تشغيل nvidia ، وقمت بتثبيتها و cuda مرة أخرى ، وما زلت أحصل على الخطأ. لا أعرف كيف أجد مصدر المشكلة.

@ dan-nadler ربما تسببت ذروة استخدام الذاكرة في حدوث مشكلة OOM.

jzazo لا يمكنني إعادة إنتاج هذه المشكلة عن طريق إضافة الكود المقدم إلى مثال MNIST على نظام 8 GPU (إعادة التشغيل باستخدام معرفات GPU مختلفة).

ما هو GPU الذي تستخدمه كـ GPU1؟ إذا كانت هذه هي شريحة إنتل المدمجة ، فلن يعمل هذا.
ستحتاج إلى وحدة معالجة الرسومات (GPU) التي يمكنها تنفيذ كود CUDA.

لدي بطاقة Intel المدمجة و 2x Ti 1080-GTX في نظام Ubuntu 18.04. عندما أحصل على بعض الوقت سأحاول تضييق نطاق المشكلة. ليس لدي أدنى فكرة عن سبب ذلك.

هل قمت بحل هذه المشكلة؟ لقد قابلت نفس المشكلة مؤخرًا. يمكنني تشغيل الكود بشكل صحيح في الجهاز ، لكن الخطأ يظهر في جهاز الكمبيوتر الخاص بي ، حتى الجهازين لهما نفس بطاقة 2080Ti مع نفس الغطاس ونفس بيئة الشقةxiaoxiangyeyuwangye

نفس المشكلة. ubuntu 16.04، 2080 ti إصدار برنامج التشغيل: 440.33.01 إصدار CUDA: 10.2

أواجه مشكلة يحتمل أن تكون ذات صلة أيضًا. على جهاز مزود بـ 8 وحدات معالجة رسومات RTX 2080 Ti ، يعطي GPU واحدًا محددًا (4) مشكلة الوصول غير القانوني للذاكرة CUDA عند محاولة النسخ من وحدة معالجة الرسومات إلى وحدة المعالجة المركزية:

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

يعمل الكود المتطابق جيدًا على وحدات معالجة الرسومات السبعة الأخرى ولكنه يعطي خطأ في وحدة معالجة الرسومات هذه بعد عدد عشوائي من التكرارات.

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

لم أفعل الكثير من اللعب ، لكن هذا يحدث بشكل متكرر إلى حد ما (عادةً في غضون 20 إلى 30 دقيقة من التشغيل) فقط على وحدة معالجة الرسومات هذه. هل هناك أي تطورات بخصوص هذه المشكلة قبل أن أبدأ بفحص الأجهزة؟

sicklifebhaeffele هل ترى هذا الخطأ باستخدام مقتطف الشفرة من المنشور الأول في الإعداد الخاص بك؟

نفس المشكلة هنا ، تحدث عندما أحاول الاتصال بـ. to (الجهاز). CUDA 9.2 ، Torch 0.4.0 ، torchvision 0.2.1.

قمت بتشغيل الكود من المنشور الأول لتكرارات 1e6 دون أي أخطاء في وحدة معالجة الرسومات "التي بها مشكلات". لا يزال يظهر الخطأ في الكود الخاص بي على وحدة معالجة الرسومات هذه فقط.

تضمين التغريدة
0.4.0 قديم جدًا الآن. هل يمكنك التحديث إلى أحدث إصدار مستقر ( 1.4.0 ) وإعادة محاولة البرنامج النصي؟ لا تتردد في إنشاء عدد جديد في حالة ظهور نفس الخطأ مع أي مكالمة to('cuda') وأرسلها لي هناك أو هل ترى هذا الخطأ مع مقتطف الشفرة المنشور الأول؟

bhaeffele هل يمكنك نشر مقتطف شفرة قابل للتنفيذ (الحد الأدنى) لإعادة إنتاج هذا الخطأ؟

input0 = torch.randn (32، 3، 1024) .cuda ()

جرب هذا

input0 = متغير (torch.randn (32، 3، 1024) .cuda ())

ولا تنسى

من torch.autograd استيراد متغير

hadypranoto Variables تم إهمالها في 0.4.0 ، لذا لن يكون هذا ضروريًا.
ومع ذلك ، ما زلت أوصي بالتحديث إلى أحدث إصدار ثابت وإعادة تشغيل البرنامج النصي.

مرحبا جميعا!
لقد واجهت خطأ غير قانوني غريب في الوصول إلى الذاكرة. يحدث بشكل عشوائي دون أي نمط منتظم.
الكود بسيط حقًا. إنها PointNet لتجزئة السحابة النقطية. لا أعتقد أن هناك أي خطأ في الكود.

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)

بعد عدد عشوائي من الخطوات ، يرتفع الخطأ. تقرير الخطأ هو

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

عندما أضفت "os.environ ['CUDA_LAUNCH_BLOCKING'] = '1'" في الجزء العلوي من هذا البرنامج النصي ، تم تغيير تقرير الخطأ إلى هذا

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

أعلم أن بعض عمليات الفهرسة الخاطئة وبعض طرق الاستخدام الخاطئة لوظيفة الخسارة قد تؤدي إلى خطأ غير قانوني في الوصول إلى الذاكرة. لكن في هذا النص ، لا يوجد مثل هذا النوع من العمليات.
أنا متأكد تمامًا من أن هذا الخطأ ليس بسبب نفاد الذاكرة نظرًا لاستخدام ذاكرة GPU 2G فقط ، ولدي ذاكرة GPU 12G بالكامل.

هذه هي معلومات بيئتي:

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

لقد علقت هنا لفترة طويلة.
في الواقع ، ليس هذا المشروع فقط يواجه هذا الخطأ ، فالعديد من المشاريع الأخرى تواجه خطأً مماثلاً في جهاز الكمبيوتر الخاص بي.
لا أعتقد أن هناك أي خطأ في الكود. يمكن أن يعمل بشكل صحيح لبعض الخطوات. ربما هذا الخطأ بسبب البيئة. لست متأكدا.
هل لدى أي شخص أي فكرة عن هذا الوضع؟ إذا كانت هناك حاجة إلى مزيد من المعلومات التفصيلية ، فيرجى إبلاغي بذلك.
شكرا على أي اقتراح.

أواجه هذه المشكلة ..
لكن وظيفتي هي torch.zeros أو torch.ones

input0 = torch.randn (32، 3، 1024) .cuda ()

جرب هذا

input0 = متغير (torch.randn (32، 3، 1024) .cuda ())

ولا تنسى

من torch.autograd استيراد متغير

بهذه الطريقة لا تساعدني على تأخير خطأ الرمز فقط ... j7

لقد واجهت نفس المشكلة ، لقد حدث ذلك بشكل عشوائي عند توزيع التدريب على 4 وحدات معالجة رسومات ، ودائمًا على GPU 0. (Ubuntu 16.04 و 1080ti x 3 و Titan Xp x 1 ، إصدار برنامج التشغيل: 430.50 ، إصدار CUDA: 10.1 ، pytorch: 1.4.0a0 + 7f73f1d

يحدث هذا أيضًا بالنسبة لي عندما أحاول تشغيل 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

الجدير بالذكر أن الجهاز 0 هو نفس الجهاز الذي أستخدمه لشاشتي. أتساءل عما إذا كان الأشخاص الآخرون يعانون أيضًا من مشاكل مع وحدة معالجة الرسومات المسؤولة عن قيادة شاشتهم.

أنا أقوم بتشغيله حاليًا باستخدام CUDA_VISIBLE_DEVICES=1 وسأقدم تقريرًا إذا استمر ظهور أي مشكلة.

التعديل المتأخر: لم يساعد. جرب استخدام GPU الرئيسي فقط.
التحديث مرة أخرى: على الرغم من الخطأ أعلاه ، فإنه يعمل بشكل جيد على الجهاز 0 (عهدين حتى كتابة هذا). وكما ذكرنا ، فإن الجهاز 0 هو نفس وحدة معالجة الرسومات المستخدمة لشاشتي.
تحديث آخر: بعد 7 عهود ، تحطمت مرة أخرى بنفس الخطأ كما هو مذكور أعلاه.

أوبونتو 18.04.2018
2 × GeForce GTX TITAN X
إصدار برنامج التشغيل: 440.64.1
إصدار Cuda: 10.1.2
إصدار الشعلة: 1.5.0 (ليلاً)

تضمين التغريدة
مرحبا ، لدي مشكلة مماثلة.
إذا استخدمت device = torch.device("cuda:1") ، فإنني أتلقى دائمًا خطأ RuntimeError: CUDA error: an illegal memory access was encountered .

ولكن عندما أقوم بتعيين وحدة معالجة مركزية محددة بمقدار torch.cuda.set_device(1) ، كل شيء على ما يرام.

هل حللت مشكلتك وواجهت نفس المشكلة هل يمكنك مساعدتي؟

لا ، لم أقضي المزيد من الوقت في هذا الأمر ، ولم أستطع إصلاحه.

لا ، لم أقضي المزيد من الوقت في هذا الأمر ، ولم أستطع إصلاحه.

هل سبق لك أن حاولت إزالة GPU وإعادة تثبيته؟

لا تنتهي أبدًا .. مشكلة ... مرسلة من هاتفي الذكي Samsung Galaxy.
-------- الرسالة الأصلية -------- من: Sebastian Grans [email protected] التاريخ: 3/28/20 1:30 صباحًا (GMT + 07: 00) إلى: pytorch / pytorch [email protected] نسخة إلى: hadypranoto [email protected] ، أذكر [email protected] الموضوع: رد: [pytorch / pytorch] خطأ وقت التشغيل: خطأ CUDA: تمت مصادفة وصول غير قانوني إلى الذاكرة (# 21819)
يحدث هذا أيضًا بالنسبة لي عندما أحاول تشغيل PRNet.
خطأ وقت التشغيل: تم اكتشاف خطأ وقت التشغيل في النسخة المتماثلة 0 على الجهاز 0.
...
...
H = torch.matmul (src_centered، src_corr_centered.transpose (2، 1) .contiguous ()). cpu ()
خطأ وقت التشغيل: خطأ CUDA: تمت مصادفة وصول غير قانوني للذاكرة

الجدير بالذكر أن الجهاز 0 هو نفس الجهاز الذي أستخدمه لشاشتي. أتساءل عما إذا كان الأشخاص الآخرون يعانون أيضًا من مشاكل مع وحدة معالجة الرسومات المسؤولة عن قيادة شاشتهم.
أنا أقوم بتشغيله حاليًا مع CUDA_VISIBLE_DEVICES = 1 وسأقدم تقريرًا إذا استمر ظهور أي مشكلة.
أوبونتو 18.04.2018
2 × GeForce GTX TITAN X
إصدار برنامج التشغيل: 440.64.1
إصدار Cuda: 10.1.2
إصدار الشعلة: 1.5.0 (ليلاً)

- لقد تلقيت هذا لأنه تم ذكرك. قم بالرد على هذا البريد الإلكتروني مباشرةً ، أو قم بعرضه على GitHub ، أو قم بإلغاء الاشتراك.
[
{
"context": " http://schema.org
"type": "EmailMessage"،
"إجراء محتمل": {
"type": "ViewAction"،
"الهدف": " https://github.com/pytorch/pytorch/issues/21819#issuecomment -605201414" ،
"url": " https://github.com/pytorch/pytorch/issues/21819#issuecomment -605201414" ،
"الاسم": "عرض المشكلة"
} ،
"الوصف": "عرض هذه المشكلة على GitHub"،
"الناشر": {
"type": "Organization"،
"الاسم": "جيثب" ،
"url": " https://github.com "
}
}
]

تحديث آخر:
بالجري باستخدام CUDA_LAUNCH_BLOCKING=1 تمكنت من الحصول على مزيد من المعلومات.

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]

كنت أقوم بتشغيل هذا في وضع التصحيح في VS Code لذا يمكنني النظر في تتبع المكدس وأيضًا إلقاء نظرة تفاعلية على المتغيرات ، ولكن لم يكن أي متغير cuda متاحًا في أي مكان في تتبع المكدس. في الواقع ، يبدو أن استخدام cuda على الإطلاق يعطي أخطاء.

لقد حاولت إنشاء موتر جديد في محطة التصحيح ، ولكن هذا أدى أيضًا إلى حدوث خطأ 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

ملاحظة: يحدث هذا بغض النظر عن وحدة معالجة الرسومات التي أقوم بتشغيلها عليها.

مذكرة إضافية:
يبدو أن الكود يعمل بشكل جيد مع torch.backends.cudnn.enabled = False وحوالي ضعف السرعة. 🤔

في العلاقات العامة التي تبدو غير مرتبطة (https://github.com/pytorch/pytorch/pull/36668) واجهت نفس الخطأ في PyTorch CI

SebastianGrans ما هو الأمر الذي تستخدمه لتدريب النموذج؟
كل ثلاثة cmds التدريب العائد:

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

أيضًا ، هل تقوم بتثبيت جميع التبعيات من environment.yml ؟
إذا كان الأمر كذلك ، فهل يمكنك التعليق على حزم torch و torchvision ، لأنها قديمة جدًا الآن؟

سيكون رائعًا إذا كان بإمكان أحد المستخدمين هنا الاطلاع على https://github.com/pytorch/pytorch/pull/36668 ، وإنشاءه ، وتشغيل pytest -sv test/test_autograd.py -x ، وتأكيد ما إذا كانوا يواجهون نفس الخطأ. إذا كان الأمر كذلك ، سيكون لدينا أخيرًا طريقة لإعادة إنتاج هذا الخطأ في CI بشكل موثوق.

Baranowski يمكن إنشاء عمليات الوصول إلى الذاكرة غير القانونية بعدة طرق. أشك في أن العلاقات العامة الخاصة بك مرتبطة بالسؤال الأصلي ، والذي يستخدم 1D CNN.

أرى ، شكرا للتوضيح.

ptrblck : ربما أواجه هذه المشكلة أيضًا. إليك إعادة شراء لرمز "العمل" الحالي الخاص بي والذي لا يعطي هذا الخطأ: الريبو .

فقط للتأكد من أن كل شيء لا يزال يعمل ، قمت باستنساخ جديد وقمت بإعداد البيئة الافتراضية باستخدام الشعلة الافتراضية الخاصة بـ Pip و torchvision. من المثير للدهشة أن هذا يعمل عند التشغيل على كل من وحدات معالجة الرسومات. (على الأقل حتى تعطل بسبب مشكلات مع برنامج svd solver topk ، وهي مشكلة تمت مناقشتها في متعقب مشكلة repos الأصلي: هنا )

ثم قمت بتثبيت torch==1.5.0 ، torchvision==0.6.0.dev20200327+cu101 . باستخدام الأمر التالي ، أحصل على RuntimeError: CUDA error ... عند التكرار 372/820.

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

للإضافة إلى الكومة ، لدي أيضًا هذا الخطأ بعد 28 حقبة من صور التدريب:

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

أوبونتو 18.04.2018
1 × GeForce RTX 2080 مبردة بالماء
إصدار برنامج التشغيل: 440.64.1
إصدار Cuda: 10.2
إصدار الشعلة: 1.4.0

تضمين التغريدة
"إليك إعادة شراء من الكود" العامل "الحالي الخاص بي والذي لا يعطي هذا الخطأ: repo."
هل يمكنك نشر مقتطف الشفرة ، والذي يعيد إنتاج هذا الخطأ؟

يتم تشغيل الكود الذي قدمته دون أي أخطاء باستخدام:

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

@ mgolub2
ما هو الكود الذي تقوم بتشغيله؟

ptrblck مثير للاهتمام ، لأن ذلك يتعطل في جهازي. سانظر بداخلها...

SebastianGrans سأحاول إعادة إنتاجه على أنظمة مختلفة وإصدارات PyTorch.

أنا أيضًا أواجه مشكلة مماثلة. كان الأمر جيدًا قبل التحديث إلى CUDA10.2 و 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 × GeForce RTX 2080ti
إصدار برنامج التشغيل: 440.64.1
إصدار Cuda: 10.2
إصدار الشعلة: 1.5.0

لدي نفس المشكلة عند التكرار العشوائي باستخدام الشعلة 1.5.0 و CUDA 10.1.
THCudaCheck FAIL file = / pytorch / aten / src / THC / THCCachingHostAllocator.cpp سطر = خطأ 278 = 700: تمت مصادفة وصول غير قانوني للذاكرة
صحيح = pred.eq (أقنعة) .sum (). item ()
خطأ وقت التشغيل: خطأ CUDA: تمت مصادفة وصول غير قانوني للذاكرة

أواجه هذا السؤال أيضًا ، ووجدت أنه عندما تكون مجموعة البيانات الخاصة بي صغيرة ، فلن يظهر هذا السؤال. أعتقد أن هذا خطأ في pytorch

أود أن أضيف أنني أواجه نفس المشكلة في PyTorch 1.3 مع CUDA 10.0. أنا أستخدم 8 وحدات معالجة رسومات وتحدث المشكلة فقط في GPU 4.

نفس المشكلة هنا ولكن عندما أقوم بتغيير حجم الدفعة من 16 إلى 12 اختفت المشكلة ،
بيتورش 1.4 ، v100

HanxunHuangLemonBear @ yczhang1017 @ XinMing0411greeneggsandyaml @ curiosity2
إذا كنت لا تعمل في الوصول غير القانوني للذاكرة باستخدام الرمز المنشور من التعليق 1 ، فيرجى إنشاء مشكلة جديدة بمعلومات حول البرنامج النصي والإعداد (باستخدام النموذج المتوفر).

هل راجعت استخدام ذاكرة GPU؟
في حالتي ، يعني خطأ الذاكرة غير القانوني حدوث خطأ في ذاكرة وحدة معالجة الرسومات.

واجهت نفس المشكلة عند تشغيل برنامج نصي لضبط gpt2. من المحتمل أن يكون سببه بعض الأخطاء في CUDA أو pytorch.

خطأ CUDA: تمت مصادفة وصول غير قانوني للذاكرة (insert_events at /pytorch/c10/cuda/CUDACachingAllocator.cpp:764)

ترقية الشعلة إلى 1.5.0 و cuda إلى 10.2 يحل مشكلتي.

ptrblck آسف على الاستجابة المتأخرة ، لقد كنت رمز تدريب imagenet من هنا https://github.com/pytorch/examples/tree/master/imagenet.

لم أواجه الخطأ منذ تعديل حدود الطاقة على وحدة معالجة الرسومات الخاصة بي - لذلك لم أعد متأكدًا من أن أعطالي مرتبطة بالمشكلة الأصلية هنا. لقد لاحظت أنه عند تشغيل أعباء عمل الحوسبة ، فإن RTX 2080 يخنق بشدة بمجرد أن تكون درجة الحرارة> 50 درجة مئوية ومستوى الطاقة ~> 140 واط. من خلال الحد من وحدة معالجة الرسومات (gpu) إلى 130 واط ، ستبقى في الواقع عند 1500 ميجاهرتز بدلاً من الانخفاض إلى 800 ميجاهرتز أو حتى 300 ميجاهرتز ، حتى لو كانت درجة الحرارة> 60 درجة مئوية. لقد أكملت تشغيلين بهذه الطريقة بدون مشكلة.

للمخاطرة بتخمين محتمل ، قد يكون أن Nvidia تفعل شيئًا حتى مع الجهد أيضًا عندما تتراجع وحدة معالجة الرسومات ، مما قد يؤدي إلى حدوث بعض الحسابات المنحرفة؟

أنا أيضًا على Torch 1.5.0 و CUDA 10.2 وما زلت أواجه هذه المشكلة. عندما أتجاوز 4 جيجا بايت من استخدام الذاكرة على وحدة معالجة الرسومات ، فهذا يبدو أنه يحدث. أنا أستخدم GTX 1080 وأقوم بتشغيل شبكة عصبية تلافيفية ثنائية الأبعاد إذا كان ذلك مهمًا.

خطأ CUDA: تمت مصادفة وصول غير قانوني للذاكرة

واجهت نفس المشكلة ووجدت أنني قمت بتعريف nn.layer في ملف الاستدلال ولم أقم بإضافته إلى وحدة معالجة الرسومات.
nn.layer = nn.layer.to (args.device)
لا أعرف ما إذا كانت هذه هي المشكلة التي تواجهها ولكنني اعتقدت أن هذا قد يساعدك.

لدي نفس المشكلة في pytorch1.0 و cuda 9.2 عند تدريب كود التجزئة الخاص بي. أجد أن إعداد torch.backends.cudnn.deterministic = True يمكن أن يحل الخطأ ، لكني لا أعرف الآلية الكامنة وراء هذا الخطأ.

@ youth123 أي إعداد آخر حول torch.backends.cudnn.deterministic ، الإعجاب torch.backends.cudnn.enabled ، os.environ ["CUDA_VISIBLE_DEVICES"] أو .to (config.devices [0])؟
لدي نفس المشكلة. انها تزعجني لفترة طويلة. ساعدني من فضلك. شكرا جزيلا.

tjusxh جربت إعدادات أخرى وكلها لا تعمل باستثناء torch.backends.cudnn.deterministic . قد يكون تحديث نسخة pytorch هو الحل السريع.

حصلت على هذا الخطأ اليوم 3 يونيو 2020 باستخدام pytorch 1.5. GPU هي T4 على دبيان. كان لدي 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

"تمت مصادفة وصول غير قانوني إلى الذاكرة" هو خطأ عام يمكن أن يكون ناتجًا عن العديد من الأسباب المختلفة. ما لم يكن تقريرك مصحوبًا بحد أدنى من المثال القابل للتشغيل والقابل للتكرار الذي يؤدي إلى حدوث هذا الخطأ ، فلن يكون هذا الإجراء قابلاً للتنفيذ.

ngimel نعم أفهم. لسوء الحظ ، هذا نادر للغاية ، لذلك لا يمكنني توفير رمز لإعادة إنتاجه ، حيث لا يمكنني حتى إعادة إنتاجه بنفسي ، لكنني أعتقد أنني سأضيف إلى الإحصائيات هنا.

التفاصيل الأخرى الوحيدة التي لدي هي أنني كنت أستخدم Nvidia Apex للتدريب.

tjusxh جربت إعدادات أخرى وكلها لا تعمل باستثناء torch.backends.cudnn.deterministic . قد يكون تحديث نسخة pytorch هو الحل السريع.

شكرا جزيلا. أنا حل المشكلة عن طريق التغيير إلى وحدة المعالجة المركزية. بياناتي خارج الحدود.

ngimel هل لديك اقتراح حول كيفية تحقيق ذلك؟ هذا الخطأ يبدو بعيد المنال.

قد يعمل الرمز الذي يتعطل على وحدة معالجة رسومات أو جهاز كمبيوتر بشكل جيد على جهاز آخر. يؤدي تغيير حجم الدُفعة أحيانًا إلى منع حدوث عطل في دفعة معينة ، لتظهر لاحقًا في الحقبة. 😕

tjusxh مجرد التغيير إلى وحدة المعالجة المركزية يمكن أن يحل مشكلة أن البيانات خارج الحدود؟

Traceback (آخر مكالمة أخيرة):
ملف "train.py" ، السطر 104 ، بتنسيق
تدريب (نموذج ، قطار ، مُحسِّن ، معيار)
ملف "train.py" ، السطر 28 ، في القطار
الخسارة. backward ()
ملف "/usr/local/lib/python3.6/dist-packages/torch/tensor.py" ، السطر 198 ، بالخلف
torch.autograd.backward (الذات ، التدرج ، retain_graph ، create_graph)
ملف "/usr/local/lib/python3.6/dist-packages/torch/autograd/__init__.py" ، السطر 100 ، بالخلف
allow_unreachable = صحيح) # علامة allow_unreachable
خطأ وقت التشغيل: خطأ CUDA: تمت مصادفة وصول غير قانوني للذاكرة (embedding_dense_backward_cuda في /pytorch/aten/src/ATen/native/cuda/Embedding.cu:267)
لقد صادفت أيضًا هذه المشكلة وآمل في الحصول على مساعدة.

ربما يكون دليلًا: لدي كود torch 1.5 fp32 الذي يثير هذا الخطأ لنموذج كبير وليس لطراز صغير:

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

حتى أنني أتلقى هذا الخطأ. مزيد من التفاصيل هنا

أحقق نجاحًا أفضل مع pytorch 1.6 (كل ليلة) ، أوصي بتجربة ذلك.

أحقق نجاحًا أفضل مع pytorch 1.6 (كل ليلة) ، أوصي بتجربة ذلك.

أين هو pytorch 1.6؟ يمكنني العثور على 1.5.1 فقط

على أمل مساعدة الآخرين الذين انتهى بهم الأمر هنا ، الحل المقترح هنا يعمل معي:

تضمين التغريدة
مرحبا ، لدي مشكلة مماثلة.
إذا استخدمت device = torch.device("cuda:1") ، فإنني أتلقى دائمًا خطأ RuntimeError: CUDA error: an illegal memory access was encountered .

ولكن عندما أقوم بتعيين وحدة معالجة مركزية محددة بمقدار torch.cuda.set_device(1) ، كل شيء على ما يرام.

لقد أضفت للتو torch.cuda.set_device(<device_num>) قبل باقي الكود الخاص بي ، وقد نجح الأمر. كان الخطأ بالنسبة لي هو أنني كنت أقوم بتحميل نموذج من نقطة تفتيش باستخدام pytorch lightning وتم وضع شيء ما على وحدة معالجة الرسومات الافتراضية (التي كانت gpu 0).

أحقق نجاحًا أفضل مع pytorch 1.6 (كل ليلة) ، أوصي بتجربة ذلك.

أين هو pytorch 1.6؟ يمكنني العثور على 1.5.1 فقط

يجب أن يكون LetsGoFir :

كوندا تثبيت pytorch torchvision cudatoolkit = 10.2 -c pytorch-nightly

يبدو أن هناك عدة أسباب محتملة. للإشارة فقط ، واجهت نفس المشكلة ولكن عندما قمت بالتبديل من خادم GPU (مجموعة) إلى آخر ، اختفى الخطأ. لذلك ، قد يكون الجهاز أحد الأسباب المحتملة.

تحقق من torch.backends.cudnn.benchmark = Ture
استخدم torch.backends.cudnn.benchmark = خطأ أو # torch.backends.cudnn.benchmark = صحيح

brucemuller لا يزال من الممكن العثور على هذه المشكلة على Pytorch 1.6:

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

وهنا معلومات 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)

حصلت على نفس المشكلة على pytorch 1.6 لـ RTX 2070 على Ubuntu 18.04. كودا 10.2

أي حلول؟
يرجى الرجوع إلى مشكلتي على darknet: https://github.com/AlexeyAB/darknet/issues/6531

قد يكون https://github.com/PyTorchLightning/pytorch-lightning/issues/2085#issuecomment -678938629 مفيدًا لبعض الحالات.

حدث الخطأ لي عند loss.backward() عندما قمت بتشغيل النموذج الخاص بي على وحدات معالجة رسومات غير صفرية ذات قمة. سيكون هناك تناقض في البيانات بسبب القمة في هذه الحالة. يؤدي تعيين CUDA_VISIBLE_DEVICES=2,3 والبدء دائمًا من 0 في التعليمات البرمجية إلى حيل القمة لمحاذاة بياناتها الداخلية والنموذج وتجنب المشكلة بالنسبة لي.

في مترجم Python ، يمكنني إعادة إنتاج أحد السيناريوهات:

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)

الآن كل شيء على ما يرام.

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

الآن كل شيء على ما يرام.

>>> model(x)

لأن x موجود على الجهاز: وحدة المعالجة المركزية ، لذلك سيبلغ عن خطأ ما

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

ولكن بعد ذلك ، إذا كنت أرغب في تحويل جهاز الموتر أو الوحدة النمطية إلى وحدة معالجة مركزية / وحدة معالجة مركزية ، فسيؤدي ذلك إلى ظهور أخطاء:

>>> 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

سيكون كل شيء على ما يرام إذا قمت بإعادة تشغيل مترجم بايثون.

بطريقة ما خفضت تصنيف pytorch إلى 1.4 وذهب الخطأ.

انا ايضا املك نفس المشكلة. ولكن إذا قمت بتشغيل الكود بالكامل في خلية واحدة ، فلا يوجد خطأ. يظهر الخطأ فقط إذا قمت بتقسيم الرموز في خلايا مختلفة من دفتر jypyter.

لقد واجهت هذه المشكلة أيضًا ، لقد اختبرت الكود الخاص بي على كل من tensorflow و pytorch ، وظهروا جميعًا نفس الخطأ. يمكن أن يعمل بشكل صحيح لبعض الخطوات ، لا أعرف كيفية حل هذه المشكلة. شخص ما يساعدني!

لقد كنا نختبر هذا بشكل صارم على Lightning (رئيسي) ولا يبدو أننا نواجه هذه المشكلات ... ربما نحاول ذلك؟

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

الإصدار موجود في أحدث إصدار (PyTorch 1.6.0 ، CUDA 10.1) ، وهو يعمل بشكل جيد تمامًا مع PyTorch 1.4.0 CUDA 10.1
أي شخص من Google Colab ، استخدم هذا

!pip install torch==1.4.0 torchvision==0.5.0

لدي نفس المشكلة.
نشأت بعد أن أضفت لوح تينسورش pytorch إلى خط الأنابيب الخاص بي.
يبدو أن سبب حدوث ذلك هو أنني نسيت دفع بياناتي إلى وحدة معالجة الرسومات (gpu) قبل كتابة الرسم البياني بالبيانات إلى tensorboard.

هنا مثال صغير "مشابه". إنها في الواقع أخطاء لسبب ما لم يفعله تدريبي. ولكن بعد تشغيله ، يتعذر الوصول إلى model.wieght .

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()

حاول الآن الوصول إلى model.weight ذاكرة cuda تالفة.

أثناء التدريب الخاص بي لم يكن هناك خطأ أثناء وقت التشغيل. فقط عندما حاولت الكلمات اللاحقة الوصول إلى وزن النموذج. ينتج عن هذا الرمز إلى حد ما نفس الخطأ.

xparx يرجى تقديم مشكلة منفصلة

لقد حصلت أيضًا على هذا الخطأ مع Pytorch 1.6.0 و Cuda 10.2 و 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

لقد حصلت أيضًا على هذا الخطأ مع Pytorch 1.6.0 و Cuda 10.2 و 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

"تمت مصادفة وصول غير قانوني إلى الذاكرة" هو خطأ عام يمكن أن يكون ناتجًا عن العديد من الأسباب المختلفة. ما لم يكن تقريرك مصحوبًا بحد أدنى من المثال القابل للتشغيل والقابل للتكرار الذي يؤدي إلى حدوث هذا الخطأ ، فلن يكون هذا الإجراء قابلاً للتنفيذ.

لقد حصلت أيضًا على هذا الخطأ مع Pytorch 1.6.0 و Cuda 10.2 و 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 آسف هذا الخطأ كان علي ، تمكنت من إصلاحه.

أنا أغلق هذه القضية. جميع المستخدمين الذين يرون "وصول غير قانوني إلى الذاكرة" ، يرجى فتح مشكلة جديدة في نص الاستنساخ. "تمت مصادفة وصول غير قانوني إلى الذاكرة" هو خطأ عام يمكن أن يكون ناتجًا عن العديد من الأسباب المختلفة. ما لم يكن تقريرك مصحوبًا بحد أدنى من الأمثلة القابلة للتشغيل والتكرار التي تؤدي إلى حدوث هذا الخطأ ، فلا يمكن اتخاذ إجراء.

طريقة @ xiaofeng-fan تعمل بالنسبة لي.
لقد خفضت تصنيف pytorch إلى 1.4 وذهب الخطأ.

هذه القضية لا تزال موجودة عندي. حتى أنني أستخدم pytorch 1.4 و CUDA 10.1.
لقد استخدمت 2080ti.

هذه القضية لا تزال موجودة عندي. حتى أنني أستخدم pytorch 1.4 و CUDA 10.1.
لقد استخدمت 2080ti.

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

يوم السبت 3 أكتوبر 2020 الساعة 7:15 مساءً Chung Rakjoon [email protected]
كتب:

هذه القضية لا تزال موجودة عندي. حتى أنني أستخدم pytorch 1.4 و CUDA 10.1.
لقد استخدمت 2080ti.

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/pytorch/pytorch/issues/21819#issuecomment-703106176 ،
أو إلغاء الاشتراك
https://github.com/notifications/unsubscribe-auth/AJIJRG7SP3ZREYG5ANVK7XLSI4TIPANCNFSM4HYOP62Q
.

لقد حصلت أيضًا على هذا الخطأ مع Pytorch 1.6.0 و Cuda 10.2 و 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 آسف هذا الخطأ كان علي ، تمكنت من إصلاحه.

هل يمكنك شرح ما كان الإصلاح الخاص بك؟

أستطيع أن أقول إن الإصلاح من جهتي كان أن لديّ nn.EmbeddingBag الذي كان يتلقى إدخالًا خارج النطاق (كبير جدًا ، متوقفًا بواحد).

ربما مفيد لشخص ما. كانت لدي هذه المشكلة وكانت نتيجة ضرب موتر على وحدة معالجة الرسومات مع موتر على وحدة المعالجة المركزية ، ثم محاولة الوصول إلى الذاكرة. على وجه التحديد ، إذا قمت بإنشاء موتر جديد في مكانه (مثل torch.eye (3) ، فتأكد من وجود موتر على وحدة معالجة الرسومات). ربما يجب أن يتسبب torch.matmul () في حدوث خطأ إذا لم تكن موترات الإدخال على نفس الجهاز.

كانت لدي تجربة مماثلة أيضًا ، كان لدي nn.LayerNorm على وحدة المعالجة المركزية التي تتلقى كإدخال موتر على وحدة المعالجة المركزية ، بعد أن حل كلاهما على نفس الجهاز المشكلة.

@ totomobile43 شكرًا جزيلاً لك ، لقد كنت أواجه خطأ الوصول غير القانوني إلى الذاكرة هذا أيضًا ، وأعتقد أن لدي نفس المشكلة - ضرب الموترات ثم الوصول إلى النتائج لاحقًا سيؤدي إلى الخطأ.

ومع ذلك ، عندما قمت بنقل كلا الموترات الخاصة بي بشكل صريح إلى وحدة المعالجة المركزية قبل القيام بضرب المصفوفة ، اختفى الخطأ.

الإصدار موجود في أحدث إصدار (PyTorch 1.6.0 ، CUDA 10.1) ، وهو يعمل بشكل جيد تمامًا مع PyTorch 1.4.0 CUDA 10.1
أي شخص من Google Colab ، استخدم هذا

!pip install torch==1.4.0 torchvision==0.5.0

هذا أصلح المشكلة بالنسبة لي prameth شكرا!

لقد قمت بترقية pytorch إلى 1.7 وذهب الخطأ.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات