AI-GrandChallenge / round-1

14 stars 11 forks source link

[참고] Example code 실행 화면, 터미널 output #14

Open bluebrush opened 4 years ago

bluebrush commented 4 years ago

NSML CLI download 및 login 과정 (공통)

ubuntu16@ubuntu16-VirtualBox:~$ mkdir nsml-cli

ubuntu16@ubuntu16-VirtualBox:~$ cd nsml-cli/

ubuntu16@ubuntu16-VirtualBox:~/nsml-cli$ wget https://github.com/n-CLAIR/nsml_client-hack/raw/master/nsml_client.linux.amd64.hack.tar.gz
--2020-07-27 17:15:20--  https://github.com/n-CLAIR/nsml_client-hack/raw/master/nsml_client.linux.amd64.hack.tar.gz
Resolving github.com (github.com)... 15.164.81.167
접속 github.com (github.com)|15.164.81.167|:443... 접속됨.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.githubusercontent.com/n-CLAIR/nsml_client-hack/master/nsml_client.linux.amd64.hack.tar.gz [following]
--2020-07-27 17:15:20--  https://raw.githubusercontent.com/n-CLAIR/nsml_client-hack/master/nsml_client.linux.amd64.hack.tar.gz
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.108.133
접속 raw.githubusercontent.com (raw.githubusercontent.com)|151.101.108.133|:443... 접속됨.
HTTP request sent, awaiting response... 200 OK
Length: 4574749 (4.4M) [application/octet-stream]
Saving to: ‘nsml_client.linux.amd64.hack.tar.gz’

nsml_client.linux.amd64.hack.tar.gz                100%[================================================================================================================>]   4.36M  6.80MB/s    in 0.6s    

2020-07-27 17:15:23 (6.80 MB/s) - ‘nsml_client.linux.amd64.hack.tar.gz’ saved [4574749/4574749]

# 압축 풀기.
ubuntu16@ubuntu16-VirtualBox:~/nsml-cli$ tar xvpf nsml_client.linux.amd64.hack.tar.gz 
nsml
README.hack.txt
LICENSE-THIRD-PARTY.txt
examples-hack/
examples-hack/empty

# nsml login 명령 실행
ubuntu16@ubuntu16-VirtualBox:~/nsml-cli$ ./nsml login
INFO[2020/07/27 17:15:32.700] connecting to ai-cli.nsml.navercorp.com:443  
GitHub Username: bluebrush
GitHub Password: ********
INFO[2020/07/27 17:15:39.606] Welcome to NSML!                             

#login 상태
ubuntu16@ubuntu16-VirtualBox:~/nsml-cli$ 

TRACK 1 진행 과정 NSML login 상태에서 아래 명령 실행.

# git에서 code clone
ubuntu16@ubuntu16-VirtualBox:~/nsml-ai/baseline/t1$ git clone https://github.com/AI-GrandChallenge/round-1.git
'round-1'에 복제합니다...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 15 (delta 0), reused 9 (delta 0), pack-reused 0
오브젝트 묶음 푸는 중: 100% (15/15), 완료.
ubuntu16@ubuntu16-VirtualBox:~/nsml-ai/baseline/t1$ ~/nsml-ai/nsml ps
Name              Created      Args                   Status    Summary    Description                 # of Models    Size     Type
----------------  -----------  ---------------------  --------  ---------  --------------------------  -------------  -------  ------------
nsmlteam/tr-1/11  2 hours ago  --mode test --pause 1  Running              submit of nsmlteam/tr-1/10  1              42.7 MB  submit(test)

ubuntu16@ubuntu16-VirtualBox:~/nsml-ai/baseline/t1$ cd round-1/
ubuntu16@ubuntu16-VirtualBox:~/nsml-ai/baseline/t1/round-1$ ls
README.md  iitp_falling
ubuntu16@ubuntu16-VirtualBox:~/nsml-ai/baseline/t1/round-1$ cd iitp_falling/
ubuntu16@ubuntu16-VirtualBox:~/nsml-ai/baseline/t1/round-1/iitp_falling$ ls
README.md  data_loader.py  data_local_loader.py  evaluation.py  main.py  setup.py

