국문과 유목민

[일일리포트] Day 82 (프로토타입_1 / FinalProject_2) 본문

IT 견문록/2022_부스트캠프 AITech 3기(100일)

[일일리포트] Day 82 (프로토타입_1 / FinalProject_2)

논곰 2022. 5. 18. 00:00
해당 일일리포트에서는 네이버 커넥트에서 진행하는 '부스트캠프 AI Tech 3기'에서 배운 내용을 다루고 있습니다. 저작권 이슈 때문에 관련 자료를 올릴 수는 없기에 핵심 이론과 코드를 요약해서 올리고 있기에 내용이 부족할 수 있습니다.
강의 내Further Question은 별도의 포스팅으로 다뤄볼 계획이며, 파이널 프로젝트에 대한 얘기는 생각(Review)부분에서 다루고자 합니다.

▶ Today I Learned (핵심 요약 정리)

프로젝트 라이프 사이클

이전 포스팅으로 대체: https://cold-soup.tistory.com/183

[일일리포트] Day 19 (ProjectLifeCycle)

해당 일일리포트에서는 네이버 커넥트에서 진행하는 '부스트캠프 AI Tech 3기'에서 배운 내용을 다루고 있습니다. 저작권 이슈 때문에 관련 자료를 올릴 수는 없기에 핵심 이론과 코드를 요약해서

cold-soup.tistory.com

Voila: JupyterNotebook base_프로토타이핑

모델 개발 시 주피터 노트북에서 함수를 작성한 후, 예측함수를 실행하며 성능을 확인하고는 한다. 하지만 만약 동료들과 공유하게 된다면, 추가 환경 설정이 필요하다. 만약 개발을 할 수 있는 동료라면 괜찮지만 개발을 잘 모르는 분에게 테스트 요청 시 어려운 문제가 생길 수 있다. 따라서 모델을 보여주기 위해서 프로토 타입이 필요하다.
하지만 프로토타입을 만들기 위해 웹 서비스를 만드는 것은 시간이 많이 소요된다는 어려움이 있다. Voila는 이러한 어려움을 해결하기 위해 등장했고, ipywidget과 같이 사용할 경우 간단한 대시보드를 구축할 수도 있다는 장점이 있다. 또한, 실행할 때 저장된 Notebook 파일이 순차적으로 실행되게 할 수도 있다. 그렇기 때문에 1차 프로토타입을 만들 때 Voila를 활용해 단 시간에 구현해 보여줄 수 있다. Voila는 노트북에서 별도의 코드 추가 없이 실행할 수 있는 점도 강점이다. 아래는 앞선 Voila의 장점에 대해 정리한 내용이다.

  1. 주피터 노트북 결과를 쉽게 웹 형태로 띄울 수 있음
  2. Ipywidget, Ipyleaflet 등 사용가능
  3. 주피터 노트북의 Extension이 있어 사용가능
  4. Python, Julia, C++코드 지원
  5. 고유한 템플릿 생성 가능
  6. 너무 쉬운 러닝커브

Voila 사용 방법

Voila 사용방법에 대해서는 마스티님께서 정리해놓으신 블로그가 있기 때문에 더 잘 설명이 되어 있어 설치 및 사용법에 대한 부분은 아래 블로그를 참조하면 더 좋을 것 같다.
참조 블로그 : https://zzsza.github.io/development/2020/01/06/jupyter_notebook_voila_dashboard/

Ipywidget

Voila를 Ipywidget과 같이 사용하면 Interactive한 효과를 줄 수 있다. 해당 부분은 정리된 별도의 포스팅으로 대체 하곘다.
링크: [Ipywidget] Ipywidget 명령어

Streamlit: 웹 서비스 형태_프로토타이핑

Voila는 노트북에서 쉽게 프로토 타입을 만들 수 있다는 장점이 있지만, 대시보드처럼 레이아웃을 잡기는 어렵다. 그렇다고 JS, React, Vue 등을 사용해 웹개발을 하기에는 시간적으로 비효율적이다. 또한, 다른 조직의 도움을 받기에도 어려움이 존재한다. 이런 상황에서 빠르게 웹 서비스를 만들 수 있는 방법이 바로 Streamlit이다.
Streamlit 장점은 다음과 같다.

  • 파이썬 스크립트 코드를 조금만 수정하면 웹을 띄울 수 있음
  • 백앤드 개발이나 HTTP 요청을 구현하지 않아도 됨
  • 다양한 Component제공해 대시보드 UI 구성할 수 있음
  • Streamlit Cloud도 존재해서 쉽게 배포할 수 있다.
  • 화면 녹화 기능도 존재함

