[Deep Learning] CS231n 과제, Azure의 가상 Ubuntu로 진행하기.
후우... 이번에 처음으로 애저로 가상 머신을 사용하게 되었다.
그냥 VirtualBox에 Ubuntu 데스크탑 깔아서 사용하려고 했는데, 놀고 있는 애저 크레디트가 아까워서..!!!!!! 사용하게 되었다.
Azure Ubuntu로 가상머신을 사용하려면 Putty가 필요하다.
Putty는 서버에 접속할 수 있도록 해주는 도구인데, 연구실에서 몇 번 썼더니 이젠 좀 잘 쓰는 것 같다.
Azure에서 가상 컴퓨터를 만들면 처음에 동적 ip로 할당되는데 이걸 정적으로 고쳐주고,
Putty 설정에서 접속 - SSH - 터널링에 원 포트는 8000, 대상은 localhost:8888로 추가해주면 가상 컴퓨터에서 jupyter notebook에 접속할 수 있다.
Ubuntu에 pip를 통해서 numpy를 깔았는데 계속 numpy가 깔려있지 않다고 jupyter notebook에서 에러가 발생했는데, 이럴 땐 침착하게 jupyter notebook에서 numpy를 깔아버리면 된다.
그러면 금새 인식한다.
jupyter notebook에서 설치하는 방법은, 아래와 같이 코드를 입력하여 노트북 화면에서 실행하면 된다.
import sys
!{sys.executable} -m pip install numpy --user
이 코드는 python이 설치 된 위치에 numpy를 설치해주는데 --user를 붙이면 permission error를 해결할 수 있다.
참고로 numpy 위치에 다른 scipy나 matplotlib 등을 넣으면 다 설치가 가능하다. 아주 편함.
그리고, cs231n 기반의 숙제는 어떻게 진행하면 되냐면,
먼저 jupyter notebook을 통해 assignment 파일을 전체 다 업로드 해버리고,
만약 숙제 1이라면 cd assignment1을 통해 그 폴더로 이동하고,
source. env/bin/activate를 통해 virtual environment를 활성화시킨 뒤,
jupyter notebook을 실행하고, 다 끝나면 deactivate로 종료시키면 된다.
그런데 만약 assignment1 폴더에서 jupyter notebook을 실행하면 상위 폴더가 안 보인다.
왜냐하면, assignment1 폴더가 최상위 폴더로 지정되어 실행되는 것이기 때문이다.
그래서 cd 명령어를 통해 밖으로 나온 뒤 jupyter notebook을 실행하면 된다.
그리고, 원래 동적 ip 주소를 할당했을 땐 가상 머신을 껐다 킬 때마다 jupyter notebook을 접속할 때 토큰을 입력해야 했는데
정적 ip는 토큰을 처음 접속 한 번에만 입력하면 그 이후엔 절대로 입력할 일이 없다!
그래서 정적 ip가 편하다..ㅎㅎ putty에 저장해놓고 실행하기도 좋고.
아! jupyter notebook을 실행한 뒤 웹브라우저에서 접속하려면 localhost:8000을 입력하면 된다.
localhost:8888은 원래 운영체제인 윈도에 깔려있는 jupyter notebook으로 접속하도록 설정되어 있기 때문에,
맨 위에서 Putty에 localhost:8888을 8000번 포트로 이동시켜 준 것이다.
8000 이상이기만 하면 상관없는데 나는 8000을 사용한다. (치기 편해서. 8001, 8002도 물론 다 가능하다.)