#nsml run 
ubuntu16@ubuntu16-VirtualBox:~/nsml-ai/baseline/t1/round-1/iitp_falling$ ~/nsmlkr/nsml  run -d tr-1 -e main.py --memory 16G
INFO[2020/07/27 16:38:23.134] .nsmlignore check - start                    
INFO[2020/07/27 16:38:23.135] .nsmlignore check - done                     
INFO[2020/07/27 16:38:23.254] file integrity check - start                 
INFO[2020/07/27 16:38:23.254] file integrity check - done                  
INFO[2020/07/27 16:38:23.254] README.md 1.8 KiB - start                    
INFO[2020/07/27 16:38:23.254] README.md 1.8 KiB - done (1/6 16.67%) (1.8 KiB/13 KiB 13.72%) 
INFO[2020/07/27 16:38:23.254] data_loader.py 1.3 KiB - start               
INFO[2020/07/27 16:38:23.255] data_loader.py 1.3 KiB - done (2/6 33.33%) (3.1 KiB/13 KiB 23.28%) 
INFO[2020/07/27 16:38:23.255] data_local_loader.py 1.8 KiB - start         
INFO[2020/07/27 16:38:23.255] data_local_loader.py 1.8 KiB - done (3/6 50.00%) (4.9 KiB/13 KiB 37.01%) 
INFO[2020/07/27 16:38:23.255] evaluation.py 2.5 KiB - start                
INFO[2020/07/27 16:38:23.255] evaluation.py 2.5 KiB - done (4/6 66.67%) (7.4 KiB/13 KiB 55.46%) 
INFO[2020/07/27 16:38:23.255] main.py 5.8 KiB - start                      
INFO[2020/07/27 16:38:23.255] main.py 5.8 KiB - done (5/6 83.33%) (13 KiB/13 KiB 98.84%) 
INFO[2020/07/27 16:38:23.255] setup.py 159 B - start                       
INFO[2020/07/27 16:38:23.255] setup.py 159 B - done (6/6 100.00%) (13 KiB/13 KiB 100.00%) 
......
Building docker image. It may take a while
.......
Session nsmlteam/tr-1/15 is started

# run 실행 결과로 session ID 생성되었음
# 이후 해당 session ID로 계속 사용
# nsml logs 명령으로 상태 확인
ubuntu16@ubuntu16-VirtualBox:~/nsml-ai/baseline/t1/round-1/iitp_falling$ ~/nsmlkr/nsml logs nsmlteam/tr-1/15
INFO[2020/07/27 16:38:51.664] ****************************************************************************** 
INFO[2020/07/27 16:38:51.665] * Interactive session will be terminated automatically after 30 minutes      * 
INFO[2020/07/27 16:38:51.665] * If you don't want to see this message, please use --hide-client-log option * 
INFO[2020/07/27 16:38:51.665] ****************************************************************************** 
weight file model.pth is not exist.
=> random initialized model will be used.
saved
User session exited

# nsml model ls 명령으로 저장된 model 확인
ubuntu16@ubuntu16-VirtualBox:~/nsml-ai/baseline/t1/round-1/iitp_falling$ ~/nsmlkr/nsml model ls nsmlteam/tr-1/15
Checkpoint    Last Modified    Elapsed    Summary            Size
------------  ---------------  ---------  -----------------  -------
model         seconds ago      0.000      number_of_files=1  42.7 MB

#[옵션, skip하여도 됨] nsml 테스트 submit으로 문제 확인 가능.
ubuntu16@ubuntu16-VirtualBox:~/nsml-ai/baseline/t1/round-1/iitp_falling$ ~/nsmlkr/nsml submit -t nsmlteam/tr-1/15 model
.......
Building docker image. It may take a while
...........load nsml model takes 0.35821986198425293 seconds

Session nsmlteam/tr-1/16 is started
.Infer test set. The inference should be completed within 3600 seconds.
.Infer test set takes 10.169454336166382 seconds
.

