월간 보관물: 2019 7월

GCP 노트북 인스턴스에서 virtualenv 사용하기

구글 클라우드의 AI 플래폼에서 제공하는 노트북 인스턴스를 사용하면 주피터 노트북 기반의 연구나 실험을 편리하게 수행할 수 있습니다. 이따금 한 인스턴스에서 여러 개의 virtualenv 운영하고 싶을 때가 있습니다. 이 글에서 virtualenv 환경을 만들어 주피터 노트북과 연결하는 간단한 방법을 안내하겠습니다.

노트북 인스턴스를 만든 다음 OPEN JUPYTERLAB을 클릭하면 다음과 같은 화면이 새창으로 열립니다.

default_jupyterhub.png

노트북 인스턴스는 기본적으로 파이썬 2와 파이썬 3의 노트북 환경을 제공합니다. 시스템 전역에 설치된 파이썬을 그대로 두고 가상 환경을 만들어 연결해 보겠습니다.

먼저 인스턴스에 접속해야 합니다. jupyterlab의 Terminal이나 cloud shell을 사용해 인스턴스에 접속할 수 있습니다. 이 jupyterlab은 jupyter 계정에 연결되어 있습니다. cloud shell에서 인스턴스의 jupyter 계정으로 접속하세요. 기본 계정으로 접속했다면 jupyter 계정으로 전환하세요.

가상 환경을 만들 프로젝트 디렉토리로 이동한 후 파이썬 3 기반의 가상 환경을 만들기 위해 다음과 같은 virtualenv 명령을 실행합니다.

$ virtualenv --python python3 env

이제 다음 명령으로 가상 환경을 활성화합니다. 환경을 활성화한 후에는 시스템에 독립적으로 원하는 파이썬 패키지를 마음껏 설치할 수 있습니다.

$ source env/bin/activate

이제 만든 환경을 주피터에 연결할 차례입니다. 시스템에서 기본적으로 제공하는 주피터 커널은 다음과 같습니다.

/usr/local/share/jupyter/kernels/python2/kernel.json
/usr/local/share/jupyter/kernels/python3/kernel.json

앞에서 만든 가상 환경을 커널에 추가하는 방법은 간단합니다. 먼저 루트로 계정을 바꾼 후 kernels 디렉토리로 이동하여 원하는 이름의 디렉토리를 하나 만듭니다.

# cd /usr/local/share/jupyter/kernels
# mkdir gdl

기존 커널의 kernel.json 파일 하나를 위에서 만든 디렉토리 아래로 복사합니다.

# cp python3/kernel.json ./gdl/

복사한 kernel.json 파일에서 display_name을 원하는 이름으로 바꾸어 줍니다. argv 키 아래 리스트의 첫 번째 항목을 앞에서 만든 가상 환경의 파이썬 실행 경로로 바꿉니다.

{
  "display_name": "gdl",
  "language": "python",
  "argv": [
    "/home/jupyter/your_project/env/bin/python3",
    "-m",
    "ipykernel_launcher",
    "-f",
    "{connection_file}"
  ]
}

kernel.json 파일을 저장한 다음 jupyterlab 창을 닫고 다시 OPEN JUPYTERLAB을 클릭하여 새 페이지를 엽니다. 이제 다음처럼 gdl 환경으로 실행할 수 있는 노트북과 콘솔 메뉴가 보일 것입니다.

add_new_env

노트북 인스턴스를 바꿔가며 작업하기 번거로운 경우 간단한 설정만으로 한 인스턴스 내에서 여러 개의 파이썬 가상 환경을 실험해 보세요! 🙂

“케라스 창시자에게 배우는 딥러닝” 1~3장 공개

keras_dl_b안녕하세요. 박해선입니다. <케라스 창시자에게 배우는 딥러닝> 1~3장을 드디어 모두 블로그에 올렸습니다. 이북이 출간되고 나서 바로 작업을 재촉했어야 됐는데 이런 저런 일들이 생기다 보니 조금씩 업데이트할 수 밖에 없었습니다. 그래로 너무 늦어졌습니다. ㅠ.ㅠ

비록 늦었지만 블로그에 올린 1~3장을 재미있게 보시면 기쁠 것 같습니다. 딥러닝에 대한 기본 설명과 케라스를 사용한 신경망 예제를 살짝 맛보실 수 있습니다. <머신 러닝 교과서>는 이북이 나오면 냉큼 올리도록 하겠습니다. 🙂

즐거운 하루 되세요! 감사합니다!