새소식

부스트캠프 AI Tech 4기

[Product Serving Part.2] Voila

  • -

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: 수평으로 구성

 

728x90
Contents