카카오 계정과 연동하여 게시글에 달린
댓글 알람, 소식등을 빠르게 받아보세요

가장 핫한 댓글은?

본문이 수정되지 않는 박제글입니다.

Imagenet 훈련 과정에서 문제... 도움 요청합니다

2024.02.07

5

862

Imagenet을 학습하는 과정에서 문제가 있어 도움을 청합니다.

기존 깃헙에 주어진 코드를 수정하기에 앞서 문제 없이 잘 작동이 되나 확인하고자 2 epoch만 돌렸습니다.
현재 batch_size=128로 돌렸고, nvidia-smi로 중간중간 체크해보니 전체 12GiB중 약 11GiB를 사용하며, Fan은 60% 수준입니다.

학습이 잘 되다가 특정 7140/10009 phase에서 문제가 발생합니다. 10 iteration마다 log를 출력하게 되어있는데 이 문제는 batch_size=64로 절반만 가져갔을때 역시 14280/20018에서 똑같이 발생합니다.

해당 오류는 OSError라고 하며 dataloader에서 문제가 있는것 마냥 말합니다. 초반에는 해당 imagenet folder에 미처 지우지 못한 .tar파일로 인해 발생했다고 생각했습니다. 하지만 그를 삭제한 이후에도 동일한 부분에서 문제가 발생합니다. 혹시나 싶어 imagenet data의 integrity도 새 스크립트 파일에서 조사하였지만, 이상은 없는 것으로 확인되었고, disk에 결함이 있나 싶어 sudo smartctl -a /dev/nvme0n1도 체크했지만 문제 없습니다.

아예 초반부터 메모리 사용량이 11GiB이기 때문에 그로 인한 문제였음 진작에 발생했을텐데 꼭 특정 phase에서 발생합니다...

대체 어디서 문제가 발생한 건지 혹시 전에 imagenet 훈련에 참여해본 분 있으신가요ㅜㅜ

[2024-02-07 00:53:25 swin_tiny_patch4_window7_224](main.py 224): INFO Train: [0/2][7130/10009] eta 2:21:51 lr 0.000089 wd 0.0500 time 0.2385 (2.9563) loss 6.6138 (6.7709) grad_norm 2.3095 (inf) loss_scale 262144.0000 (170562.7014) mem 9281MB
[2024-02-07 00:53:50 swin_tiny_patch4_window7_224](main.py 224): INFO Train: [0/2][7140/10009] eta 2:21:19 lr 0.000089 wd 0.0500 time 0.2387 (2.9556) loss 6.4257 (6.7706) grad_norm 2.5961 (inf) loss_scale 262144.0000 (170690.9486) mem 9281MB
Traceback (most recent call last):
File "main.py", line 355, in <module>
main(config)
File "main.py", line 160, in main
loss_scaler)
File "main.py", line 187, in train_one_epoch
for idx, (samples, targets) in enumerate(data_loader):
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 681, in __next__
data = self._next_data()
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 1356, in _next_data
return self._process_data(data)
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 1402, in _process_data
data.reraise()
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torch/_utils.py", line 461, in reraise
raise exception
OSError: Caught OSError in DataLoader worker process 1.
Original Traceback (most recent call last):
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torch/utils/data/_utils/worker.py", line 302, in _worker_loop
data = fetcher.fetch(index)
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 49, in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 49, in <listcomp>
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torchvision/datasets/folder.py", line 230, in __getitem__
sample = self.loader(path)
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torchvision/datasets/folder.py", line 269, in default_loader
return pil_loader(path)
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torchvision/datasets/folder.py", line 249, in pil_loader
return img.convert("RGB")
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/PIL/Image.py", line 937, in convert
self.load()
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/PIL/ImageFile.py", line 249, in load
s = read(self.decodermaxblock)
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/PIL/JpegImagePlugin.py", line 410, in load_read
s = self.fp.read(read_bytes)
OSError: [Errno 5] Input/output error

ERROR:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1) local_rank: 0 (pid: 13931) of binary: /home/jiwoo/anaconda3/envs/swin_/bin/python
Traceback (most recent call last):
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torch/distributed/launch.py", line 193, in <module>
main()
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torch/distributed/launch.py", line 189, in main
launch(args)
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torch/distributed/launch.py", line 174, in launch
run(args)
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torch/distributed/run.py", line 755, in run
)(*cmd_args)
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torch/distributed/launcher/api.py", line 131, in __call__
return launch_agent(self._config, self._entrypoint, list(args))
File "/home/jiwoo/anaconda3/envs/swin_/lib/python3.7/site-packages/torch/distributed/launcher/api.py", line 247, in launch_agent
failures=result.failures,
torch.distributed.elastic.multiprocessing.errors.ChildFailedError:

카카오 계정과 연동하여 게시글에 달린
댓글 알람, 소식등을 빠르게 받아보세요

댓글 5개

2024.02.07

에러 나는 타이밍만 봤을 때, RAM 메모리 릭이 아닌가 싶기는 하네요.
가장 편한 방법은 그냥 중간에 모델 한번 저장해서, 프로그램을 재구동하여 저장한 모델을 재학습하는 방식으로 그냥 메모리 릭 생기는걸 감수하는 것일 것 같습니다.
구동하면서 top 같은거 입력해서, 해당 프로그램이 잡아먹는 RAM 메모리가 커지지 않는지 확인해보세요. VRAM말고 RAM이요

대댓글 2개

해당 댓글을 보려면 로그인이 필요합니다. 로그인하기

해당 댓글을 보려면 로그인이 필요합니다. 로그인하기

2024.02.07

이미지넷은 데이터셋 아닌가요? 구체적으로 어떤 모델을 학습시키시는걸까요? resnet 한번 해보시는건가? 정확히는 모르겠는데 아마 distributed 쪽에서 에러가 나는거같은데, 코드가 정확히 어떻게 되어있는진 모르겠지만 학습이 반정도 지났을때 멀티 지퓨 단에서 gradient 다 모아서 처리하는걸로 되어 있다면 그쪽 문제 인거같습니다. 싱글 지퓨쓰시는거같은데 멀티 지퓨쪽 argument가 True되있진 않나 한번 알아보세요.

근데 아마 최근코드에서는 worldsize에 따라 자동으로 자아줄거같긴한데 음... 아니면 생각보다 그냥 지나치시는 분들 많은데 github Readme에서 말하는 pytorch나 기타 라이브러리들 버젼 정확하게 맞춰주는것도 중요합니다. conda로 virtual environment만들어서 버젼 맞춰서 한번 해보세요

2024.02.07

1) data loader 옵션 shuffle=false로 한 다음에 터지는 위치 index 찾아서 해당 파일 확인
2) loss값 모으거나 할때 detach 하는지 확인
3) simple CNN + 1 gpu (distributed parallel 없이) 해도 같은 문제 생기는지 확인

댓글쓰기

게시판 목록으로 돌아가기