์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "/usr/lib/python3.5/runpy.py", 184ํ, _run_module_as_main
"__main__", mod_spec)
ํ์ผ "/usr/lib/python3.5/runpy.py", 85ํ, _run_code
exec(์ฝ๋, run_globals)
ํ์ผ "/media/zonstlab0/c3e7052f-24ed-4743-8506-fb7b8c6f0ba7/zonstlab0/myluo/Diagnosis/main_PVC.py", 161ํ, in
๊ธฐ์ฐจ(์ํฌํฌ)
ํ์ผ "/media/zonstlab0/c3e7052f-24ed-4743-8506-fb7b8c6f0ba7/zonstlab0/myluo/Diagnosis/main_PVC.py", 104ํ, ๊ธฐ์ฐจ
enumerate(train_loader)์ batch_idx, (๋ฐ์ดํฐ, ๋ ์ด๋ธ):
ํ์ผ "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", 280ํ, __next__
idx, ๋ฐฐ์น = self._get_batch()
ํ์ผ "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", 259ํ, _get_batch
self.data_queue.get() ๋ฐํ
ํ์ผ "/usr/lib/python3.5/queue.py", 164ํ, get
self.not_empty.wait()
ํ์ผ "/usr/lib/python3.5/threading.py", 293ํ, ๋๊ธฐ ์ค
waiter.acquire()
ํธ๋ค๋ฌ์ ํ์ผ "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", ๋ผ์ธ 178
_error_if_any_worker_fails()
RuntimeError: DataLoader ์์
์(pid 4161)๊ฐ ์ ํธ์ ์ํด ์ข
๋ฃ๋จ: Killed.
https://github.com/Lmy0217/MedicalImaging/blob/pve/main_PVC.py#L79
ํ์ดํ ์น ๋ฒ์ : 0.4.0
๋๋ฒ๊ทธ ๋น๋ ์ฌ๋ถ: ์๋์
PyTorch ๋น๋์ ์ฌ์ฉ๋ CUDA: 9.0.176
OS: ์ฐ๋ถํฌ 16.04.4 LTS
GCC ๋ฒ์ : (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
CMake ๋ฒ์ : ๋ฒ์ 3.5.1
ํ์ด์ฌ ๋ฒ์ : 3.5
CUDA ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ: ์
CUDA ๋ฐํ์ ๋ฒ์ : ์์งํ ์ ์์
GPU ๋ชจ๋ธ ๋ฐ ๊ตฌ์ฑ: GPU 0: TITAN Xp
Nvidia ๋๋ผ์ด๋ฒ ๋ฒ์ : 384.130
cuDNN ๋ฒ์ : ๋ค์ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
/usr/lib/x86_64-linux-gnu/libcudnn.so.7.1.2
/usr/lib/x86_64-linux-gnu/libcudnn_static_v7.a
๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ :
[pip3] numpy (1.14.3)
[pip3] ํ์ดํ ์น๋น์ฆ(0.0.1)
[pip3] ํ ์น(0.4.0)
[pip3] ํ ์น ํ์ผ(0.1.0)
[pip3] ํ ์น๋น์ (0.2.1)
[conda] ์์งํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ก๋ ์์ ์ ํ๋ก์ธ์ค๊ฐ ์ ํธ์ ์ํด ์ข ๋ฃ๋์์ต๋๋ค.
@SsnL ์ด๋ป๊ฒ ํด์ผ ํ๋์?
@Lmy0217 num_workers=0
์คํ์ ์๋ํ๊ณ ๋ ๋์ ์ค๋ฅ๋ฅผ ์ ๊ณตํ๋์ง ํ์ธํ ์ ์์ต๋๋ค(ํ์ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์).
@SsnL num_workers=0
์ค์ ํ๋๋ฐ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ฐ์ดํฐ ์ธํธ __getitem__
๋ฌด์ธ๊ฐ๊ฐ ๋ค์ค ์ฒ๋ฆฌ๋ฅผ ์ข์ํ์ง ์์ต๋๋ค. ๊ฑฐ๊ธฐ์ ๋ฌด์์ด ์์ต๋๊น?
@SsnL ํ์ง๋ง num_workers=1
ํ๋ฉด ๋ด ์ฝ๋๊ฐ ์๋ํฉ๋๋ค.
๊ณ ๋ฆฝ ๋ ๋ฒ๊ทธ๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๋ค์ค ์ฒ๋ฆฌ๋ฅผ ์ข์ํ์ง ์์ ์์๋ ์ฌ์ฉ์์ ๋ฐ์ดํฐ ์ธํธ์ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ์ฌ https://discuss.pytorch.org๋ก ์ฐ๊ฒฐ
์ต๊ทผ์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
docker
๋ฅผ ์ฌ์ฉํ์ฌ PyTorch ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ฒฝ์ฐ ๋์ ํ๋ฅ ๋ก docker์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ง์ ๋ ๋ฐฐ์น ํฌ๊ธฐ๋ก ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ์ ์ถฉ๋ถ ํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ด ์ํฉ์ ๋ํ ์๋ฃจ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ด ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฐ์ง ์ฌ๋๋ค์ ๋์ธ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.:+1:
๋๋ ๊ทธ๊ฒ์ CPU์์ ์คํํ๊ณ ๋ํ ์ค๋ฅ๋ฅผ ๋ง๋ฌ์ต๋๋ค: RuntimeError: DataLoader worker (pid 6790) is killed by signal: Killed.
๋๋ @SsnL์ ๋ฐ๋ผ
๋น๋น ์ธ์คํด์ค ์: [85308 31958]
ํ
์คํธ: [ 0/5000] eta: 8:26:32 model_time: 5.8156 (5.8156) evaluator_time: 0.1168 (0.1168) ์๊ฐ: 6.0785 ๋ฐ์ดํฐ: 0.1460
์ฃฝ์
๋์์ฃผ์ธ์. ์ ๋ง ๊ฐ์ฌํฉ๋๋ค.
num_workers=0์ผ๋ก ์ค์ ํด๋ "Killed"๋ผ๋ ์ ๋ณด๋ง ๋จ๊ธฐ๊ณ ํ๋ จ์ด ์๊ธฐ์น ์๊ฒ ์ข ๋ฃ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ฐ์ดํฐ ๋ก๋๋ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๋๋ ๋ค๋ฅธ ๋ฌธ์ ๋๋ฌธ์ธ์ง ์๊ณ ์ถ์ต๋๋ค.
๋ฐ์ดํฐ ๋ก๋๋ฅผ ๋จ๋ ์ผ๋ก ํ ์คํธํ๊ณ num_workers=0์ผ๋ก ์ค์ ํ๋๋ฐ ๋ช k ๋ฐ๋ณต ํ์ ์๊ธฐ์น ์๊ฒ ์ข ๋ฃ๋์์ต๋๋ค. ๊ทธ๊ฒ์ ms coco ๋ฐ์ดํฐ ์ธํธ์ด๊ณ ์์คํ ๋ฉ๋ชจ๋ฆฌ๋ 64GB์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๊ฐ ์๋์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ ์คํธ ๋ชจ๋ธ๊ณผ ๋์ผํ ์ค๋ฅ
๊ณ ์ ๋์ด ์๊ฑฐ๋? ์์ง ๊ฑฐ๊ธฐ ์์ด?
@SystemErrorWang ๊ฐ์ ์กฐ๊ฑด์ ๋๋ค. 252G ์ด์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ง๋ง ์ฌ์ ํ Dataloader๊ฐ ์ข ๋ฃ๋ฉ๋๋ค. htop ๋ช ๋ น์ผ๋ก ์์คํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํ๋๋ฐ num_workers= 16์ผ๋ก ์ค์ ํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ํญ์ 30G ๋ฏธ๋ง์ด์์ต๋๋ค. ๋์ปค๊ฐ ์๋ ์ฐ๋ถํฌ 18.04 ์์คํ ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ํ์คํ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๊ฐ ์๋์ด์ผ ํฉ๋๋ค. (btw, pytorch ๋ฒ์ ์ python 3.7.4์์ 1.4.0์ ๋๋ค)
๊ทธ๋์... ๊ทธ๊ฒ์ ๊ณ ์น๋ ๋ฐฉ๋ฒ?
CPU ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋๋ฆฌ๊ณ ์์ ์๋ฅผ 20๋ช ๋์ 10๋ช ์ผ๋ก ์ค์ด๋ ๊ฒ์ด ํจ๊ณผ์ ์ด์์ต๋๋ค. nn.DataParallel๊ณผ ํจ๊ป ์ฌ๋ฌ GPU๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ์๋ ์์ต๋๋ค. 2-4๊ฐ์ GPU๊ฐ ํ์ํ ํฐ ๋ชจ๋ธ์ ํ๋ จํ ๋๋ง ์ด๊ฒ์ ๋ณด์์ต๋๋ค.
์ด์ ๋ํ ๊ณต์ ์์ ์ฌํญ์ด ์์ต๋๊น? 8๊ฐ์ ์ฝ์ด์ 32GB์ ๋ฉ๋ชจ๋ฆฌ์์ ๋งค์ฐ ๊ฐ๋จํ ๋ชจ๋ธ์ ํ
์คํธํ๊ณ ์์ผ๋ฉฐ num_workers
(0 ์ ์ธ)๋ฅผ ์ผ๋ง๋ ๋ฎ๊ฒ ์ค์ ํ๋๋ผ๋ ์ฌ์ ํ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
@import-antigravity ๋ฐ์ดํฐ ์ธํธ ์ฝ๋๋ฅผ ๊ณต์ ํ ์ ์์ต๋๊น? ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ํ๊ฒฝ๊ณผ ๋ฐ์ดํฐ ์ธํธ ์ฝ๋์ ์กฐํฉ์ผ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค.
์ด๋ ์ผ๋ฐ์ ์ผ๋ก ํ๊ฒฝ๊ณผ ๋ฐ์ดํฐ ์ธํธ ์ฝ๋์ ์กฐํฉ์ผ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค.
@SsnL
๋ฌด์จ ๋ป์ด์์? ๋์ ๊ฒฝ์ฐ๋ฅผ ์ค๋ช
ํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ต์ํ์ ์๋ฅผ ์ ์ํ ์ ์์ต๋๊น?
์ด ๊ฒฝ์ฐ @SsnL ์ ๋ฐ์ดํฐ ์ธํธ๊ฐ ๋ถํฌ์์ ์ํ์ ์ถ์ถํ๋ ๊ฒ์ด์์ต๋๋ค.
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]
์ต๊ทผ์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ก์ปฌ์์ ๋ชจ๋ธ์ ์คํํ๊ณ ์์ต๋๋ค.
๊ทธ๋ฌ๋ virtualenv ๋ช ๋ น์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค์์ต๋๋ค. ๋ด ์ปดํจํฐ์ ๋ง์ ์์ ์๊ฐ ์๋ ๋ฐ์ดํฐ ๋ก๋๋ฅผ ์คํํ๊ธฐ์ ์ถฉ๋ถํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ์ด๊ฒ๊ณผ ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค.
๊ฐ์ ํ๊ฒฝ์ ์ ๊ฑฐํ๋ฉด ์ค๋ฅ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค.
์ด์ ๊ฐ์ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค์์ต๋๋ค.
virtualenv ~/env
source ~/env/bin/activate
๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ ๊ฑฐํ์ต๋๋ค.
rm -rf env
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ต๊ทผ์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
docker
๋ฅผ ์ฌ์ฉํ์ฌ PyTorch ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ฒฝ์ฐ ๋์ ํ๋ฅ ๋ก docker์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ง์ ๋ ๋ฐฐ์น ํฌ๊ธฐ๋ก ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ์ ์ถฉ๋ถ ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.์ด ์ํฉ์ ๋ํ ์๋ฃจ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ด ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฐ์ง ์ฌ๋๋ค์ ๋์ธ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.:+1: