네이버 AI 부스트캠프 4기 : AI 서비스 기초 4

nask·2022년 11월 12일

AI 서비스 개발 기초 5강 : 프로토타입 -Voila

프로토타입

  • 모델을 개발한 후, 다른 사람들과 테스트하며 이야기하고자할 때 각자의 노트북 환경에서 따로 확인할 경우 추가적인 환경 설정이 요구됨

  • 개발한 모델을 별도의 환경설정이나 웹서비스 구현 없이 간단하게 프로토타입을 확인할 수 있는 프로그램이 필요함

Voila

  • 노트북 환경에서 바로 프로토타입으로 만들어주는 도구

  • 추가적인 코드 없이 클릭만으로 실행 가능

  • 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

Tips

  • 셀뿐만 아니라 코드도 보기 : 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 사용해 암호 지정도 가능

ipywidget

사용법

import ipywidgets as widgets
from IPython.display import display

Components

  • Slider

  • Text widget

  • Boolean widget

  • Selection widget

  • Upload widget

  • Image widget

  • Date picker widget

  • Widget events

  • Interact decorator

  • Layout(HBox,VBox)

  • Voila : 렌더링된 화면 보여줌

    ...

AI 서비스 개발 기초 6강 : 프로토타입 - Streamlit

배경

  • 프로토타입을 위해 Voila을 사용해도 대시보드처럼 레이아웃 잡기는 어려움

  • 그렇다고 정식 웹 개발은 시간 효율적이지 않고, 다른 조직과 협업 필요한 경우도 있음

대안

이외에 R의 shiny 등도 존재

특징

  • 제공하는 다양한 Component를 이용해 대시보드 UI 구성 가능

  • Streamlit Cloud로 쉽게 배포 가능

  • 화면 녹화 기능

사용법

  • pip3 install streamlit

  • (CLI)

streamlit run steramlit-basic.py

Components

  • 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

    ...

Sesion State

  • 코드 수정이나 위젯 상호작용 시 전체 streamlit 코드가 다시 실행되어 중복 이벤트 실행 못하는 등 한계

  • Sesion State를 통해 Global Variable처럼 활용

@st.cache

업로드중..

  • 데이터 등을 매번 다시 읽는 것 방지 위해 캐싱함

0개의 댓글