0. 강의 소개
Part2에 오신 것을 환영합니다!
Part1에서는 전체적인 내용에 대해서 개념적으로 훑어보는 시간을 가졌다면, Part2부터는 실질적으로 프로그래밍을 하게됩니다.
이번 강의에서는 저희가 가장 익숙한 노트북 환경에서 간단하게 프로토타이핑을 할 수 있는 Voila에 대해서 배워보도록 하겠습니다.
1. Voila
1.1 프로토타입이 중요한 이유
- 라이브러리의 의존성, 테스트를 위해 추가 환경 설정이 필요
- 개발을 잘 모르는 분에게 테스트 요청할 경우 어려움이 있을 수 있음
- HTML로 추출할 수 있지만, … 용량에 따라 느려질 수 있음
- 이 모델이 어떤 결과를 반환할지 테스트 가능
- 익숙한 노트북에서 진행시 시간절약 가능
- ipywidget을 통해 간단한 대시보드 구축 가능
- 실행시 저장된 Notebook 파일이 순차적으로 실행
- 이럴때, 사용할 수 있는 도구 -> Voila
1.2 Voila
- https://github.com/voila-dashboards/voila
- 예시
- 다양한 도구들이 존재
- Superset, Metabase, Redash, Tableau
- 다만 위 도구는 모두 서버에 제품을 설치한 후 연동이 필요
- 대부분 SQL 베이스의 시각화
- Notebook에서 별도의 코드 추가 없이 실행할 수 있는 점이 Voila의 강점
- Jupyter Notebook 결과를 쉽게 웹 형태로 띄울 수 있음
- Ipywidget, Ipyleaflet 등 사용 가능
- Jupyter Notebook의 Extension 있음(=노트북에서 바로 대시보드로 변환 가능)
- Python, Julia, C++ 코드 지원
- 고유한 템플릿 생성 가능
- 너무 쉬운 러닝커브
- 참고
- https://blog.jupyter.org/voil%C3%A0-is-now-an-official-jupyter-subproject-87d659583490
1.3 Voila 사용하기
- 설치하기
- 라이브러리 설치
pip install voila
- Jupyter lab을 사용한다면
jupyter labextension install @jupyter-voila/jupyterlab-preview # Notebook이나 Server를 사용하면 jupyter serverextension enable voila --sys-prefix
- nbextension도 사용 가능하도록 하고 싶다면 다음과 같이 설정
voila --enable_nbextensions=True jupyter notebook --VoilaConfiguration.enable_nbextensions=True
- 라이브러리 설치
- Jupyter Lab을 실행시키고 좌측 아래 버튼을 확인하면 Enable이 보임
2. ipywidget
2.1 ipywidget 사용법
- ipywidget과 같이 사용하면 인터랙티브한 효과를 줄 수 있음
- ipywidget도 Notebook 프로젝트
- 참고
- widget 종류
- import 부분
- 정수형 슬라이더(FloatSlider, IntRangeSlider)
- value : Default 값
- step : 한번에 이동할 단계
- orientation : 수직, 수평선
- description : Slider의 Label
- Bounded : 범위가 주어진 Text
- String Text 위젯
- ToggleButton
- button_style : 버튼의 스타일
- icon : 사용하는 아이콘
- CheckBox
- Dropdown, RadioButtons
- 파일을 업로드하는 Widget
- Image를 보여주는 Widget
- Date를 선택하는 Widget
- import 부분
- 특수 이벤트
- 버튼이 클릭되었을 때, 어떤 함수가 동작하길 원하는 경우, on_click 인자에 함수를 넘겨주면 됨
- 위젯의 값이 변경되는 것을 감지해서 특정 함수를 실행하고 싶은 경우, observe 인자에 함수를 넘기면 됨
- @interact 데코레이터를 사용하면 UI 컨트롤러가 생성
- 만약 함수의 인자 중 하나는 고정하고 싶고, UI에서 나타나는 것을 원하지 않는 경우 fixed를 사용할 수 있음
- Layout
- 위젯의 레이아웃을 구성하고 싶은 경우 HBox, VBox를 사용
- VBox : 수직으로 구성(세로)
- HBox : 수평으로 구성(가로)
- 위젯의 레이아웃을 구성하고 싶은 경우 HBox, VBox를 사용
2.2 ipywidget + Voila
- ipywidget에서 Voila를 클릭하면 렌더링이 된 화면을 볼 수 있음
3. Special Mission
- Jupyter Notebook으로 만든 마스크 분류 모델을 Voila로 띄워보기
- ipywidget 공식 문서 읽어보기
- 데이터 시각화 파트에서 배운 내용과 ipywidget을 사용해 인터랙티브한 대시보드 만들기
Reference
- AI boot camp 2기 서빙 강의