Detectron: pelatihan multi-GPU membuang akses memori ilegal

Dibuat pada 25 Jan 2018  ·  64Komentar  ·  Sumber: facebookresearch/Detectron

Saat saya menggunakan satu GPU untuk berlatih, tidak ada masalah. Tetapi ketika saya menggunakan dua atau empat GPU, masalahnya keluar. Keluaran log:

terminate dipanggil setelah melempar sebuah instance dari 'caffe2 :: EnforceNotMet'
what (): [menegakkan kegagalan di context_gpu.h: 170]. Terjadi kesalahan CUDA: akses memori ilegal ditemui Kesalahan dari operator:
masukan: "gpu_0 / rpn_cls_logits_fpn2_w_grad" masukan: "gpu_1 / rpn_cls_logits_fpn2_w_grad" keluaran: "gpu_0 / rpn_cls_logits_fpn2_w_grad" nama: "" ketik: "Tambahkan" device_option {perangkat_id: 0}
* Dibatalkan pada 1516866180 (waktu unix) coba "date -d @ 1516866180" jika Anda menggunakan tanggal GNU *
mengakhiri disebut secara rekursif
mengakhiri disebut secara rekursif
mengakhiri disebut secara rekursif
PC: @ 0x7ff67559f428 gsignal
mengakhiri disebut secara rekursif
mengakhiri disebut secara rekursif
E0125 07: 43: 00.745853 55683 pybind_state.h: 422] Pengecualian ditemui saat menjalankan fungsi PythonOp: RuntimeError: [menegakkan kegagalan di context_gpu.h: 307] error == cudaSuccess. 77 vs 0. Kesalahan di: /mnt/hzhida/project/caffe2/caffe2/core/context_gpu.h:307: akses memori ilegal ditemukan

Di:
/mnt/hzhida/facebook/detectron/lib/ops/generate_proposals.py(101): teruskan
* SIGABRT (@ 0x3e80000d84f) diterima oleh PID 55375 (TID 0x7ff453fff700) dari PID 55375;
mengakhiri disebut secara rekursif
@ 0x76759453 (tidak diketahui)
@ 0x7628 gign
@ 0x775752 batalkan
@ 0x76637e84_gn _gnu_cxx :: _ verbose_terminate_handler ()
@ 0x73766 (tidak diketahui)
@ 0x7ff6637c701 std :: terminate ()
@ 0x7333 (tidak diketahui)
@ 0x76936ba startread
@ 0x720 klon
@ 0x0 (tidak diketahui)
Dibatalkan (inti dibuang)

upstream bug

Komentar yang paling membantu

Terima kasih teman-teman. Ini memverifikasi asumsi saya bahwa akses memori ilegal berasal dari Add op tidak menangani komunikasi lintas perangkat dengan benar ketika akses peer tidak diaktifkan. Akan mengeluarkan perbaikan.

Semua 64 komentar

Saya mendapat kesalahan yang sama. Perbedaannya adalah ketika saya menggunakan satu GPU atau dua GPU, tidak ada masalah. Tetapi menggunakan 4 GPU untuk melatih Mask RCNN (mask_rcnn_R-101-FPN) atau RetinaNet (retinanet_R-101-FPN), masalah yang sama terjadi.

Saya memiliki masalah yang sama ketika saya melatih jaringan tutorial_Res50 dengan dua atau lebih GPU.

Mengalami masalah yang sama saat menentukan id GPU (yaitu berbeda dari id terendah, misalnya '1,3,5,7' untuk 4 GPU). Jika id GPU terendah ditentukan, pelatihan akan berjalan dengan baik.

@jwnsu : kami sedang mengerjakan perbaikan sehingga ketika CUDA_VISIBLE_DEVICES tidak menggunakan id terendah, pelatihan masih berfungsi. Terima kasih telah melaporkan dan mendiagnosis.

Hai @jwnsu , @coolbrain , @tshizys , @lwher : kami tidak dapat mereproduksi masalah ini di pihak kami.

Dapatkah Anda masing-masing memberikan beberapa informasi lagi yang mungkin mengungkapkan pola umum?

Khususnya:

  • Sistem operasi: ?
  • Versi penyusun:?
  • Versi CUDA:?
  • versi cuDNN:?
  • Versi driver NVIDIA:?
  • Model GPU (untuk semua perangkat jika tidak semuanya sama):?
  • Ada hal lain yang tampaknya relevan:?

Inilah yang kami lihat saat berlatih, misalnya, dengan ID GPU 1,3,5,7:

CUDA_VISIBLE_DEVICES=1,3,5,7 python2 tools/train_net.py --cfg configs/12_2017_baselines/e2e_faster_rcnn_R-50-FPN_1x.yaml OUTPUT_DIR /tmp/dbg-cvd-train TRAIN.DATASETS "('coco_2014_minival',)" NUM_GPUS 4

Every 0.1s: nvidia-smi                                                                                                                                                                                                                                                                                                                             Fri Jan 26 09:09:26 2018

Fri Jan 26 09:09:26 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.39                 Driver Version: 375.39                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla M40           On   | 0000:07:00.0     Off |                  Off |
|  0%   42C    P8    17W / 250W |      0MiB / 12209MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla M40           On   | 0000:08:00.0     Off |                  Off |
|  0%   51C    P0   144W / 250W |   7214MiB / 12209MiB |     46%      Default |
+-------------------------------+----------------------+----------------------+
|   2  Tesla M40           On   | 0000:09:00.0     Off |                  Off |
|  0%   38C    P8    19W / 250W |      0MiB / 12209MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   3  Tesla M40           On   | 0000:0A:00.0     Off |                  Off |
|  0%   52C    P0   220W / 250W |   7502MiB / 12209MiB |     38%      Default |
+-------------------------------+----------------------+----------------------+
|   4  Tesla M40           On   | 0000:0B:00.0     Off |                  Off |
|  0%   40C    P8    17W / 250W |      0MiB / 12209MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   5  Tesla M40           On   | 0000:0C:00.0     Off |                  Off |
|  0%   60C    P0    85W / 250W |   7081MiB / 12209MiB |     48%      Default |
+-------------------------------+----------------------+----------------------+
|   6  Tesla M40           On   | 0000:0D:00.0     Off |                  Off |
|  0%   40C    P8    20W / 250W |      0MiB / 12209MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   7  Tesla M40           On   | 0000:0E:00.0     Off |                  Off |
|  0%   56C    P0    81W / 250W |   7494MiB / 12209MiB |     40%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    1   2871837    C   ..............gcc-5-glibc-2.23/bin/python2.7  7210MiB |
|    3   2871837    C   ..............gcc-5-glibc-2.23/bin/python2.7  7498MiB |
|    5   2871837    C   ..............gcc-5-glibc-2.23/bin/python2.7  7077MiB |
|    7   2871837    C   ..............gcc-5-glibc-2.23/bin/python2.7  7490MiB |
+-----------------------------------------------------------------------------+

Sistem operasi: Ubuntu 16.04
Versi kompiler: gcc (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.4) 5.4.0
Versi CUDA: 8.0
versi cuDNN: v5.1
Versi driver NVIDIA: 384.111

nvidia-smi:
+ ------------------------------------------------- ---------------------------- +
| Versi Driver NVIDIA-SMI 384.111: 384.111 |
| ------------------------------- + ----------------- ----- + ---------------------- +
| GPU Name Persistence-M | Tampilan Bus-Id | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr: Penggunaan / Tutup | Penggunaan Memori | Komputasi Util GPU M. |
| =============================== + |
| 0 Tesla M60 Mati | 00001543: 00: 00.0 Mati | Off |
| N / A 42C P0 41W / 150W | 0MiB / 8123MiB | 0% Default |
+ ------------------------------- + ----------------- ----- + ---------------------- +
| 1 Tesla M60 Mati | 00003134: 00: 00.0 Mati | Off |
| T / A 42C P0 39W / 150W | 0MiB / 8123MiB | 0% Default |
+ ------------------------------- + ----------------- ----- + ---------------------- +
| 2 Tesla M60 Mati | 00004975: 00: 00.0 Mati | Off |
| N / A 38C P0 41W / 150W | 0MiB / 8123MiB | 0% Default |
+ ------------------------------- + ----------------- ----- + ---------------------- +
| 3 Tesla M60 Mati | 0000F3E6: 00: 00.0 Mati | Off |
| T / A 38C P0 40W / 150W | 0MiB / 8123MiB | 0% Default |
+ ------------------------------- + ----------------- ----- + ---------------------- +

