모델을 개발한 후, 다른 사람들과 테스트하며 이야기하고자할 때 각자의 노트북 환경에서 따로 확인할 경우 추가적인 환경 설정이 요구됨
개발한 모델을 별도의 환경설정이나 웹서비스 구현 없이 간단하게 프로토타입을 확인할 수 있는 프로그램이 필요함
노트북 환경에서 바로 프로토타입으로 만들어주는 도구
추가적인 코드 없이 클릭만으로 실행 가능
Ipywidget 등과 함께 사용 시 간단한 대시보드 구축 가능
설치 : pip3 install voila
주피터랩 : jupyter labextension install @jupyter-voila/jupyterlab-preview
주피터노트북/서버 : jupyter serverextension enable voila --sys-prefix
CLI : voila(localhost:8866)
localhost: localhost:8888/voila
셀뿐만 아니라 코드도 보기 : voila
voila_basic.ipynb --strip_sources=False
cull_interval : idle 커널을 확인할 간격(초)
cull_idle_timeout : 커널을 idle 상태로 판단할 기준(초). 이 시간동안 이벤트가 없으면 idle로 판단
voila voila_basic.ipynb --MappingKernelManager.cull_interval=60
--MappingKernelManager.cull_idle_timeout=300
셀 타임아웃 제한 : voila --ExecutePreprocessor.timeout=180(jupyter notebook --ExecutePreprocessor.timeout=180)
extension 여러 개 사용 : voila your_notebook.ipynb --enable_nbextensions=True
(jupyter notebook --ExecutePreprocessor.timeout=180
--VoilaConfiguration.enable_nbextensions=True
)
Jupyter Notebook의 passwd 사용해 암호 지정도 가능
import ipywidgets as widgets
from IPython.display import display
Slider
Text widget
Boolean widget
Selection widget
Upload widget
Image widget
Date picker widget
Widget events
Interact decorator
Layout(HBox,VBox)
Voila : 렌더링된 화면 보여줌
...
프로토타입을 위해 Voila을 사용해도 대시보드처럼 레이아웃 잡기는 어려움
그렇다고 정식 웹 개발은 시간 효율적이지 않고, 다른 조직과 협업 필요한 경우도 있음

이외에 R의 shiny 등도 존재
제공하는 다양한 Component를 이용해 대시보드 UI 구성 가능
Streamlit Cloud로 쉽게 배포 가능
화면 녹화 기능
pip3 install streamlit
(CLI)
streamlit run steramlit-basic.py
Text(title/header/subheader/write)
Button
Check box
Pandas Dataframe, Markdown
Metric, JSON
Chart(Line, Map, etc)
Radio Button, (Multi)Selelct box
Slider
Input box, Caption, Code, Latex
Sidebar
Columns
Expander
Spinner
Ballons
Status box
form
File Uploader
...

코드 수정이나 위젯 상호작용 시 전체 streamlit 코드가 다시 실행되어 중복 이벤트 실행 못하는 등 한계
Sesion State를 통해 Global Variable처럼 활용
