Pytorch: RuntimeError: Pekerja DataLoader dibunuh oleh sinyal: Dibunuh.

Dibuat pada 28 Jun 2018  ·  20Komentar  ·  Sumber: pytorch/pytorch

Deskripsi masalah

Traceback (panggilan terakhir terakhir):
File "/usr/lib/python3.5/runpy.py", baris 184, di _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.5/runpy.py", baris 85, di _run_code
exec(kode, run_globals)
File "/media/zonstlab0/c3e7052f-24ed-4743-8506-fb7b8c6f0ba7/zonstlab0/myluo/Diagnosis/main_PVC.py", baris 161, di
kereta api (zaman)
File "/media/zonstlab0/c3e7052f-24ed-4743-8506-fb7b8c6f0ba7/zonstlab0/myluo/Diagnosis/main_PVC.py", baris 104, di kereta
untuk batch_idx, (data, label) di enumerate(train_loader):
File "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", baris 280, di __next__
idx, batch = self._get_batch()
File "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", baris 259, di _get_batch
kembalikan self.data_queue.get()
File "/usr/lib/python3.5/queue.py", baris 164, di get
diri.not_kosong.tunggu()
File "/usr/lib/python3.5/threading.py", baris 293, di tunggu
pelayan.memperoleh()
File "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", baris 178, di handler
_error_if_any_worker_fails()
RuntimeError: Pekerja DataLoader (pid 4161) dibunuh oleh sinyal: Dibunuh.

Kode

https://github.com/Lmy0217/MedicalImaging/blob/pve/main_PVC.py#L79

Sistem Informasi

Versi PyTorch: 0.4.0
Apakah debug build: Tidak
CUDA digunakan untuk membangun PyTorch: 9.0.176

OS: Ubuntu 16.04.4 LTS
Versi GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
Versi CMake: versi 3.5.1

Versi Python: 3.5
Apakah CUDA tersedia: Ya
Versi runtime CUDA: Tidak dapat mengumpulkan
Model dan konfigurasi GPU: GPU 0: TITAN Xp
Versi driver Nvidia: 384.130
versi cuDNN: Mungkin salah satu dari berikut ini:
/usr/lib/x86_64-linux-gnu/libcudnn.so.7.1.2
/usr/lib/x86_64-linux-gnu/libcudnn_static_v7.a

Versi perpustakaan yang relevan:
[pip3] numpy (1.14.3)
[pip3] pytorchviz (0.0.1)
[pip3] obor (0.4.0)
[pip3] file obor (0.1.0)
[pip3] torchvision (0.2.1)
[conda] Tidak dapat mengumpulkan

Komentar yang paling membantu

Saya mengalami masalah yang sama baru-baru ini.

Jika Anda menggunakan docker untuk menjalankan program PyTorch, dengan probabilitas tinggi, itu karena memori bersama buruh pelabuhan TIDAK cukup besar untuk menjalankan program Anda dalam ukuran batch yang ditentukan.

Solusi untuk keadaan ini adalah:

  1. gunakan ukuran batch yang lebih kecil untuk melatih model Anda.
  2. keluar dari buruh pelabuhan saat ini, dan jalankan kembali buruh pelabuhan dengan "--shm-size=16g" yang ditentukan atau ruang memori bersama yang lebih besar tergantung pada mesin Anda.

Semoga ini bisa membantu mereka yang memiliki masalah yang sama .:+1:

Semua 20 komentar

proses pekerja pemuat data Anda terbunuh oleh sinyal

@SsnL apa yang harus saya lakukan?

@Lmy0217 Anda dapat mencoba menjalankan dengan num_workers=0 dan melihat apakah itu memberi Anda kesalahan yang lebih baik (karena tidak menggunakan subproses).

@SsnL saya set num_workers=0 dan kemudian tidak ada kesalahan.

Kemudian sesuatu di dataset Anda __getitem__ tidak suka multiprocessing. Apa yang ada di sana?

@SsnL Tetapi ketika saya menetapkan num_workers=1 , kode saya kadang-kadang berfungsi.

sepertinya tidak ada bug yang terisolasi, tetapi sesuatu di Dataset pengguna yang mungkin tidak menyukai multiprocessing. Menutup masalah untuk mengarahkannya ke https://discuss.pytorch.org

Saya mengalami masalah yang sama baru-baru ini.

Jika Anda menggunakan docker untuk menjalankan program PyTorch, dengan probabilitas tinggi, itu karena memori bersama buruh pelabuhan TIDAK cukup besar untuk menjalankan program Anda dalam ukuran batch yang ditentukan.