Sistem operasi: CentOS Linux rilis 7.1.1503
Versi penyusun: gcc versi 4.8.2
Versi CUDA: CUDA 8.0
versi cuDNN: cuDNN 6.0.21
Versi driver NVIDIA: 375.26
Model GPU: 4x GeForce GTX TITAN X (12G)

nvidia-smi:
image

Saat menggunakan 4 GPU (0,1,2,3) untuk melatih Mask RCNN (e2e_mask_rcnn_R-101-FPN), RetinaNet (retinanet_R-101-FPN) atau RCNN Lebih Cepat (e2e_faster_rcnn_R-50-FPN), kesalahan “konteks_gpu.h : 307: akses memori ilegal ditemukan ”atau“ context_gpu.h: 170. Terjadi kesalahan CUDA: akses memori ilegal ditemukan Kesalahan dari operator: input: "gpu_0 / retnet_cls_pred_fpn3_b_grad" input: "gpu_2 / retnet_cls_pred_fpn3_b_grad" output: "gpu_0 / retnet_cls_pred_fpn3_b_grad" name: "device type:" Add device " : 0} ”terjadi.

Tetapi menggunakan satu GPU atau dua GPUS (0,1 atau 2,3), itu dapat dilatih secara normal.
Terima kasih.

@jwnsu : melihat kesalahan Anda lebih dekat ("perangkat tidak valid ordinal"), sepertinya Anda mencoba berlatih dengan konfigurasi yang diatur untuk 8 GPU tetapi membatasi proses agar hanya memiliki akses ke 4 (melalui CUDA_VISIBLE_DEVICES ). Kesalahan "urutan perangkat tidak valid" adalah karena mencoba membuat operasi pada perangkat yang prosesnya tidak memiliki akses.

@coolbrain , @tshizys : terima kasih untuk detailnya. Apa yang terjadi jika Anda menggunakan dua GPU dengan menggunakan id {0,2}, {0,3}, {1,2}, atau {1,3}?

@rbgirshick Anda benar, memilih file konfigurasi yang salah (dengan 8 pengaturan GPU) untuk mencoba kemarin. Baru saja mencoba lagi dengan file konfigurasi yang benar (4 GPU, kesalahan dari id gpu "1,2,4,5", "0,1,2,3" berfungsi dengan baik), kesalahan tersebut sekarang mirip dengan yang dilihat orang lain:

I0127 09:06:48.220716 10872 context_gpu.cu:325] Total: 20748 MB
terminate called after throwing an instance of 'caffe2::EnforceNotMet'
terminate called after throwing an instance of 'caffe2::EnforceNotMet'
  what():  [enforce fail at context_gpu.h:170] . Encountered CUDA error: an illegal memory access was encountered Error from operator: 
input: "gpu_0/retnet_bbox_pred_fpn3_b_grad" input: "gpu_2/retnet_bbox_pred_fpn3_b_grad" output: "gpu_0/retnet_bbox_pred_fpn3_b_grad" name: "" type: "Add" device_option { device_type: 1 cuda_gpu_id: 0 }
  what():  [enforce fail at context_gpu.h:170] . Encountered CUDA error: an illegal memory access was encountered Error from operator: 
input: "gpu_2/retnet_cls_conv_n3_fpn3" input: "gpu_2/__m13_shared" output: "gpu_2/__m13_shared" name: "" type: "ReluGradient" arg { name: "cudnn_exhaustive_search" i: 0 } arg { name: "order" s: "NCHW" } device_option { device_type: 1 cuda_gpu_id: 2 } engine: "CUDNN" is_gradient_op: true
*** Aborted at 1517072808 (unix time) try "date -d @1517072808" if you are using GNU date ***
terminate called recursively
terminate called recursively
terminate called recursively
terminate called recursively
terminate called recursively
terminate called recursively
terminate called recursively
terminate called recursively
terminate called recursively
terminate called recursively
terminate called recursively
terminate called recursively
terminate called recursively
terminate called recursively
PC: @     0x7fd71f6bd428 gsignal
*** SIGABRT (@0x3e900002a18) received by PID 10776 (TID 0x7fd548e3d700) from PID 10776; stack trace: ***
    @     0x7fd71fa63390 (unknown)
    @     0x7fd71f6bd428 gsignal
    @     0x7fd71f6bf02a abort
    @     0x7fd71b51c84d __gnu_cxx::__verbose_terminate_handler()
    @     0x7fd71b51a6b6 (unknown)
    @     0x7fd71b51a701 std::terminate()
    @     0x7fd71b545d38 (unknown)
    @     0x7fd71fa596ba start_thread
    @     0x7fd71f78f41d clone
    @                0x0 (unknown)
./itrain4.sh: line 9: 10776 Aborted                 (core dumped) python2 tools/train_net.py --multi-gpu-testing --cfg configs/iret-rn50-fpn-voc.yaml OUTPUT_DIR ./output

@coolbrain , @tshizys : one shot in the dark adalah mengalihkan implementasi all-reduce ke nccl dengan meneruskan USE_NCCL True ke train_net.py , seperti di:

python2 tools/train_net.py --multi-gpu-testing \
  --cfg configs/getting_started/tutorial_2gpu_e2e_faster_rcnn_R-50-FPN.yaml \
  OUTPUT_DIR /tmp/output USE_NCCL True

Ini akan membutuhkan Caffe2 untuk dibangun dengan nccl ops - Saya tidak yakin apakah ini dilakukan secara default atau akan membutuhkan beberapa pekerjaan untuk membangun kembali Caffe2 dengan dukungan nccl.

@rbgirshick , saat menggunakan dua GPU, yaitu {0,2}, {0,3}, {1,2}, {1,3}, kesalahan masih ada. Berikut detailnya, menggunakan {0,3} dan melatih RetinaNet (retinanet_R-101-FPN) misalnya:

F0128 12: 09: 08.461153 4938 context_gpu.cu:387] Kesalahan di: /home/yszhu/local/caffe2/caffe2/core/context_gpu.cu:387: akses memori ilegal ditemukan
* Periksa jejak tumpukan kegagalan:
mengakhiri disebut secara rekursif
mengakhiri disebut secara rekursif
Dibatalkan pada 1517112548 (waktu unix) coba "date -d @ 1517112548" jika Anda menggunakan tanggal GNU
terminate dipanggil setelah melempar sebuah instance dari 'caffe2 :: EnforceNotMet'
what (): [menegakkan kegagalan di context_gpu.h: 170]. Terjadi kesalahan CUDA: akses memori ilegal ditemui Kesalahan dari operator:
masukan: "gpu_0 / fpn_6_relu" masukan: "gpu_0 / fpn_7_w" masukan: "gpu_0 / __ m23_shared" keluaran: "gpu_0 / fpn_7_w_grad" keluaran: "gpu_0 / fpn_7_b_grad" keluaran: "gpu_0 / __ m22" jenis: " "arg {nama:" kernel "i: 3} arg {nama:" exhaustive_search "i: 0} arg {nama:" pad "i: 1} arg {nama:" order "s:" NCHW "} arg {nama : "stride" i: 2} device_option {device_type: 1 cuda_gpu_id: 0} mesin: "CUDNN" is_gradient_op: true
@ 0x7f2bdf712772 google :: LogMessage :: Gagal ()
PC: @ 0x0 (tidak diketahui)
SIGABRT (@ 0x3e8000012b7) diterima oleh PID 4791 (TID 0x7f2a6effd700) dari PID 4791;
@ 0x7f2bdf7126ce google :: LogMessage :: SendToLog ()
@ 0x722670e30 (tidak diketahui)
@ 0x7f2bdf71204c google :: LogMessage :: Flush ()
@ 0x72256657_GI
@ 0x7f2bdf71556d google :: LogMessageFatal :: ~ LogMessageFatal ()
@ 0x7225666
@ 0x722b1b1965 _gnu_cxx :: __ verbose
@ 0x7f2bdfdd1180 caffe2 :: CUDAContext :: Hapus ()
@ 0x72af946 (tidak diketahui)
@ 0x7f2be27f42d9 std :: _ Sp_counted_base <> :: _ M_release ()
@ 0x72b1af973 std :: terminate ()
@ 0x72220625 (tidak diketahui)
@ 0x7f2bdfd377d1 caffe2 :: Tensor <> :: ResizeLike <> ()
@ 0x7226706df5 startread
@Sukasukaa_sukasukaa @sukasuka_suka
@ 0x72252ad _clone
@ 0x7f2bdfd707e1 caffe2 :: CudnnConvGradientOp :: DoRunWithType <> ()
@ 0x0 (tidak diketahui)