# nsml submit 명령으로 leaderboard 제출 시작
ubuntu16@ubuntu16-VirtualBox:~/nsml-ai/baseline/t1/round-1/iitp_falling$ ~/nsmlkr/nsml submit nsmlteam/tr-1/15 model
.......
Building docker image. It may take a while
...........load nsml model takes 0.38019299507141113 seconds
.Infer test set. The inference should be completed within 3600 seconds.
.Infer test set takes 1140.482309103012 seconds
...
Score: 0.0
Done
blackCmd commented 4 years ago

nsml submit nsmlteam/tr-1/15 model 을 하게 되면 현재 pwd에 있는 모든 파일들이 업로드 되는것입니까?

bluebrush commented 4 years ago

nsml run에서만 pwd가 upload되는 것으로 알고있습니다. .nsmlignore를 통해서 올리고 싶지 않은 파일/디렉토리를 filter하실 수 있습니다. submit과정에서는 nsml storage(cloud)에 저장된 model의 tag(checkpoint)를 통해서 진행됩니다.

blackCmd commented 4 years ago

nsml run에서만 pwd가 upload되는 것으로 알고있습니다. .nsmlignore를 통해서 올리고 싶지 않은 파일/디렉토리를 filter하실 수 있습니다. submit과정에서는 nsml storage(cloud)에 저장된 model의 tag(checkpoint)를 통해서 진행됩니다.

아하 그렇군요 그럼 현재 pwd를 업로드하려면 어떻게 해야할까요? run에 대한 어떠한 가이드도 이 깃허브에선 찾지 못했습니다. 위 코드에서도 마찬가지구요

bluebrush commented 4 years ago

nsml run하실때, 자동으로 pwd가 NSML로 upload됩니다. 모든 소스코드와 하위 디렉토리가 함께 nsml로 전송되며, 이때 전체 크기의 제한이 있습니다. model을 nsml cloud로 전송하기 위한 한가지 방법은 nsml run하실때, pwd에 파일/디렉토리를 넣고, 실행하시고, main.py에서 해당 파일을 load한 후, nsml save를 통해서 nsml cloud storage로 보내시면 됩니다. 이과정은 sampel code에서 참조하실 수 있습니다.

blackCmd commented 4 years ago

nsml run하실때, 자동으로 pwd가 NSML로 upload됩니다. 모든 소스코드와 하위 디렉토리가 함께 nsml로 전송되며, 이때 전체 크기의 제한이 있습니다. model을 nsml cloud로 전송하기 위한 한가지 방법은 nsml run하실때, pwd에 파일/디렉토리를 넣고, 실행하시고, main.py에서 해당 파일을 load한 후, nsml save를 통해서 nsml cloud storage로 보내시면 됩니다. 이과정은 sampel code에서 참조하실 수 있습니다.

하나씩 이해가 되고 있습니다. 빠른 답장감사합니다. run에 대한 코드 샘플 코드를 알려주실 수 있을까요? 또한 위의 코드가 main.py를 수정하는것에 대한 샘플코드는 아닌거같은데 샘플코드는 어디서 확인가능할까요?

caffeinism commented 4 years ago

혹시 세션 크기가 300MB로 제한된거는 의도된 건가요?

bluebrush commented 4 years ago

@blackCmd 님, 이번 대회에서는 각자 학습하신 model을 제출하는 것으로 정해져있습니다 (대회규정). 그래서, sample코드는 submit과정에 필요한 과정만 담고 있습니다. train에 대한 sample을 제공되지 않으며, train이 끝나고 model file이 있을 때 또는 weight를 random으로 init하고, 이것을 nsml에 저장고, submit하는 sample code를 제공하고 있습니다.

bluebrush commented 4 years ago

@caffeinism 님, nsml run할때, 함께 upload되는 크기는 제한되고 있습니다. 이러한 이슈로 pre-train 모델을 CLI를 통해서 upload할때는 크기의 제한을 받게 됩니다(네트웍/저장소이슈). 이 범위를 넘어선 pre-train model을 사용하기 session내부에서 wget같은 방식으로 model을 받거나, docker image build하는 방식으로 진행가능합니다.