개요

파이썬 쥬피터를 설치 및 실행하는 방법을 최대한 간단히 익혀 정리한다.

간단히 요약하자면 pip로 설치하고 파이썬 프로그램을 실행하면 로컬 서버로 쥬피터가 뜨는 원리이다.

이를 이용하면 아직 익숙하지 않은 텐서플로우 개발(특히 원격 서버를 통한 개발) 시 유용할듯 하여 포스팅 한다. 텐서플로우 코드를 라이브 코딩하거나 공유하기 위해서도 좋을듯 하다.

필자는 텐서플로우를 위해서만 파이썬을 사용하기 때문이지 사실 쥬피터의 장점은 텐서플로우에 국한된 얘기는 아니다. ^^

텐서플로우 기본 설치 및 개발환경 구성은 다른 포스팅으로 쉽게 따라할 수 있다.

쥬피터를 사용하면 뭐가 좋을까?

많은 분들이 글을 읽기에 앞서 궁금해할만한 것은 쥬피터를 사용하면 뭐가 좋은지일 것 같다.

아래와 같은 대상이나 상황에 좋을듯 하다.

  • 개발자가 아닌 데이터 사이언티스트가 코드를 간단히 돌려 볼 때
  • 텐서플로우 및 파이썬 문법에 익숙하지 않은 개발자
  • 코드 스니펫 또는 부연설명을 잘 정리하여 코드를 공유 할 때
  • 파이썬, 텐서플로우 개발환경에서 자유롭게 웹 브라우저 하나로 개발을 진행할 때

기본 사용법

기본 사용법은 유튜브의 동영상이 도움되는듯 하여 공유한다.

설치

파이썬2용 설치법으로 파이썬3는 pip대신 pip3를 입력하면 된다.

여담으로 필자는 텐서플로우를 사용하고 텐서플로우를 virtualenv환경으로 설치하였기 때문에 필자의 virtualenv환경에서 쥬피터를 설치하였다.

$ pip install jupyter

쥬피터용 패스워드 생성하기

로컬 혹은 원격으로 서버를 띄우기 때문에 최소한의 보안을 위해 실행되는 쥬피터 사이트에서 패스워드 인증을 하게 만든다. 이를 위해 필요한 SHA 암호화 패스워드를 생성하기 이해 아래와 같이 passwd.py파일을 만들어 실행한다.

passwd.py를 아래와 같이 만든다.

from notebook.auth import passwd
print(passwd())

이제 만든 passwd.py를 실행하면 생성된 암호를 확인할 수 있다.

$ python passwd.py

쥬피터용 패스워드 설정하기

위에서 만든 패스워드를 설정파일에서 바꾸어 보자.

$ jupyter notebook --generate-config # 쥬피터 환경설정 파일 생성
$ vi ~/.jupyter/jupyter_notebook_config.py

jupyter_notebook_config.py파일에서 아래의 변수에 위에서 생성한 암호화된 패스워드를 넣어준다.

c.NotebookApp.password = u'sha1:이런형식을집어넣는다.'

쥬피터 실행

쥬피터를 실행한다. 가급적 내가 사용할 워킹 디렉토리에서 실행하면 좋을듯 하다.

필자는 텐서플로우용 virtualenv에 쥬피터를 설치하고 텐서플로우 작업 디렉토리에서 쥬피터를 실행하였다.

$ jupyter notebook

실행화면

패스워드를 설정했기 때문에 로그인 개념이 생긴것을 알 수 있다. 아마 로컬에서 실행시키면 로그인 된 상태에서 실행이 될것이다.

아래의 코드 예제는 모두를 위한 딥러닝 예제코드이다.

워킹 디렉토리를 탐색기형태로 볼 수있다. 쥬피터 노트북으로 만든 파일은 확장자가 ipynb(아마도 아이파이썬 노트북의 약자인듯)인데 이를 하나 실행해보자.

아래와 같이 코드블럭별로 코드 및 실행결과가 아래에 깔끔하게 출력된것을 확인 할 수 있다.

기능 간단히 살펴보기 #1 : 마크다운, 코드블럭 생성 및 즉시 출력

마크다운으로 설명을 추가하고 코드를 생성하여 블럭별로 실행해볼 수 있다.

기능 간단히 살펴보기 #2 : 차트 생성 및 이미지 첨부

예를 하나 더 들어 다른 노트북 파일을 열어보면 Matplotlib의 결과가 바로 출력되는 것이나 이미지를 첨부하여 집어넣어 놓은 것을 볼 수 있다.

기능 간단히 살펴보기 #3 : 노트북 파일 공유방법

작업한 노트북 파일은 노트북 파일, 파이썬 코드, HTML 등등 공유를 할 수 있으므로 아주 유용하게 사용 할 수 있을듯 하다.

주의사항

주피터로 텐서플로우 개발 후 반드시 해당 세션을 종료시켜줘야 한다. 그렇지 않으면 sess.close()로 tf session을 닫더라도 GPU 메모리가 해당 주피터 세션 pid에 모두 할당되어 다른 세션에서 텐서플로우를 돌리려고 하면 메모리 오버플로우가 발생한다.

%%javascript
Jupyter.notebook.session.delete();

정리

쥬피터 설치 및 실행방법을 간단히 알아보았다.

쥬피터 및 아이파이썬의 장점은 웹 환경에서 코드를 실행해볼수 있고 또한 인터프리터 환경으로 코드를 짜고 바로바로 실행결과를 볼 수 있다는 장점이 있는듯 하다.

또한 마크다운, HTML 심지어 Matplotlib를 이용한 차트까지 동적으로 생성해 볼 수 있으니 개발자와 비개발자(예를 들어 데이터 과학자)들이 사용하기에 무척 좋은 환경인듯 하다.