image

Bentuk kesalahan tidak selalu sama, tetapi hanya "Terjadi kesalahan CUDA: akses memori ilegal ditemukan".

Saya juga membangun kembali caffe2 dengan nccl-1.3.5 (mengikuti https://caffe2.ai/docs/getting-started.html?platform=centos&configuration=cloud#null__troubleshooting):

image

dan alihkan implementasi all-reduce ke nccl dengan meneruskan USE_NCCL True ke train_net.py, seperti di:

python2 tools / train_net.py --multi-gpu-testing \
--cfg configs / 12_2017_baselines / retinanet_R-101-FPN_1x_4gpus.yaml \
OUTPUT_DIR results_retinanet_R-101-FPN_1x_4gpus_model USE_NCCL Benar

Kesalahan menghilang ^ - ^ untuk keduanya menggunakan empat GPU {0,1,2,3} atau salah satu dari dua GPU {0,2}, {0,3}, {1,2}, {1,3}.
@rbgirshick , terima kasih banyak.

Hai, saya membuka nccl op untuk melatih tutorial_network dan kesalahan di atas menghilang. Namun, program hang setelah memuat data dan menempati 100% CPU sepanjang waktu.

.......
I0129 03: 25: 13.106998 118074 context_gpu.cu:321] GPU 0: 2175 MB
I0129 03: 25: 13.107028 118074 context_gpu.cu:321] GPU 1: 2078 MB
I0129 03: 25: 13.107045 118074 context_gpu.cu:321] GPU 2: 2266 MB
I0129 03: 25: 13.107059 118074 context_gpu.cu:321] GPU 3: 1860 MB
I0129 03: 25: 13.107072 118074 context_gpu.cu:325] Total: 8381 MB
I0129 03: 25: 13.122316 118079 context_gpu.cu:321] GPU 0: 2195 MB
I0129 03: 25: 13.122344 118079 context_gpu.cu:321] GPU 1: 2145 MB
I0129 03: 25: 13.122361 118079 context_gpu.cu:321] GPU 2: 2267 MB
I0129 03: 25: 13.122378 118079 context_gpu.cu:321] GPU 3: 1924 MB
I0129 03: 25: 13.122395 118079 context_gpu.cu:325] Total: 8532 MB
I0129 03: 25: 13.151623 118079 context_gpu.cu:321] GPU 0: 2245 MB
I0129 03: 25: 13.151650 118079 context_gpu.cu:321] GPU 1: 2159 MB
I0129 03: 25: 13.152823 118079 context_gpu.cu:321] GPU 2: 2269 MB
I0129 03: 25: 13.153623 118079 context_gpu.cu:321] GPU 3: 2020 MB
I0129 03: 25: 13.154454 118079 context_gpu.cu:325] Total: 8694 MB
I0129 03: 25: 13.186017 118079 context_gpu.cu:321] GPU 0: 2260 MB
I0129 03: 25: 13.186053 118079 context_gpu.cu:321] GPU 1: 2214 MB
I0129 03: 25: 13.186067 118079 context_gpu.cu:321] GPU 2: 2279 MB
I0129 03: 25: 13.186077 118079 context_gpu.cu:321] GPU 3: 2080 MB
I0129 03: 25: 13.186089 118079 context_gpu.cu:325] Total: 8835 MB
I0129 03: 25: 13.215306 118076 context_gpu.cu:321] GPU 0: 2310 MB
I0129 03: 25: 13.215342 118076 context_gpu.cu:321] GPU 1: 2269 MB
I0129 03: 25: 13.215351 118076 context_gpu.cu:321] GPU 2: 2308 MB
I0129 03: 25: 13.215368 118076 context_gpu.cu:321] GPU 3: 2081 MB
I0129 03: 25: 13.215384 118076 context_gpu.cu:325] Total: 8970 MB
I0129 03: 25: 13.307595 118084 context_gpu.cu:321] GPU 0: 2310 MB
I0129 03: 25: 13.307623 118084 context_gpu.cu:321] GPU 1: 2301 MB
I0129 03: 25: 13.307641 118084 context_gpu.cu:321] GPU 2: 2391 MB
I0129 03: 25: 13.307652 118084 context_gpu.cu:321] GPU 3: 2104 MB
I0129 03: 25: 13.307665 118084 context_gpu.cu:325] Total: 9108 MB
I0129 03: 25: 13.324935 118077 context_gpu.cu:321] GPU 0: 2312 MB
I0129 03: 25: 13.324965 118077 context_gpu.cu:321] GPU 1: 2313 MB
I0129 03: 25: 13.324982 118077 context_gpu.cu:321] GPU 2: 2452 MB
I0129 03: 25: 13.324993 118077 context_gpu.cu:321] GPU 3: 2171 MB
I0129 03: 25: 13.325011 118077 context_gpu.cu:325] Total: 9250 MB
I0129 03: 25: 13.343673 118080 context_gpu.cu:321] GPU 0: 2336 MB
I0129 03: 25: 13.343698 118080 context_gpu.cu:321] GPU 1: 2380 MB
I0129 03: 25: 13.343715 118080 context_gpu.cu:321] GPU 2: 2468 MB
I0129 03: 25: 13.343731 118080 context_gpu.cu:321] GPU 3: 2233 MB
I0129 03: 25: 13.343747 118080 context_gpu.cu:325] Total: 9417 MB
I0129 03: 25: 13.369802 118085 cuda_nccl_gpu.cc:110] Membuat NCCLConteks untuk key: 0: 0,1,2,3,
I0129 03: 25: 13.381914 118076 context_gpu.cu:321] GPU 0: 2361 MB
I0129 03: 25: 13.381942 118076 context_gpu.cu:321] GPU 1: 2453 MB
I0129 03: 25: 13.381961 118076 context_gpu.cu:321] GPU 2: 2524 MB
I0129 03: 25: 13.381978 118076 context_gpu.cu:321] GPU 3: 2247 MB
I0129 03: 25: 13.381995 118076 context_gpu.cu:325] Total: 9587 MB
I0129 03: 25: 13.613253 118083 context_gpu.cu:321] GPU 0: 2388 MB
I0129 03: 25: 13.613292 118083 context_gpu.cu:321] GPU 1: 2525 MB
I0129 03: 25: 13.613301 118083 context_gpu.cu:321] GPU 2: 2524 MB
I0129 03: 25: 13.613308 118083 context_gpu.cu:321] GPU 3: 2310 MB
I0129 03: 25: 13.613315 118083 context_gpu.cu:325] Total: 9748 MB

program macet ......

