[Prototyping] Voila: Notebook으로 간단한 프로토타입 만들기

whatSup CheatSheet·2022년 8월 31일
1

Intro

다음 두 경우가 있다고 가정해봅시다.

  • Case A
    • 데이터 분석가 Sup이는 몇 주 동안 고생하여 데이터에서 훌륭한 인사이트를 찾아내었습니다.
    • 이제 Sup이는 이 훌륭한 인사이트를 모든 직원들(데이터를 다루지 않는 직군 포함)에게 효과적으로 전달하고자 합니다.
    • 그러나 Sup이에겐 해야 할 업무가 많아, 시각화 자료를 만드는 데 시간을 충분히 할애 할 수 없는 상황입니다.
  • Case B
    • 머신러닝 엔지니어 Sup이가 소속되어 있는 ML팀에서 새로운 머신러닝 프로젝트를 진행하려고 합니다.
    • 마침 Sup이에게 좋은 아이디어가 여러 개 있네요! Sup이는 신나게 notebook으로 아이디어에 대한 실험을 완료하였습니다.
    • 이제 Sup이는 이 아이디어들을 소속된 팀 동료뿐 아니라 개발을 잘 모르는 동료들에게까지 검증받고자 합니다.

Voila는 위와 같은 상황에서 Sup이에게 가장 좋은 대안이 될 수 있습니다. Sup이는 Voila를 통해, 이미 작성된 Notebook으로 빠르게 대시보드를 생성하거나, 프로토타입을 만들어낼 수 있습니다.

Voila란?


Voila는 Jupyter Notebook을 독립실행형 웹 애플리케이션으로 전환해주는 라이브러리입니다.

Voila를 사용하는 이유

1. 사용성


위 표는 다양한 대시보드 도구들을 비교한 표입니다.

  • Maturity: 프로젝트의 안정성을 기준으로 합니다.
  • Popularity: 프로젝트의 GirHub Star 등이 기준입니다.
  • Simplicity: 라이브러리 사용이 얼마나 쉬운지가 기준입니다.
  • Adaptability: 라이브러리가 얼마나 유연하게 적용될 수 있는지를 기반으로 합니다.
  • Focus: 라이브러리가 주로 해결하고자 하는 문제를 의미합니다.

Voila는 다른 도구들에 비해서 굉장히 단순하고, 사용하기 용이합니다.
비슷한 사용성에 Streamlit도 있지만, Volia는 기존 작성된 Jupyter Notebook을 베이스로 대시보드를 생성하기 때문에 더더욱 단순합니다. 물론, 더 단순한 만큼 Streamlit보다 유연하지 못하다는 단점도 존재하지만 Notebook 환경에 익숙한 Intro의 Sup이와 같은 상황에서는 최고의 대안이 될 수 있습니다.

2. 인터렉티브한 시각화


Ipywidget, Ipyleaflet 등을 통해 인터렉티브한 시각화가 가능합니다.

3. Jupyter Notebook Extension 지원


Jupyter Notebook에서 Extension을 지원하기 때문에, 노트북에서 손쉽게 대시보드로 전환시킬 수 있습니다.

Voila 사용해보기

설치 및 테스트 코드 작성

먼저, Voila를 설치해줍니다.

# conda
>> conda install -c conda-forge voila

# pip
>> pip3 install voila

테스트를 위해 간단한 test.ipynb을 생성해줍니다.

Voila 실행

(1) CLI에서 voila로 test.ipynb을 실행시켜 봅시다.

>> voila test.ipynb

  • 위 그림과 같이 렌더링 된 결과가 보이게 됩니다.
  • localhost:8866에서 확인할 수 있습니다.

(2) 주피터 서버를 확장하여 voila를 실행시켜 봅시다.

  • jupyter serverextension enable voila --sys-prefix 명령어를 통해 노트북 서버 확장이 가능하도록 설정합니다.
    • JupyterLab 사용 시, jupyter labextension install @jupyter-voila/jupyterlab-preview 으로 설정할 수 있습니다.
  • Jupyter Notebook이 돌아가고 있는 localhost:8888 서버에서 /voila를 입력하여 다음과 같이 voila에 접속할 수 있습니다.

(3) Jupyter Notebook에서 nbextension으로 바로 실행시켜 봅시다.

  • nbextension을 위해 다음과 같이 명령어를 입력합니다.
    • voila --enable_nbextensions=True
    • jupyter notebook --VoilaConfiguration.enable_nbextensions=True
  • Jupyter Notebook을 실행시켜보면, 다음과 같이 voila 버튼이 활성화된 것을 알 수 있습니다.
  • 버튼을 클릭하면, voila로 넘어갑니다.

Voila 사용 Tip

코드를 포함하여 렌더링

  • --strip_sources=False와 함께 실행하면 Voila에서 코드도 함께 볼 수 있습니다.

>> voila test.ipynb --strip_sources=False

cull 옵션 변경

  • Voila는 유저별로 새로운 Notebook Kernel을 실행시키는 구조입니다. Voila 노트북을 사용하지 않을 땐(idel상태) 자동으로 종료(cull)되어야 합니다.
  • Jupyter Notebook의 Config에서 cull옵션을 확인할 수 있습니다.
    • cull_interval : idle 커널을 확인할 간격(초)
    • cull_idle_timeout : 커널에 해당 시간동안 이벤트가 없으면 idle로 판단함(초)
    • ex) >> voila test.ipynb --MappingKernelManager.cull_interval=60 --MappingKernelManager.cull_idle_timeout=300
      -> idle 커널을 60초 간격으로 확인 & 커널이 300초 동안 이벤트가 없으면, idle로 판단

셀 타임아웃 제한

  • Voila는 기본적으로 하나의 Cell이 30초 이상 진행되면 Timeout Error를 발생시킴
    • 연산이 오래걸리는 task에서 이슈가 발생할 수 있음
  • --ExecutePreprocessor.timeout=180으로 타임아웃 제한을 변경할 수 있음.

Reference

profile
AI Engineer : Lv 0

0개의 댓글