1. Voila
1.1 프로토타입이 중요한 이유
- 모델을 개발한 후, 사람들과 테스트할 수 있는 프로토타입을 먼저 만들어보기
- 이 모델이 어떤 결과를 반환하는가?를 테스트할 수 있음
- 그러나 웹 서비스를 만드는 것은 시간이 많이 소요됨
- 익숙한 노트북에서 프로그램을 만들면 시간을 아낄 수 있음
- ipywidget과 같이 사용할 경우 간단한 대시보드를 구축할 수도 있음
- 실행할 때 저장된 Notebook 파일이 순차적으로 실행
1.2 Voila
repository https://github.com/voila-dashboards/voila
응용사례 https://voila-gallery.org/
Voila의 본래 목적 : 대시보드
R의 Shiny와 유사하며, 파이썬의 Dash와 유사한 도구
(참고) Dash는 Dash의 문법을 익혀야 하기 때문에 사용할 때 시간이 필요함
대시보드는 다양한 도구들이 존재함. Superset, Metabase, Redash, Tableau
Voila 장점
1) Jupyter Notebook 결과를 쉽게 웹 형태로 띄울 수 있음
2) Ipywidget, Ipyleaflet 등 사용 가능
3) Jupyter Notebook의 Extension 있음(=노트북에서 바로 대시보드로 변환 가능)
4) Python, Julia, C++ 코드 지원
5) 고유한 템플릿 생성 가능
6) 너무 쉬운 러닝커브
사용법
pip3 install voila
//JupyterLab 사용한다면
jupyter labextension install @jupyter-voila/jupyterlab-preview
//jupyter Notebook이나 Jupyter Server를 사용한다면
jupyter serverextension enable voila --sys-prefix
//nbextension도 사용 가능하도록 하고 싶다면 다음과 같이 설정
voila --enable_nbextensions=True
jupyter notebook --VoilaConfiguration.enable_nbextensions=True
팁
Voila는 유저별로 새로운 Notebook Kernel을 실행시키는 구조
Voila 노트북을 사용하지 않을 때 자동으로 종료해야 함
Jupyter Notebook의 Config에서 cull 옵션을 확인할 수 있음.
링크: https://jupyter-notebook.readthedocs.io/en/stable/config.html?highlight=cull_idle_timeout
idle 상태인 경우 cull(끄는 행위)
cull_interval : idle 커널을 확인할 간격(초)
cull_idle_timeout : 커널을 idle 상태로 판단할 기준(초). 이 시간동안 이벤트가 없으면 idle로 판단
voila voila_basic.ipynb --MappingKernelManager.cull_interval=60 --
MappingKernelManager.cull_idle_timeout=300
Voila 셀 타임아웃 제한
- 아무 설정을 하지 않을 경우 하나의 Cell이 30초 이상 진행되면 Timeout Error를 발생
[Voila] ERROR | Timeout waiting for execute reply (30s).
- 무거운 연산(전처리, 예측 등)에서 이슈
- Voila 실행시 인자를 주어서 타임아웃 제한 시간을 늘릴 수 있음
voila --ExecutePreprocessor.timeout=180
Jupyter Notebook 실행할 때는 다음과 같이 인자를 설정할 수 있음
jupyter notebook --ExecutePreprocessor.timeout=180
암호설정
1) Jupyter Notebook의 설정 파일 생성하기(있다면 Skip)
jupyter notebook --generate-config
2) 터미널에서 python 실행 후 아래 코드 실행
from IPython.lib import passwd
passwd()
output으로 나온 'sha1:~~~' 복사
3) 1)에서 생성된 jupyter notebook config로 진입
vi ~/.jupyter/jupyter_notebook_config.py
c.NotebookApp.password를 찾아서 우측에 복사한 sha1값을 붙여넣기
2. ipywidget
ipywidget과 같이 사용하면 인터랙티브한 효과를 줄 수 있음
2.1 ipywidget 사용법
- Slider Widget
- Text Widge
- Boolean Widget
- Selection Widge
- Dropdown
- RadioButtons
- Upload Widget
- Date Picker Widget
- Widget Events(on_click)
- Widget Events(observe)
- interact Decorator
@interact 데코레이터를 사용하면 UI 컨트롤러가 생성
함수의 인자를 받아서 UI가 생성됨
- Layout(HBox, VBox)
2.2 Ipywidget + Voila
'부스트캠프 AI Tech 2기 > 2기 Product Serving' 카테고리의 다른 글
Linux & Shell Command (0) | 2021.12.10 |
---|---|
웹 서비스 형태 - Streamlit (0) | 2021.12.09 |
머신러닝 프로젝트 라이프 사이클 (0) | 2021.12.07 |
Product Serving (0) | 2021.12.07 |
Product Serving 개론 (0) | 2021.12.07 |