Solusi untuk keadaan ini adalah:

  1. gunakan ukuran batch yang lebih kecil untuk melatih model Anda.
  2. keluar dari buruh pelabuhan saat ini, dan jalankan kembali buruh pelabuhan dengan "--shm-size=16g" yang ditentukan atau ruang memori bersama yang lebih besar tergantung pada mesin Anda.

Semoga ini bisa membantu mereka yang memiliki masalah yang sama .:+1:

Saya telah menjalankannya di CPU dan juga menemui kesalahan: RuntimeError: DataLoader worker (pid 6790) dimatikan oleh signal: Killed.

Saya mengikuti @SsnL , itu terbunuh dan dicetak di terminal:

Jumlah instans per nampan: [85308 31958]
Pengujian: [ 0/5000] eta: 8:26:32 model_time: 5,8156 (5,8156) evaluator_time: 0,1168 (0,1168) waktu: 6,0785 data: 0,1460
Terbunuh

Tolong bantu aku. Terima kasih banyak.

Saya menemui masalah yang sama, bahkan jika saya mengatur num_workers=0, pelatihan berakhir secara tidak terduga dengan hanya informasi "Terbunuh". ingin tahu apakah itu karena pemuat data atau masalah memori atau yang lainnya

Saya menguji pemuat data sendiri dan mengatur num_workers=0, itu dibunuh secara tak terduga setelah beberapa k iterasi. itu adalah dataset ms coco dan memori sistem 64 GB jadi saya pikir itu seharusnya tidak menjadi masalah memori.

kesalahan yang sama dengan model pengujian

apakah sudah fix atau? apakah masih ada?

@SystemErrorWang Kondisi yang sama. Saya memiliki lebih dari 252G memori tetapi masih membuat Dataloader terbunuh. Saya memantau penggunaan memori sistem dengan perintah htop dan penggunaan memori selalu kurang dari 30G jika saya mengatur num_workers= 16. Saya menggunakan sistem ubuntu 18.04 dan bukan buruh pelabuhan. Ini pasti bukan masalah memori. (btw, versi pytorch adalah 1.4.0 pada python 3.7.4)

Jadi ... Bagaimana cara memperbaikinya?

Meningkatkan memori CPU dan mengurangi pekerja menjadi 10 bukannya 20 bekerja untuk saya. Mungkin juga terkait dengan penggunaan beberapa GPU dengan nn.DataParallel. Saya hanya melihat ini ketika melatih model besar yang membutuhkan 2-4 GPU.

Apakah ada perbaikan resmi untuk ini? Saya sedang menguji model yang sangat sederhana pada 8 core dan memori 32 GB dan saya masih mendapatkan kesalahan ini tidak peduli seberapa rendah saya menetapkan num_workers (selain 0)

@import-antigravity Bisakah Anda membagikan kode dataset? Ini biasanya disebabkan oleh kombinasi lingkungan dan kode dataset.

Ini biasanya disebabkan oleh kombinasi lingkungan dan kode dataset.

@SsnL
Apa maksudmu? dapatkah Anda memberikan beberapa contoh minimum untuk menggambarkan kasus-kasus buruk?

@SsnL dalam hal ini dataset baru saja menggambar sampel dari distribusi:

from torch import Tensor
from torch.distributions import Distribution
from torch.utils.data import Dataset

class ProceduralDataset(Dataset, ABC):
    <strong i="7">@property</strong>
    <strong i="8">@abstractmethod</strong>
    def distribution(self) -> Distribution:
        pass

    def __init__(self, num_samples: int):
        self._n = num_samples
        self._samples = None

    def __getitem__(self, i):
        if self._samples is None:
            self._samples = self.distribution.sample((self._n,))
        return self._samples[i], Tensor()

    def __len__(self):
        return self._n

    def __iter__(self):
        self._i = 0
        return self

    def __iter__(self):
        self._i = 0
        return self

    def __next__(self):
        self._i += 1
        return self[self._i - 1]

Saya mengalami masalah yang sama baru-baru ini. Saya menjalankan model secara lokal.

Namun, saya membuat beberapa lingkungan virtual dengan perintah virtualenv. Kesalahan mungkin terkait dengan ini, karena komputer saya tidak memiliki cukup memori untuk menjalankan pemuat data dengan banyak pekerja.

Ketika saya menghapus lingkungan virtual, kesalahannya hilang.

Menciptakan lingkungan virtual seperti ini

virtualenv ~/env
source ~/env/bin/activate

Dan menghapusnya seperti ini

rm -rf env
Apakah halaman ini membantu?
0 / 5 - 0 peringkat