다양한 프로토 타입 도구

Streamlit의 대안으로는 R의 Shiny, Flask, FastAPI, Dash, Voila가 있다. 웹 서비스를 만드는 과정에서 주의할 점은 툴이나 라이브러리에 집착하지 말고, 점진적으로 문제를 해결하는 과정에 집중해야한다는 것이다. 지금 사용하는 도구의 장단점은 어떤 것이고 새로운 대안이 있을지 항상 생각해봐야하고, 제일 중요한 것은 모든 것은 프로젝트의 요구조건에 따라 다르다는 것을 기억해야 한다는 것이다. 다음은 Python 프로토타입 도구에 대한 비교를 해주신 그래프이다. (현재 Voila와 Streamlit을 다뤘지만 추후 Flask와 FastAPI에 대해서도 다룰 예정)

프로토타입 도구 비교

Streamlit 사용방법

Straemlit의 사용방법에 대해서도 추후 사용할 수 있을 것 같다는 생각이 든다. 따라서 별도의 포스팅으로 잘 정리해두면 도움이 될 것이라고 생각해 다른 포스팅으로 정리하도록 하겠다.
링크: [streamlit] streamlit 명령어

▶ Review (생각)

최종 프로젝트 단계에서 Product Serving을 해야한다는 생각이 들어서인지 이번 강의들이 굉장히 흥미롭게 다가오는 것 같다. 생각해보니 부캠 시작하고 1달쯤 됐을 때, 몇 개의 강의를 들었었던 기억이 났다. 그때는 어떻게 사용해야할 지 잘 몰랐었고, 필요성을 잘 느끼지 못했었기 때문에 반쯤 흘려들었던 것 같다. 그런데 이번에는 여러 번 대회를 진행하고 최종 프로젝트를 생각하며 프로토타입이나 Product Serving의 필요성에 대해서 느껴서인지 강의를 집중하며 듣고 있다. 그리고 마스터님께서 쉽게 필요한 부분에 대해서만 설명해주시는 것도 강의를 편하게 들을 수 있는 이유 중 하나인 것 같다. Product Serving 강의를 잘 듣고, 잘 정리해놓으면 나중에 현업에 가서도 사용할 수 있을 것 같다는 생각이 든다. 카테고리까지 분류해서 정리해 봐야겠다.
최종 프로젝트 관련해서는 또 주제를 변경하게 됐다. 그런데 뭔가 이번에는 느낌이 좋은 것 같다. 사실 오늘 오전까지만 해도 시간이 부족해 나온 주제 중 할 수 없이 선택한 느낌이 있었기 때문에, 팀적으로 주제에 정을 붙이지 못한 것 같다는 느낌을 받았었다. 그래도 어쩔 수 없이 프로젝트를 진행하기 위해 와이어 프레임이나 워크 플로우를 그리기로 하고 피어세션 때 얘기를 했다. 그러던 중 한 팀원분께서 조심스럽게 비슷한 도메인의 새로운 주제를 제시해주셨고, 문제정의나 기술적인 부분 모두 괜찮은 것 같다는 생각을 하게 됐다. 다른 팀원들도 비슷한 생각이었던 것 같아 자연스럽게 주제를 변경하게 되었다.
사실 새로운 주제는 우리가 하고자 했던 새로운 기술이 들어가는 것도 아니고, 엄청난 아이디어가 있는 주제는 아니다. 하지만 이전 대회에서 사용했던 모델과 기술을 활용할 수 있는 아이디어이며, 해결하고자 하는 문제 상황이 있고, 발전가능성이 있는 주제라고 생각해 프로젝트로서 괜찮다고 생각한다. 시작이 반이라고 하는데, 사실 거의 3주 전부터 주제에 대해 다루기 시작했고, 이제 프로젝트가 3주 남았기 때문에 진짜 반이 지나긴 했다. 하지만 모든 팀원이 만족한 것 같은(?) 주제가 선정되었기 때문에 다들 열정을 가지고 할 수 있을 것 같다. 아쉬웠던 것보다는 할 수 있는 것에 집중해서 하면 최선의 결과를 이끌어낼 수 있게 노력해야겠다.