Notebook 베이스로 Voila 프로토타입 만들기
모델 개발 과정
Jupyter Notebook에서 함수를 작성한 후, 예측 함수를 실행하며 성능 확인
→ 혼자 확인할 때는 괜찮은데 동료와 함께 보면서 이야기하려면?
→ 각자 노트북 환경에서 실행해야하기때문에 라이브러리의 의존성 문제와 환경 설정 세팅이 필요하다.
⇒ 웹 서비스를 만드는 것은 시간이 많이 소요되고, 익숙한 노트북에서 프로그램을 만들면 시간을 아낄 수 있음
⇒ voila
다양한 대시보드(Superset, Metabase, Redash)는 모두 서버에 제품을 설치한 후 연동시켜야 한다.(=개발 리소스 필요, 유지보수 필요)
Voila는 Notebook에서 별도의 코드 추가 없이 프로토타입을 쉽게 만들 수 있는 것이 강점이다.
Voila 환경 세팅
conda install nodejs
conda install -c conda-forge voila
pip install nodejs
pip install voila
jupyter Notebook이나 jupyter Server를 사용한다면
jupyter serverextension enable voila --sys-prefix
nbextension도 사용 가능하도록 하고 싶다면
voila --enable_nbextensions=True
jupyter notebook --VoilaConfiguration.enable_nbextensions=True
CLI 환경에서 실행 시 8866 포트로 열림
voila <실행할 노트북파일명.ipynb>
Voila 사용 시 TIP
코드도 함께 보여주고 싶다면 --strip_sources=False와 함께 실행
voila voila_basic.ipynb --strip_sources=False
Voila는 노트북을 사용하지 않을 때 자동 종료를 해야한다.
cull_interval : idle 커널을 확인할 간격(초)
cull_idle_timeout : 커널을 idle 상태로 판단할 기준(초) 이 시간동안 이벤트가 없으면 idle로 판단
voila voila_basic.ipynb --MappingKernelManager.cull_interval=60 --MappingKernelManager.cull_idle_timeout=300
Voila 타임아웃 제한 시간 설정
Voila는 30초 이상 진행되면 Timeout Error가 발생하므로 무거운 연산에서 Error가 발생할 수 있다.
voila --ExecutePreprocessor.timeout=180
ipywidget
ipywidget은 인터랙티브한 효과를 줄 수 있다.
import ipywidgets as widgets
from IPython.display import display
Slider Widget
IntSlider / FloatSlider
IntRangeSlider
값 접근 방법
Text Widget
BoundedIntText / IntText
Text / Textarea / Password
Boolean Widget
ToggleButton
CheckBox
Selection Widget
Dropdown
RadioButtons
FileUpload Widget
Image Widget
DatePicker Widget
Widget Events
on_click
observe
위젯의 값이 변경되는 것을 감지해서 특정 함수를 실행하고 싶은 경우
@interact Decorator
@interact 데코레이터를 사용하면 UI 컨트롤러가 생성
함수의 인자 중 하나는 고정하고 싶고 UI에 나타나지 않기를 원한다면 fixed 사용
Layout
HBox / VBox
VBox: 수직으로 구성
HBox: 수평으로 구성