[MLOps] 프로토타입 만들기

hyunsooo·2022년 11월 9일
0

Voila

Voila-공식문서

R의 Shiny와 유사하며 파이썬의 Dash와 유사한 도구이다.
Dash는 여러가지 문법을 익혀야 하기 때문에 사용시 다소 허들이 있는 편이다.

대시보드는 다양한 도구(Superset, Metabase, Redash, Tableau)들이 존재하지만 모두 서버에 설치 후 연동시켜야 한다.

별도의 코드 추가 없이 Notebook에서 실행할 수 있는 점이 Voila의 강점이라고 할 수 있다.

장점

  • Jupyter Notebook 결과를 쉽게 웹 형태로 띄울 수 있다.
  • Ipywidget, Ipyleaflet등 사용 가능
  • Python, Julia, C++ 코드 지원
  • 고유한 템플릿 생성 가능
  • 쉬운 러닝커브

Voila 설치

voila 설치

pip3 install voila

jupyter Notebook, Jupyter Server 설정

jupyter serverextension enable voila --sys-prefix

nbextension 설정

voila --enable_nbextensions=True

jupyter notebook --VoilaConfiguration.enable_nbextentions=True

Voila 사용하기

  • Notebook서버 GUI환경에서 아래와 같이 사용하기

  • CLI환경에서는 아래와 같이 사용

>>> voila 입력시 localhost:8866으로 연동이 된다.

  • --voila <ipynb file name> --strip_sources=False 옵션으로 소스코드까지 공개가 가능하다.

  • voila를 사용할때 사용하지 않는다면 종료를 해줘야 한다.

    • cull_interval : idle 커널을 확인할 간격(초)
    • cull_idle_timeout : 커널을 idle 상태로 판단할 기준(초), 이 시간동안 이벤트가 없으면 idle로 판단
    • idle 상태 : 프로세스가 일을하지 않는 상태
    • voila <ipynb file> --MappingKernelManager.cull_interval=60 --MappingKernelManager.cull_idle_timeout=300
  • Voila 셀 timeout 설정

    • 기본으로 하나의 cell이 30초 이상이 되면 timeout error를 발생
    • 전처리나 예측과 같은 행위를 하는 셀에서는 조정이 필요하다.
    • voila --ExecutePreprocessor.timeout=180
    • jupyter notebook --ExecutePreprocessor.timeout=180으로 실행해도 voila에 영향을 준다.
  • 보안에 신경쓰기 (jupyter notebook password를 사용해 암호지정)

    • jupyter notebook --generate-config (config 파일위치)
    import Ipython.lib import passwd
    passwd()
    
    >>> Enter password:
    >>> Verify password: sha1----
    • 위의 코드를 실행하여 암호 입력 후 verify 암호를 복사한다.
    • config.py 파일 내의 c.NotebookApp.password를 찾아 암호를 넣어주고 저장한다.

Ipywidget

Ipywidget-공식문서

  • ipywidget과 같이 사용하면 인터랙티브한 효과를 줄 수 있다.

  • widget Events(on_click)

  • widget Events(observe)

  • interact decorator를 사용하여 UI 컨트롤러가 생성. 함수의 인자를 받아서 생성된다.
from ipywidgets import interact

@interact(x=True, y=1.0)
def g(x, y):
	return (x,y)
profile
CS | ML | DL

0개의 댓글