lingkungan saya:
Sistem operasi: Ubuntu 16.04
Versi kompiler: gcc (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.4) 5.4.0
Versi CUDA: 8.0
versi cuDNN: v5.1
Versi driver NVIDIA: 384.111

nvidia-smi:
+ ------------------------------------------------- ---------------------------- +
| Versi Driver NVIDIA-SMI 384.111: 384.111 |
| ------------------------------- + ----------------- ----- + ---------------------- +
| GPU Name Persistence-M | Tampilan Bus-Id | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr: Penggunaan / Tutup | Penggunaan Memori | Komputasi Util GPU M. |
| =============================== + |
| 0 Tesla M60 Mati | 00001543: 00: 00.0 Mati | Off |
| N / A 42C P0 41W / 150W | 0MiB / 8123MiB | 0% Default |
+ ------------------------------- + ----------------- ----- + ---------------------- +
| 1 Tesla M60 Mati | 00003134: 00: 00.0 Mati | Off |
| T / A 42C P0 39W / 150W | 0MiB / 8123MiB | 0% Default |
+ ------------------------------- + ----------------- ----- + ---------------------- +
| 2 Tesla M60 Mati | 00004975: 00: 00.0 Mati | Off |
| N / A 38C P0 41W / 150W | 0MiB / 8123MiB | 0% Default |
+ ------------------------------- + ----------------- ----- + ---------------------- +
| 3 Tesla M60 Mati | 0000F3E6: 00: 00.0 Mati | Off |
| T / A 38C P0 40W / 150W | 0MiB / 8123MiB | 0% Default |
+ ------------------------------- + ----------------- ----- + ---------------------- +

@lwher : itu sangat disayangkan. Alasan kami tidak menggunakan NCCL secara default adalah karena cenderung menyebabkan kebuntuan, yang menurut saya Anda lihat.

Setelah membangun kembali caffe2 dengan NCCL , Saya menjalankan kembali program dengan skrip ini :
python tools / train_net.py \
--multi-gpu-testing \
--cfg configs / Getting_started / tutorial_4gpu_e2e_faster_rcnn_R-50-FPN.yaml \
OUTPUT_DIR ./output USE_NCCL Benar

Ini melempar kesalahan ini :

Membuat NCCLConteks untuk key: 0: 0,1,2,3,
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PERINGATAN:

Anda harus selalu menjalankan libnvidia-ml.so yang diinstal dengan file
Driver Tampilan NVIDIA. Secara default, ini diinstal di / usr / lib dan / usr / lib64.
libnvidia-ml.so dalam paket GDK adalah pustaka rintisan yang dilampirkan hanya untuk
tujuan pembangunan (mis. mesin yang Anda buat tidak dimiliki aplikasi Anda
untuk menginstal Display Driver).
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
terminate dipanggil setelah melempar sebuah instance dari 'caffe2 :: EnforceNotMet'
what (): [menegakkan kegagalan di cuda_nccl_gpu.cc:40] status == ncclSuccess. 2 vs 0. Kesalahan di: /mnt/hzhida/project/caffe2/caffe2/contrib/nccl/cuda_nccl_gpu.cc40: kesalahan sistem Kesalahan dari operator:
masukan: "gpu_0 / rpn_cls_logits_fpn2_w_grad" masukan: "gpu_1 / rpn_cls_logits_fpn2_w_grad" masukan: "gpu_2 / rpn_cls_logits_fpn2_w_grad" masukan: "gpu_3 / rpn_cls_logits_fpn2_w_grad" output: "gpu_0 / rpn_cls_logits_fpn2_w_grad" output: "gpu_1 / rpn_cls_logits_fpn2_w_grad" output: "gpu_2 / rpn_cls_logits_fpn2_w_grad" output : "gpu_3 / rpn_cls_logits_fpn2_w_grad" name: "" type: "NCCLAllreduce" device_option {device_type: 1 cuda_gpu_id: 0}
* Dibatalkan pada 1517210588 (waktu unix) coba "date -d @ 1517210588" jika Anda menggunakan tanggal GNU
PC: @ 0x7ff1e0383428 gsignal
SIGABRT (@ 0x3e800007a46) diterima oleh PID 31302 (TID 0x7fefb5ffb700) dari PID 31302;
I0129 07: 23: 08.187249 31591 cuda_nccl_gpu.cc:110] Membuat NCCLConteks untuk key: 0: 0,1,2,3,

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PERINGATAN:

Anda harus selalu menjalankan libnvidia-ml.so yang diinstal dengan file
Driver Tampilan NVIDIA. Secara default, ini diinstal di / usr / lib dan / usr / lib64.
libnvidia-ml.so dalam paket GDK adalah pustaka rintisan yang dilampirkan hanya untuk
membangun tujuan (misalnya mesin yang Anda buat tidak dimiliki aplikasi Anda
untuk menginstal Display Driver).
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
mengakhiri disebut secara rekursif
@ 0x729390 (tidak diketahui)
I0129 07: 23: 08.188051 31592 context_gpu.cu:321] GPU 0: 2466 MB
I0129 07: 23: 08.188074 31592 context_gpu.cu:321] GPU 1: 2387 MB
I0129 07: 23: 08.188091 31592 context_gpu.cu:321] GPU 2: 2311 MB
I0129 07: 23: 08.188099 31592 context_gpu.cu:321] GPU 3: 2382 MB
I0129 07: 23: 08.188107 31592 context_gpu.cu:325] Total: 9548 MB
@ 0x7383428 gignal
@ 0x7382 batalkan
@ 0x7ff116284d _gnu_cxx :: _ verboseterminatehandler ()
@ 0x76066 (tidak diketahui)
@ 0x7ff1da160701 std :: terminate ()
@ 0x718bd38 (tidak diketahui)
@ 0x7686ba startread
@ 0x745541 klon
@ 0x0 (tidak diketahui)
Dibatalkan (inti dibuang)

Lingkungan Berlari :
Sistem operasi: Ubuntu 16.04
Versi kompiler: gcc (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.4) 5.4.0
Versi CUDA: 8.0
versi cuDNN: v5.1
Versi driver NVIDIA: 384.111

nvidia-smi:
+ ------------------------------------------------- ---------------------------- +
| Versi Driver NVIDIA-SMI 384.111: 384.111 |
| ------------------------------- + ----------------- ----- + ---------------------- +
| GPU Name Persistence-M | Tampilan Bus-Id | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr: Penggunaan / Tutup | Penggunaan Memori | Komputasi Util GPU M. |
| =============================== + |
| 0 Tesla M60 Mati | 00001543: 00: 00.0 Mati | Off |
| N / A 42C P0 41W / 150W | 0MiB / 8123MiB | 0% Default |
+ ------------------------------- + ----------------- ----- + ---------------------- +
| 1 Tesla M60 Mati | 00003134: 00: 00.0 Mati | Off |
| T / A 42C P0 39W / 150W | 0MiB / 8123MiB | 0% Default |
+ ------------------------------- + ----------------- ----- + ---------------------- +
| 2 Tesla M60 Mati | 00004975: 00: 00.0 Mati | Off |
| N / A 38C P0 41W / 150W | 0MiB / 8123MiB | 0% Default |
+ ------------------------------- + ----------------- ----- + ---------------------- +
| 3 Tesla M60 Mati | 0000F3E6: 00: 00.0 Mati | Off |
| T / A 38C P0 40W / 150W | 0MiB / 8123MiB | 0% Default |
+ ------------------------------- + ----------------- ----- + ---------------------- +

Satu catatan tambahan tentang NCCL: Caffe2 dibangun dengan NCCL secara default sehingga tidak perlu membangunnya kembali.

Langsung ke ini: karena akses memori ilegal berasal dari operator Tambah, Anda mungkin ingin memeriksa apakah akses peer langsung tersedia di antara GPU yang Anda gunakan. Operasi Add saat ini bergantung pada itu, dan jika tidak, kami mungkin ingin memperbaiki kodenya. Pada dasarnya, untuk melakukannya, dengan python, lakukan:

from caffe2.python import workspace
print(workspace.GetCudaPeerAccessPattern())

Bisakah Anda menempelkan hasilnya untuk debugging? (Terutama, jika Anda menggunakan CUDA_VISIBLE_DEVICES, pastikan Anda memanggil python dengan itu juga)

Output @Yangqing dari dua baris debug Anda:
[[ True True False False] [ True True False False] [False False True True] [False False True True]]
terima kasih telah memeriksa masalah ini (dan ... kerangka kerja caffe / caffe2!)

@jwn terima kasih! Sekadar konfirmasi, jadi operator Add menambahkan tensor di seluruh GPU {0,1} dan {2,3} kan? (Saya berasumsi itu menambahkan barang bersama dari 4 GPU).

Ini adalah konfigurasi 4 gpus, dengan id GPU ditentukan sebagai "0,1,2,4" (melalui CUDA_VISIBLE_DEVICES.) Jika id GPU dikonfigurasi sebagai "0,1,2,3" (id GPU terendah), itu berfungsi dengan baik tanpa kesalahan.

@Yangqing
Server Linux saya memiliki 4 GPU M60,
Ini adalah ruang kerja saya.GetCudaPeerAccessPattern () keluaran:
[[True False False False]
[False True False False]
[False False True False]
[False False False True]]

Saya bisa melatih jaring menggunakan 1 gpu dengan baik, tetapi ketika saya melatih jaring menggunakan 2 atau 4 GPUS, saya menemui masalah yang sama di atas, bahkan saya menetapkan NCCL = True

Terima kasih teman-teman. Ini memverifikasi asumsi saya bahwa akses memori ilegal berasal dari Add op tidak menangani komunikasi lintas perangkat dengan benar ketika akses peer tidak diaktifkan. Akan mengeluarkan perbaikan.

masalah yang sama dalam komunikasi lintas perangkat ...
mesin ini dapat menggunakan 4 GPU [0,1,2,3]:
image
mesin ini dapat menggunakan [0,1] dan [2,3]:
image

BTW, saya telah menggunakan 12 Cpu dan 4 titan x untuk melatih RCNN 3D Lebih Cepat dalam kerangka pytorch. Mengapa Pytorch tidak mengalami masalah ini ????

@Yangqing Karena saya tidak bisa melatih Detectron dalam multi-GPU, jadi saya ingin tahu berapa lama Anda akan memperbaiki masalah komunikasi Cross-GPU? Terima kasih.

@ Yangqing Saya mengalami masalah yang sama seperti di atas. Workstation Linux saya memiliki 2 GTX-1080Ti. Info kesalahannya adalah sebagai berikut:
[enforce fail at context_gpu.h:170] . Encountered CUDA error: an illegal memory access was encountered Error from operator: input: "gpu_0/rpn_cls_logits_fpn2_b_grad" input: "gpu_1/rpn_cls_logits_fpn2_b_grad" output: "gpu_0/rpn_cls_logits_fpn2_b_grad" name: "" type: "Add" device_option { device_type: 1 cuda_gpu_id: 0 }
dan ruang kerja saya.GetCudaPeerAccessPattern () keluarannya adalah:
[[Benar salah]
[Salah benar]]
Apakah itu masalah komunikasi Cross-GPU juga? Jika tidak, siapapun bisa membantu saya memperbaikinya, terima kasih.

Ya, ini masalah yang sama. Gradien di lintas-GPU tidak dapat digabungkan karena GPU tidak dapat berkomunikasi satu sama lain. jika Anda ingin menyelesaikan masalah, mungkin Anda dapat menyalin gradien dari GPU ke CPU, lalu menjumlahkannya dan menghitung rata-ratanya. Dan terakhir, salin gradien rata-rata dari CPU ke GPU. @bateyang

Terima kasih atas saranmu! @coolbrain Tapi saya tidak mengerti mengapa beberapa orang berhasil melatih model dengan dua atau lebih GPU. Bukankah mereka pernah menemui masalah komunikasi Cross-GPU yang sama?

Pelatihan 4 GPU dengan id GPU terendah (0,1,2,3) atau id GPU tertinggi (4,5,6,7) berfungsi di sini tanpa kesalahan (8 gpu mungkin juga berfungsi, tetapi belum mencobanya. ) Ini hanya memiliki masalah dengan campuran id tertentu, misalnya "0,1,2,4" atau "1,3,5,7".

Dugaan masalah komunikasi lintas-GPU caffe2 mungkin berperilaku berbeda dengan pembuatan perangkat keras individu (rbgirshick disebutkan sebelumnya server Facebook M40 bekerja dengan campuran id juga).

Temukan masalah yang sama. Apakah ini sudah diperbaiki?

Saya menemui masalah yang sama di workstation dengan 4 GTX 1080TI GPUS. Multi-gpu berfungsi dengan baik di platform lain, seperti caffe dan tensorflow.
Ini adalah ruang kerja saya.GetCudaPeerAccessPattern () keluaran:
[[True True False False]
[Benar Benar Salah Salah]
[False False True True]
[False False True True]]
Konfigurasi dua-gpu (dengan {0,1} atau {2,3}) berfungsi dengan baik. Tiga atau Empat GPU akan menghadapi masalah yang disebutkan di atas. Namun, kesalahan saya bukan pada operasi Add , saya ingat jenisnya adalah Copy

Apakah masalah sudah diperbaiki?

@rbgirshick Hai, saya menemui masalah yang sama dengan @lwher. Program ini tampaknya macet dengan peluang hampir 50% dengan NCCL di mesin saya dengan Ubuntu 14.04 dan 4 GPU. Apakah ada solusi untuk menghindari perilaku NCCL seperti itu? Terimakasih banyak!

@Yangqing Hai, Saya menemui masalah yang sama di operator Copy .
Ketika saya tidak menambahkan flag USE_NCCL True , kesalahannya adalah sebagai berikut:

E0325 02:26:02.258566  8284 operator_schema.cc:73] Input index 0 and output idx 0 (gpu_0/res3_0_branch2a_w_grad) are set to be in-place but this is actually not supported by op Copy
Original python traceback for operator 2817 in network `generalized_rcnn` in exception above (most recent call last):
  File "tools/train_net.py", line 358, in <module>
  File "tools/train_net.py", line 196, in main
  File "tools/train_net.py", line 205, in train_model
  File "tools/train_net.py", line 283, in create_model
  File "/home/shuqin/git/RefineNet/lib/modeling/model_builder.py", line 120, in create
  File "/home/shuqin/git/RefineNet/lib/modeling/model_builder.py", line 92, in generalized_rcnn
  File "/home/shuqin/git/RefineNet/lib/modeling/model_builder.py", line 254, in build_generic_detection_model
  File "/home/shuqin/git/RefineNet/lib/modeling/optimizer.py", line 42, in build_data_parallel_model
  File "/home/shuqin/git/RefineNet/lib/modeling/optimizer.py", line 84, in _add_allreduce_graph
  File "/home/shuqin/git/caffe2/build/caffe2/python/muji.py", line 64, in Allreduce
  File "/home/shuqin/git/caffe2/build/caffe2/python/muji.py", line 204, in AllreduceFallback
Traceback (most recent call last):
  File "tools/train_net.py", line 358, in <module>
    main()
  File "tools/train_net.py", line 196, in main
    checkpoints = train_model()
  File "tools/train_net.py", line 210, in train_model
    setup_model_for_training(model, output_dir)
  File "tools/train_net.py", line 316, in setup_model_for_training
    workspace.CreateNet(model.net)
  File "/home/shuqin/git/caffe2/build/caffe2/python/workspace.py", line 166, in CreateNet
    StringifyProto(net), overwrite,
  File "/home/shuqin/git/caffe2/build/caffe2/python/workspace.py", line 192, in CallWithExceptionIntercept
    return func(*args, **kwargs)
