Korea-Health-Datathon / KHD2020

24 stars 8 forks source link

[가이드] NSML 실행관련 FAQ #2

Open Korea-Health-Datathon opened 4 years ago

Korea-Health-Datathon commented 4 years ago

대회 운영 규칙

Q. 리더보드 제출 마감시간은 어떻게 되나요?

https://ai.nsml.navercorp.com/ranking 에서 남은 시간 및 leaderboard확인 가능합니다. ​

Q. 데이터셋은 제공 받을 수 있나요? / 데이터셋이 다운받아지지 않습니다

데이터셋은 다운되지 않으며 NSML 상에서만 이용가능합니다. 데이터셋은 개인의료정보 데이터라 다운로드 및 외부전송은 법적으로 금지되어 있습니다. ​

Q. NSML 상에서 학습중인 모델을 Submit하게되면 학습이 진행중인 세션은 정지가되나요?

각 세션은 독립된 구조여서 상호 영향을 주지 않습니다. submit세션과 학습 세션은 영향이 없으며, 학습 도중, 중간 model submit을 진행하여도 학습 세션에는 전혀 영향이 없습니다. ​

Q. 외부 데이터, pre trained 모델, 네트워크 등 사용 문의

​모든 학습은 저희 해커톤에서 주어진 데이터만 활용해야 합니다. (불가) 외부 데이터(ImageNet, MIAS Mammography 등) 및 백본(네트워크) 사용 불가 (가능) scratch 형태로만 진행 가능 하며, 주어진 학습 데이터를 이용한 data augmentation 가능 ​

Q. gpu 2개 이상 할당이 불가능한가요?

지난 대회에서는 팀당 최대 2 GPU를 제공하였으나, 이번 대회에서는 팀당 1 GPU로 제한되어 있습니다. 다만 지난 대회에서 사용하였던 P40 GPU에 비해, 이번 대회에서는 성능이 약 3배 이상 향상된 V100 GPU로 제공하고 있습니다.

실행환경

Q. nsml에서 외부 python package를 설치할 수 있나요?

A) setup.py를 통하여 추가 설치를 할 수 있습니다. 예) install_requires=[ 'visdom', 'numpy' ] ​

Q. setup.py에는 항상 #nsml로 시작해야하나요?

setup.py에 첫 줄에 있는 #nsml: ... 은 nsml에서 docker Hub에 있는 외부 Docker image를 사용할 때만 적으면 됩니다. 실제로, 샘플로 제공된 kin과 movie review 예제 중에서 한쪽만 #nsml: ... 형식을 취하고 있습니다. 이곳에 아무것도 적지 않으면, nsml은 nsml사용을 위해서 생성해둔 기본 docker image를 사용하게 됩니다. ​

Q. nsml에서 pythone이외의 lib를 사용할 방법이 있나요?

네에, 몇가지 조건을 만족하면 외부 lib를 사용할 수 있습니다. 일단, docker image를 생성하여 setup.py의 맨 위줄 #nsml: ... 형식으로 docker image의 이름을 명시하여야 합니다. 관련 내용은 아래 링크에서 참고하실 수 있습니다. https://github.com/naver/ai-hackathon-2018/blob/master/missions/tutorial.md#%EB%AA%A8%EB%8D%B8-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0

Q. NSML 실행환경이 궁금합니다.

기본 "nsml/default_ml:latest" 환경을 쓰신다면 https://ai.nsml.navercorp.com/support 여기서 확인할 수 있으며 세션 로그를 보시면 상단에 pytorch version이 출력되어서 확인 가능하십니다. ​support 페이지에 제공된거 이외 환경을 사용하고 싶으시면 아래 페이지에서 나온 방법을 통해 다른 환경을 사용 할 수 있습니다. ​

Q. 세션 실행중 kill 되거나 메모리 부족 현상이 있습니다.

할당된 메모리보다 더많은 메모리를 요구할때 위와같은 에러가 발생하면서 oom으로 죽게됩니다. https://n-clair.github.io/ai-docs/_build/html/en_US/contents/web_interface/usage_of_resources.html 보시면, GPU, CPU, CPU-RAM 사용량을 확인하실 수 있습니다. 문제가 되는 부분은 CPU-RAM 부분으로 예상됩니다. 자원을 계속 할당만 하고, 반환하지 않는 구조여서 발생할 것으로 예상됩니다.

Q. nsml에서 pip install은 어떻게 하나요?

setup.py의 install_requires에 모듈을 적으면 됩니다.

image


nsml run

Q. nsml run에서 구동할 수 있는 코드는 제약이 있나요?

nsml run시 별도 설정이 없을 경우 main.py를 기본적으로 전송하게 됩니다. 현재는 python코드만 전송 및 수행이 가능하도록 제한을 두고 있습니다. 또한 파일명 또한 .으로 시작하면 upload할 수 없도록 막혀있습니다. ​

Q. nsml run에서 'No machine available'가 나와요.

nsml에서 준비한 모든 GPU 자원을 사용중에 발생하는 메시지로, 주로 참가자가 몰리는 시간에 발생하는 경향이 있습니다. 다른 참가자의 session이 종료되면 다시 사용가능하게 되므로 보통은 10-20분 정도 후에 재실행하면 됩니다. ​

Q. session에서 최대로 사용할 수 있는 GPU 수는 얼마입니까?

이번 해커톤에서는 session당 최대 2개로 제한하고 있습니다. nsml run -g 2 ... 옵션으로 두 개의 GPU를 사용할 수 있습니다. ​

Q. submit을 했는데, leaderboard에 반영이 안됩니다.

leaderboard에 제출된 값중에서 가장 좋은 결과 1건만 보여주고 있기 때문에 leaderboard에는 표시가 안됩니다. 다만 제출한 내용은 leaderboard의 public 탭을 private으로 변경하시면 됩니다.

Q. NSML 외에 다른 서버 또는 개인서버에서 학습후 세션으로 올리는 것이 가능한가요?

개인서버에서 학습후에 세션으로 올리는방법은 금지되어있습니다. ​해당세션의 워커수를 줄여서 다시 시도해 보시기 바랍니다.

Q. nsml 이용해서 만든 모델을 제가 로컬에 다운로드 가능한가요?

현재 공식적으로 모델을 다운받는건 지원하고 있지 않습니다. ​

Q. run_nsml.sh 실행시 총 파일 수가 100개를 넘을 수 없다는 에러 메시지가 나옵니다.

nsml run 할때 main.py가 있는 파일과 폴더 전체를 올리게 되는데요, 그 파일 전체의 개수가 100개이상일때 발생하는 에러입니다. (폴더가 있다면 폴더하위까지 탐색하면서 전체올리게 됩니다) main.py와 같은 위치에 .nsmlignore파일을 만들어서 제외하고 싶은 파일, 폴더 이름을 적으면 run할때 해당 파일과 폴더는 제외시키고 업로드하게 됩니다.(.gitignore와 비슷하게 동작합니다)

Q. NSML 상에서 이미 학습된 세션의 모델을 다시 불러와서 학습할 수 있는 방법이 있나요?

nsml.load 기능을 사용하시면 손쉽게 가능합니다. 형식은 nsml.load(checkpoint='best',session="세션이름") 입니다 ​

Q. 세션을 돌리던 중, 데이터셋 읽는 과정에서 connection reset by peer에러가 발생했습니다.

pytorch의 multiporcess 처리 관련 코드에서 발생한 에러로 보입니다.

Q. 좀비 세션을 삭제하고 싶습니다.

좀비세션에 대해서는 terminal에서 nsml rm -f team(번호)/sr-hack-2019-dataset/(세션) 으로 하시면 삭제 가능하십니다. ​

nsml submit

Q. NSML submit 을 할 경우에는 cpu를 변경이 가능한가요?

submit 을 할 경우에는 cpu를 변경할수가 없습니다. ​

Q. nsml submit을 하면 main.py 에 있는 bind_model, nsml.paused 코드에서 test set에 대해 evaluate을 한 후 세션이 끝나는 건가요?

bind_model, nsml.bind에 arguments로 넘겨진 load, infer함수를 실행 후에 종료됩니다. ​

Q. NSML Submit 할때 internal server error 가 발생합니다.

nsml submit -t 로 하시면 에러 로그를 확인하실 수 있습니다. ​

hoon9405 commented 3 years ago

Pretrain 모델 대회에서 사용가능하다고 공지가 나왔는데 여기 있는 FAQ에서는 사용 불가라고 나와있습니다 어느 것이 맞나요?

Korea-Health-Datathon commented 3 years ago

pre trained model 사용가능합니다.

dahyedahye commented 3 years ago

pre trained model이 사용 가능하다는 뜻은 "외부 데이터(ImageNet, MIAS Mammography 등) 및 백본(네트워크)" 또한 사용 가능하다는 것이 맞나요?