일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Bart
- Transformer
- 현대자동차
- RNN
- dataset
- ODQA
- seaborn
- word2vec
- nlp
- KLUE
- AI Math
- Attention
- N2N
- mrc
- passage retrieval
- Self-attention
- 데이터 시각화
- Data Viz
- matplotlib
- 2023 현대차·기아 CTO AI 경진대회
- AI 경진대회
- Optimization
- pyTorch
- N21
- Ai
- 데이터 구축
- GPT
- 기아
- 딥러닝
- Bert
- Today
- Total
쉬엄쉬엄블로그
(AI 서비스 개발 기초) Notebook 베이스 - Voila 본문
이 색깔은 주석이라 무시하셔도 됩니다.
Part 2. 프로토타입부터 점진적으로 개선하기
Notebook 베이스 - Voila
Notebook 베이스로 프로토타입 만들기
모델 개발 과정
- Jupyter Notebook에서 함수를 작성한 후, 예측 함수를 실행하며 성능 확인
혼자 확인할 땐 위와 같이 진행해도 괜찮으나, 동료들과 함께 보면서 이야기할 때는?
- 각자 노트북 환경에서 실행…
- ModuleNotFoundError: No module named ‘…’
- 라이브러리의 의존성
- 테스트를 위해 추가 환경 설정이 필요
- 개발을 잘 모르는 분에게 테스트 요청할 경우엔 이 부분을 어려워 할 수 있음
- 혹은 nbconvert를 사용해 HTML으로 추출할 수도 있음
- ⇒ 인터랙티브하게 조작하긴 어려우며, 이미지 용량 등에 따라 느려질 수 있음
- 각자 노트북 환경에서 실행…
모델을 개발한 후, 사람들과 테스트할 수 있는 프로토타입을 먼저 만들어보기
이 모델이 어떤 결과를 반환하는가?를 테스트할 수 있음
그러나 웹 서비스를 만드는 것은 시간이 많이 소요됨
익숙한 노트북에서 프로그램을 만들면 시간을 아낄 수 있음
ipywidget과 같이 사용할 경우 간단한 대시보드를 구축할 수도 있음
실행할 때 저장된 Notebook 파일이 순차적으로 실행되도록 만들 수 있음
이런 경우 활용할 수 있는 도구가 Voila
예시
프로토타입이 중요한 이유
Voila
- 본래 목적 : 대시보드
- R의 Shiny와 유사하며, 파이썬의 Dash와 유사한 도구
- (참고) Dash는 Dash의 문법을 익혀야 하기 때문에 사용할 때 시간이 필요함
- 대시보드는 다양한 도구들이 존재
- Superset, Metabse, Redash, Tableau
- 다만 위 도구는 모두 서버에 제품을 설치한 후, 연동시켜야 함
- = 개발 리소스 필요, 유지보수 필요
- 대부분 SQL 베이스의 시각화
- Notebook에서 별도의 코드 추가 없이 실행할 수 있는 점이 Voila의 강점
- 노트북 파일만 만들면 프로토타입은 쉽게 만들 수 있음
- 2019년 12월에 Jupyter의 하위 프로젝트로 통합됨
- 장점
- Jupyter Notebook 결과를 쉽게 웹 형태로 띄울 수 있음
- Ipywidget, Ipyleaflet 등 사용 가능
- Jupyter Notebook의 Extension 있음(=노트북에서 바로 대시보드로 변환 가능)
- Python, Julia, C++ 코드 지원
- 고유한 템플릿 생성 가능
- 너무 쉬운 러닝커브
Voila 사용하기
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
사용 TIP
ipywidget
ipywidget
- ipywidget과 같이 사용하면 인터랙티브한 효과를 줄 수 있음
- ipywidget도 Notebook 프로젝트
- 다양한 Widget을 보면서 “어떤 것을 만들 수 있을 것 같다”라는 생각해보기
ipywidget 사용법
import 부분
import ipywidgets as widgets from Ipython.display import display
- display : Python Object를 보여주는 함수
Slider Widget
IntSlider : 정수형 Slider
인자
value : Default 값
step : 한번에 이동할 단계
orientation : 수직, 수평선
description : Slider의 Label
그 외에 FloatSlider, IntRangeSlider
Slider의 객체를 만든 후
int_widget.value
를 출력하면 값이 보임int_widget.value = 8
을 할 경우 값이 변경됨
Text Widget
Slider가 아닌 Input 입력
Bounded ; 범위가 주어진 Text
마찬가지로
.value
로 값에 접근 가능
String Text 위젯
Boolean Widget
True, False를 표시할 수 있는 Widget
ToggleButton
button_style : 버튼의 스타일
icon : 사용하는 아이콘
CheckBox
indent : 들여쓰기 여부
Selection Widget
선택할 수 있는 Widget
Dropdown
RadioButtons
Upload Widget
파일을 업로드하는 Widget
Image Widget
Image를 보여주는 Widget
Data Picker Widget
Date를 선택하는 Widget
Date, Time, Datetime도 있음
Widget Events(on_click)
버튼이 클릭되었을 때, 어떤 함수가 동작하길 원하는 경우
on_click
인자에 함수를 넘겨주면 됨
Widget Events(observe)
위젯의 값이 변경되는 것을 감지해서 특정 함수를 실행하고 싶은 경우
observe 인자에 함수를 넘기면 됨
interact Decorator
@interact 데코레이터를 사용하면 UI 컨트롤러가 생성
함수의 인자를 받아서 UI가 생성됨
만약 함수의 인자 중 하나는 고정하고 싶고, UI에서 나타나는 것을 원하지 않는 경우에는 fixed를 사용할 수 있음
Layout(Hbox, VBox)
위젯의 레이아웃을 구성하고 싶은 경우 HBox, VBox를 사용
VBox : 수직으로 구성(세로)
HBox : 수평으로 구성(가로)
응용 : 값을 제곱하는 위젯
ipywidget + Voila
ipywidget에서 Voila를 클릭하면 렌더링이 된 화면을 볼 수 있음
출처: 부스트캠프 AI Tech 4기(NAVER Connect Foundation)
'부스트캠프 AI Tech 4기' 카테고리의 다른 글
(AI 서비스 개발 기초) Linux & Shell Command (0) | 2023.08.08 |
---|---|
(AI 서비스 개발 기초) 웹 서비스 형태 - Streamlit (0) | 2023.08.07 |
(AI 서비스 개발 기초) 머신러닝 프로젝트 라이프 사이클 (0) | 2023.08.03 |
(AI 서비스 개발 기초) Model Serving (0) | 2023.08.02 |
(AI 서비스 개발 기초) MLOps 개론 (2) | 2023.08.01 |