مرحبا جميعا!
لقد واجهت خطأ غير قانوني غريب في الوصول إلى الذاكرة. يحدث بشكل عشوائي دون أي نمط منتظم.
الكود بسيط حقًا. إنها 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
لقد علقت هنا لفترة طويلة.
في الواقع ، ليس هذا المشروع فقط يواجه هذا الخطأ ، فالعديد من المشاريع الأخرى تواجه خطأً مماثلاً في جهاز الكمبيوتر الخاص بي.
لا أعتقد أن هناك أي خطأ في الكود. يمكن أن يعمل بشكل صحيح لبعض الخطوات. ربما هذا الخطأ بسبب البيئة. لست متأكدا.
هل لدى أي شخص أي فكرة عن هذا الوضع؟ إذا كانت هناك حاجة إلى مزيد من المعلومات التفصيلية ، فيرجى إبلاغي بذلك.
شكرا على أي اقتراح.
يمكن أن يكون نفس خطأ 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
لقد رأينا هذه المشكلة عدة مرات:
https://github.com/PyTorchLightning/pytorch-lightning/issues/1611
https://github.com/PyTorchLightning/pytorch-lightning/issues/2085
حتى أنني أتلقى هذا الخطأ. مزيد من التفاصيل هنا
أحقق نجاحًا أفضل مع 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 وذهب الخطأ.
التعليق الأكثر فائدة
تضمين التغريدة
مرحبا ، لدي مشكلة مماثلة.
إذا استخدمت
device = torch.device("cuda:1")
، فإنني أتلقى دائمًا خطأRuntimeError: CUDA error: an illegal memory access was encountered
.ولكن عندما أقوم بتعيين وحدة معالجة مركزية محددة بمقدار
torch.cuda.set_device(1)
، كل شيء على ما يرام.