RuntimeError: [enforce fail at operator.cc:125] schema->Verify(operator_def). Operator def did not pass schema checking: input: "gpu_0/res3_0_branch2a_w_grad" output: "gpu_0/res3_0_branch2a_w_grad" name: "" type: "Copy" device_option { device_type: 1 cuda_gpu_id: 0 }

Jika saya menambahkan flag USE_NCCL True , kesalahannya akan menjadi:

Original python traceback for operator 2928 in network `generalized_rcnn` in exception above (most recent call last):
  File "tools/train_net.py", line 358, in <module>
  File "tools/train_net.py", line 196, in main
  File "tools/train_net.py", line 205, in train_model
  File "tools/train_net.py", line 283, in create_model
  File "/home/shuqin/git/RefineNet/lib/modeling/model_builder.py", line 120, in create
  File "/home/shuqin/git/RefineNet/lib/modeling/model_builder.py", line 92, in generalized_rcnn
  File "/home/shuqin/git/RefineNet/lib/modeling/model_builder.py", line 254, in build_generic_detection_model
  File "/home/shuqin/git/RefineNet/lib/modeling/optimizer.py", line 42, in build_data_parallel_model
  File "/home/shuqin/git/RefineNet/lib/modeling/optimizer.py", line 82, in _add_allreduce_graph
Traceback (most recent call last):
  File "tools/train_net.py", line 358, in <module>
    main()
  File "tools/train_net.py", line 196, in main
    checkpoints = train_model()
  File "tools/train_net.py", line 217, in train_model
    workspace.RunNet(model.net.Proto().name)
  File "/home/shuqin/git/caffe2/build/caffe2/python/workspace.py", line 230, in RunNet
    StringifyNetName(name), num_iter, allow_fail,
  File "/home/shuqin/git/caffe2/build/caffe2/python/workspace.py", line 192, in CallWithExceptionIntercept
    return func(*args, **kwargs)
RuntimeError: [enforce fail at cuda_nccl_gpu.cc:40] status == ncclSuccess. 2 vs 0.  Error at: /home/shuqin/git/caffe2/caffe2/contrib/nccl/cuda_nccl_gpu.cc40: system error Error from operator:
input: "gpu_0/rpn_cls_logits_fpn2_b_grad" input: "gpu_1/rpn_cls_logits_fpn2_b_grad" input: "gpu_2/rpn_cls_logits_fpn2_b_grad" output: "gpu_0/rpn_cls_logits_fpn2_b_grad" output: "gpu_1/rpn_cls_logits_fpn2_b_grad" output: "gpu_2/rpn_cls_logits_fpn2_b_grad" name: "" type: "NCCLAllreduce" device_option { device_type: 1 cuda_gpu_id: 0 }

Sistem saya adalah Ubuntu 14.04, dengan Cuda 8.0 dan Cudnn 5.1. Mesin saya memiliki 8 GPU tetapi saya menguji kodenya hanya pada 4 GPU terakhir, jadi komunikasi antara GPU seharusnya tidak ada masalah. Saya menggunakan NCCL 2.1.15 untuk CUDA 8.0.

Semoga masalah ini bisa segera diatasi. Sangat menyebalkan.

Masalah ini masih ada, bukan?

Dengan menambahkan 'USE_NCLL True' saat menjalankan pelatihan multi-GPU, saya berhasil memulai pelatihan saya. Meskipun terkadang kebuntuan dapat terjadi, Anda dapat mencoba mengubah beberapa parameter pelatihan seperti kecepatan pemelajaran untuk menyelesaikannya.

Masalahnya masih ada.

@xieshuqin Saya bertemu masalah yang sama 'status == ncclSuccess. 2 vs 0. ' dengan Anda saat menggunakan 'USE_NCCL True'. Bagaimana Anda mengatasi masalah ini? Terima kasih

@pkuxwguan Masalah saya telah diperbaiki tetapi saya lupa bagaimana cara memperbaikinya. Maaf soal itu. Tapi saya ingat masalahnya seharusnya terkait dengan instalasi NCCL yang salah.

Halo semuanya, saya juga mengalami masalah ini, jadi saya akhirnya memperbaikinya sendiri. https://github.com/pytorch/pytorch/pull/6896 memecahkan masalah ini :)

ada yang memberi tahu saya apakah saya dapat menjalankan mask r-cnn hanya dengan satu GPU?

@daquexian Saya mencoba PR Anda, berhasil !!! Terima kasih banyak

@daquexian PR ini tampaknya tidak berhasil untuk saya. Saya mengalami kebuntuan saat menggunakan satu GPU tanpa NCCL dan juga saat menggunakan 2 GPU dengan USE_NCCL True . Setelah mengubah muji.py sesuai dengan PR Anda dan menjalankan 2 GPU dengan USE_NCCL True , saya masih mengalami kebuntuan; pelatihan hanya berhenti di nomor iterasi acak.

Terima kasih telah mencoba :) Anda tidak perlu menyetel USE_NCCL = True jika Anda menggunakan my
pr. NCCL dan "muji" adalah dua metode komunikasi GPU yang berbeda. Pr saya adalah a
patch untuk muji, yang sebelumnya membutuhkan akses peer gpu, dan bukan untuk nccl.
Cukup setel USE_NCCL = False dan pr saya akan berfungsi.

Pada Rabu, 2 Mei 2018, 02:51 Thomas Balestri [email protected]
menulis:

@daquexian https://github.com/daquexian PR ini tampaknya tidak berfungsi
untuk saya. Saya mengalami kebuntuan saat menggunakan satu GPU tanpa NCCL
dan juga saat menggunakan 2 GPU dengan USE_NCCL True. Setelah mengubah muji.py
menurut PR Anda dan berjalan dengan 2 GPU dengan USE_NCCL Benar, I'm
masih mengalami kebuntuan; pelatihan hanya berhenti secara acak
nomor.

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/facebookresearch/Detectron/issues/32#issuecomment-385755468 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/ALEcn2nGO9e-fIF8S3bTDNkK4370hjOVks5tuK7DgaJpZM4Rsc8n
.

Mungkin saya melewatkan sesuatu, tetapi jika saya menyetel USE_NCCL = False, dan menggunakan muji.py dan muji_test.py PR Anda yang telah dimodifikasi, saya mendapatkan kesalahan asli:

I0502 14:35:57.192476 79712 context_gpu.cu:318] Total: 23025 MB
E0502 14:35:58.382604 79711 net_dag.cc:195] Exception from operator chain starting at '' (type 'Add'): caffe2::EnforceNotMet: [enforce fail at context_gpu.h:156] . Encountered CUDA error: an illegal memory access was encountered Error from operator: 
input: "gpu_0/rpn_cls_logits_fpn2_b_grad" input: "gpu_1/rpn_cls_logits_fpn2_b_grad" output: "gpu_0/rpn_cls_logits_fpn2_b_grad" name: "" type: "Add" device_option { device_type: 1 cuda_gpu_id: 0 }
E0502 14:35:58.382622 79712 net_dag.cc:195] Secondary exception from operator chain starting at '' (type 'Add'): caffe2::EnforceNotMet: [enforce fail at context_gpu.h:156] . Encountered CUDA error: an illegal memory access was encountered Error from operator: 
input: "gpu_0/rpn_cls_logits_fpn2_w_grad" input: "gpu_1/rpn_cls_logits_fpn2_w_grad" output: "gpu_0/rpn_cls_logits_fpn2_w_grad" name: "" type: "Add" device_option { device_type: 1 cuda_gpu_id: 0 }
F0502 14:35:58.382670 79711 context_gpu.h:107] Check failed: error == cudaSuccess an illegal memory access was encountered
*** Check failure stack trace: ***
F0502 14:35:58.382683 79712 context_gpu.h:107] Check failed: error == cudaSuccess an illegal memory access was encountered
*** Check failure stack trace: ***
E0502 14:35:58.383510 79709 net_dag.cc:195] Secondary exception from operator chain starting at '' (type 'ConvGradient'): caffe2::EnforceNotMet: [enforce fail at context_gpu.cu:336] error == cudaSuccess. 77 vs 0. Error at: /home/markable-ai/pytorch/caffe2/core/context_gpu.cu:336: an illegal memory access was encountered Error from operator: 
input: "gpu_1/fpn_res3_3_sum" input: "gpu_1/conv_rpn_fpn2_w" input: "gpu_1/__m18_shared" output: "_gpu_1/conv_rpn_fpn2_w_grad_autosplit_2" output: "_gpu_1/conv_rpn_fpn2_b_grad_autosplit_2" output: "_gpu_1/fpn_res3_3_sum_grad_autosplit_0" name: "" type: "ConvGradient" arg { name: "kernel" i: 3 } arg { name: "exhaustive_search" i: 0 } arg { name: "pad" i: 1 } arg { name: "order" s: "NCHW" } arg { name: "stride" i: 1 } device_option { device_type: 1 cuda_gpu_id: 1 } engine: "CUDNN" is_gradient_op: true
E0502 14:35:58.383541 79713 net_dag.cc:195] Secondary exception from operator chain starting at '' (type 'ConvGradient'): caffe2::EnforceNotMet: [enforce fail at conv_op_cudnn.cc:1290] status == CUDNN_STATUS_SUCCESS. 8 vs 0. , Error at: /home/markable-ai/pytorch/caffe2/operators/conv_op_cudnn.cc:1290: CUDNN_STATUS_EXECUTION_FAILED Error from operator: 
input: "gpu_3/conv_rpn_fpn4" input: "gpu_3/rpn_bbox_pred_fpn2_w" input: "gpu_3/rpn_bbox_pred_fpn4_grad" output: "_gpu_3/rpn_bbox_pred_fpn2_w_grad_autosplit_1" output: "_gpu_3/rpn_bbox_pred_fpn2_b_grad_autosplit_1" output: "gpu_3/__m13_shared" name: "" type: "ConvGradient" arg { name: "kernel" i: 1 } arg { name: "exhaustive_search" i: 0 } arg { name: "pad" i: 0 } arg { name: "order" s: "NCHW" } arg { name: "stride" i: 1 } device_option { device_type: 1 cuda_gpu_id: 3 } engine: "CUDNN" is_gradient_op: true
E0502 14:35:58.383591 79706 net_dag.cc:195] Secondary exception from operator chain starting at '' (type 'ConvGradient'): caffe2::EnforceNotMet: [enforce fail at context_gpu.cu:336] error == cudaSuccess. 77 vs 0. Error at: /home/markable-ai/pytorch/caffe2/core/context_gpu.cu:336: an illegal memory access was encountered Error from operator: 
input: "gpu_3/conv_rpn_fpn3" input: "gpu_3/rpn_cls_logits_fpn2_w" input: "gpu_3/rpn_cls_logits_fpn3_grad" output: "_gpu_3/rpn_cls_logits_fpn2_w_grad_autosplit_2" output: "_gpu_3/rpn_cls_logits_fpn2_b_grad_autosplit_2" output: "_gpu_3/conv_rpn_fpn3_grad_autosplit_0" name: "" type: "ConvGradient" arg { name: "kernel" i: 1 } arg { name: "exhaustive_search" i: 0 } arg { name: "pad" i: 0 } arg { name: "order" s: "NCHW" } arg { name: "stride" i: 1 } device_option { device_type: 1 cuda_gpu_id: 3 } engine: "CUDNN" is_gradient_op: true
F0502 14:35:58.382683 79712 context_gpu.h:107] Check failed: error == cudaSuccess an illegal memory access was encounteredF0502 14:35:58.434631 79709 context_gpu.h:107] FCheck failed: error == cudaSuccess an illegal memory access was encountered0502 14:35:58.434648 79713 c*** Check failure stack trace: ***
E0502 14:35:58.383741 79700 net_dag.cc:195] Secondary exception from operator chain starting at '' (type 'ConvGradient'): caffe2::EnforceNotMet: [enforce fail at context_gpu.cu:336] error == cudaSuccess. 77 vs 0. Error at: /home/markable-ai/pytorch/caffe2/core/context_gpu.cu:336: an illegal memory access was encountered Error from operator: 
input: "gpu_3/conv_rpn_fpn2" input: "gpu_3/rpn_cls_logits_fpn2_w" input: "gpu_3/rpn_cls_logits_fpn2_grad" output: "_gpu_3/rpn_cls_logits_fpn2_w_grad_autosplit_3" output: "_gpu_3/rpn_cls_logits_fpn2_b_grad_autosplit_3" output: "_gpu_3/conv_rpn_fpn2_grad_autosplit_0" name: "" type: "ConvGradient" arg { name: "kernel" i: 1 } arg { name: "exhaustive_search" i: 0 } arg { name: "pad" i: 0 } arg { name: "order" s: "NCHW" } arg { name: "stride" i: 1 } device_option { device_type: 1 cuda_gpu_id: 3 } engine: "CUDNN" is_gradient_op: true
Aborted (core dumped)

Saya menggunakan Cuda 9.1, cudnn 7.1 dengan 4 V100.

@ Feynman27 Dapatkah Anda memberi tahu saya cabang mana (seperti Allreduce4 , Allreduce4Group2 , Allreduce2 atau lainnya) dari Allreduce dalam muji.py yang dimutakhirkan yang dimasukkan? Anda mungkin ingin menambahkan beberapa fungsi cetak di cabang ini untuk mengetahuinya. Dan bagaimana jika Anda mengganti implementasi Allreduce dengan hanya memanggil AllreduceFallback ? Akan sangat bagus jika Anda juga dapat memberikan pola akses gpu Anda seperti https://github.com/facebookresearch/Detectron/issues/32#issuecomment -361739340. Terima kasih!

Allreduce4 dipanggil. Pola akses gpu adalah:

>>> from caffe2.python import workspace
>>> print(workspace.GetCudaPeerAccessPattern())
[[ True False False False]
 [False  True False False]
 [False False  True False]
 [False False False  True]]

Saya akan mencoba menelepon AllreduceFallback.

Memanggil AllreduceFallback memberikan kesalahan yang sama seperti di atas:

I0502 17:08:51.294476 88651 context_gpu.cu:318] Total: 22524 MB
E0502 17:08:52.009866 88659 net_dag.cc:195] Exception from operator chain starting at '' (type 'Add'): caffe2::EnforceNotMet: [enforce fail at context_gpu.h:156] . Encountered CUDA error: an illegal memory access was encountered Error from operator: 
input: "gpu_0/rpn_cls_logits_fpn2_w_grad" input: "gpu_1/rpn_cls_logits_fpn2_w_grad" output: "gpu_0/rpn_cls_logits_fpn2_w_grad" name: "" type: "Add" device_option { device_type: 1 cuda_gpu_id: 0 }
F0502 17:08:52.009990 88659 context_gpu.h:107] Check failed: error == cudaSuccess an illegal memory access was encountered
*** Check failure stack trace: ***
E0502 17:08:52.010440 88651 net_dag.cc:195] Secondary exception from operator chain starting at '' (type 'ConvGradient'): caffe2::EnforceNotMet: [enforce fail at context_gpu.cu:336] error == cudaSuccess. 77 vs 0. Error at: /home/markable-ai/pytorch/caffe2/core/context_gpu.cu:336: an illegal memory access was encountered Error from operator: 
input: "gpu_2/fpn_res3_3_sum" input: "gpu_2/conv_rpn_fpn2_w" input: "gpu_2/__m15_shared" output: "_gpu_2/conv_rpn_fpn2_w_grad_autosplit_2" output: "_gpu_2/conv_rpn_fpn2_b_grad_autosplit_2" output: "_gpu_2/fpn_res3_3_sum_grad_autosplit_0" name: "" type: "ConvGradient" arg { name: "kernel" i: 3 } arg { name: "exhaustive_search" i: 0 } arg { name: "pad" i: 1 } arg { name: "order" s: "NCHW" } arg { name: "stride" i: 1 } device_option { device_type: 1 cuda_gpu_id: 2 } engine: "CUDNN" is_gradient_op: true
E0502 17:08:52.010524 88663 net_dag.cc:195] Secondary exception from operator chain starting at '' (type 'ConvGradient'): caffe2::EnforceNotMet: [enforce fail at context_gpu.cu:336] error == cudaSuccess. 77 vs 0. Error at: /home/markable-ai/pytorch/caffe2/core/context_gpu.cu:336: an illegal memory access was encountered Error from operator: 
input: "gpu_1/fpn_res2_2_sum" input: "gpu_1/conv_rpn_fpn2_w" input: "gpu_1/__m12_shared" output: "_gpu_1/conv_rpn_fpn2_w_grad_autosplit_3" output: "_gpu_1/conv_rpn_fpn2_b_grad_autosplit_3" output: "_gpu_1/fpn_res2_2_sum_grad_autosplit_0" name: "" type: "ConvGradient" arg { name: "kernel" i: 3 } arg { name: "exhaustive_search" i: 0 } arg { name: "pad" i: 1 } arg { name: "order" s: "NCHW" } arg { name: "stride" i: 1 } device_option { device_type: 1 cuda_gpu_id: 1 } engine: "CUDNN" is_gradient_op: true
F0502 17:08:52.010545 88660 context_gpu.cu:387] Error at: /home/markable-ai/pytorch/caffe2/core/context_gpu.cu:387: an illegal memory access was encountered
*** Check failure stack trace: ***
F0502 17:08:52.010545 88660 context_gpu.cu:387] Error at: /home/markable-ai/pytorch/caffe2/core/context_gpu.cu:387: an illegal memory access was encounteredF0502 17:08:52.061641 88651 context_gpu.hF107] 502 17:Ch:ck failed: error == cudaSuccess 52.061651 88663 context_gpu.h:
E0502 17:08:52.010577 88653 net_dag.cc:195] Secondary exception from operator chain starting at '' (type 'ConvGradient'): caffe2::EnforceNotMet: [enforce fail at context_gpu.cu:336] error == cudaSuccess. 77 vs 0. Error at: /home/markable-ai/pytorch/caffe2/core/context_gpu.cu:336: an illegal memory access was encountered Error from operator: 
input: "gpu_0/fpn_res4_22_sum" input: "gpu_0/conv_rpn_fpn2_w" input: "gpu_0/__m15_shared" output: "_gpu_0/conv_rpn_fpn2_w_grad_autosplit_1" output: "_gpu_0/conv_rpn_fpn2_b_grad_autosplit_1" output: "_gpu_0/fpn_res4_22_sum_grad_autosplit_0" name: "" type: "ConvGradient" arg { name: "kernel" i: 3 } arg { name: "exhaustive_search" i: 0 } arg { name: "pad" i: 1 } arg { name: "order" s: "NCHW" } arg { name: "stride" i: 1 } device_option { device_type: 1 cuda_gpu_id: 0 } engine: "CUDNN" is_gradient_op: true
*** Check failure stack trace: ***
F0502 17:08:52.010545 88660 context_gpu.cu:387] Error at: /home/markable-ai/pytorch/caffe2/core/context_gpu.cu:387: an illegal memory access was encounteredF0502 17:08:52.061641 88651 context_gpu.hF107] 502 17:Ch:ck failed: error == cudaSuccess 52.061651 88663 context_gpu.h:
07] Check failed: error == cudaSuccess an illegal memory access was encountered
*** Check failure stack trace: ***
F0502 17:08:52.010545 88660 context_gpu.cu:387] Error at: /home/markable-ai/pytorch/caffe2/core/context_gpu.cu:387: an illegal memory access was encounteredF0502 17:08:52.061641 88651 context_gpu.hF107] 502 17:Ch:ck failed: error == cudaSuccess 52.061651 88663 context_gpu.h:
07] Check failed: error == cudaSuccess an illegal memory access was encounteredF0502 17:08:52.061749 88653 context_gpu.h:107] Check failed: error == cudaSuccess an illegal memory access was encountered
*** Check failure stack trace: ***
Aborted (core dumped

@ Feyn27 Ini aneh. Menurut pola akses GPU Anda, akan dipanggil AllreduceFallback alih-alih Allreduce4 . Dan ketika Anda menelepon AllreduceFallback secara manual, pesan kesalahan tampaknya tidak berasal dari AllreduceFallback . Apakah Anda mengubah muji.py di folder yang benar? Misalnya, jika paket python dari caffe2 ada di /usr/lib/python/site-packages/caffe2 , maka mengubah muji.py di folder sumber caffe2 (seperti ~/caffe2/python ) tidak akan berfungsi.

@ Feynman27 apakah Anda membangun kembali caffe2?

@daquexian Paket caffe2 diinstal di bawah pytorch/caffe2 , bukan /usr/lib/python/site-packages/caffe2 atau yang lainnya. Saya telah menetapkan $PYTHONPATH untuk melihat di direktori ini. Saya juga telah mengonfirmasi ini dengan:

Python 2.7.14 |Anaconda, Inc.| (default, Mar 27 2018, 17:29:31) 
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe2
>>> caffe2.__file__
'/home/markable-ai/pytorch/build/caffe2/__init__.pyc'
>>> from caffe2.python import muji
>>> muji.__file__
'/home/markable-ai/pytorch/build/caffe2/python/muji.pyc'
>>> 

Saya hanya memodifikasi file muji.py bawah pytorch/caffe2/python/muji.py .

@yuzcccc Saya tidak membuat ulang caffe2, tapi mengapa saya harus melakukannya? Saya hanya memodifikasi file python.

@ Feynman27 Saya rasa Anda harus mengubah muji.py bawah /home/markable-ai/pytorch/build/caffe2/python/muji.py

Ya, itu kelalaian saya. Tangkapan yang bagus. Saya memodifikasi pytorch/caffe2/python/muji.py dan seharusnya telah mengubah pytorch/build/caffe2/python/muji.py .

@ Feynman27 Senang melihatnya bekerja :)
@Yangqing Bisakah Anda meninjau pr https://github.com/pytorch/pytorch/pull/6896 saya? Ini dapat membantu banyak pengguna detectron :)

@daquexian Sayangnya, saya sepertinya masih mengalami kebuntuan.

@ Feynman27 Hmm .. Berapakah nilai USE_NCCL ? Seharusnya False

Ya, USE_NCCL disetel ke false.

@ Feynman27 Maaf saya tidak tahu mengapa ini akan menyebabkan kebuntuan. Sulit untuk mereproduksi bagi saya

Cukup adil. Sejauh yang saya tahu, kebuntuan yang saya alami mungkin tidak terkait dengan apakah akses peer GPU diaktifkan atau tidak. PR Anda pasti mengizinkan saya untuk memulai pelatihan dengan USE_NCCL=False . Saya menjalankan mesin Azure, jadi ini mungkin terkait dengan menjalankan VM mereka. Saya telah memulai pelatihan pada mesin lokal dengan 2 TitanX dan pelatihan tersebut tampaknya berjalan dengan baik.

@daquexian Terima kasih! PR Anda bekerja untuk saya!

Sepertinya masalah ini bisa ditutup.

@gadcam terima kasih telah membantu mengidentifikasi masalah yang dapat ditutup!

Untuk yang ini, saya ingin membiarkannya terbuka sampai ada perbaikan yang digabungkan ke Caffe2.

@rbgirshick Sayangnya tidak ada yang PR saya : |

@rbgirick Terima kasih! PR saya https://github.com/pytorch/pytorch/pull/6896 telah digabungkan. Sepertinya masalah ini bisa ditutup :)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat