본문 바로가기

부스트캠프 AI Tech 3기/프로젝트 : P-stage

[Day82] Product Serving 2-2 프로토타이핑 - 웹 서비스 형태(Streamlit)

Streamlit

voila는 레이아웃을 잡기는 어렵다.

자바스크립트, react를 사용해서 프로토타입을 만드는 것은 시간적으로 효율성이 없다.

다른 조직 프론트나 PM의 도움 없이 빠르게 웹 서비스를 만드는 것이 streamlit이다.

 

streamlit의 대안

  • voila : notebook을 바로 시각화, ux나 layout 잡기가 어려움
  • dash : 문서를 읽고 코드를 고쳐야함
  • flask+fastAPI : 백엔드와 프론트를 직접 구성해야 함

streamlit의 장점

  • 백엔드 개발이 필요 없다
  • 파이썬을 조금만 수정하면 된다
  • UI를 구성할 수 있다.
  • 배포까지 할 수 있게 되어 있다.
pip install streamlit

를 CLI에 쳐서 설치한다.

 

나머지 것들은 

 

GitHub - zzsza/Boostcamp-AI-Tech-Product-Serving: [Machine Learning Engineer Basic Guide] 부스트캠프 AI Tech - Product Serv

[Machine Learning Engineer Basic Guide] 부스트캠프 AI Tech - Product Serving 자료 - GitHub - zzsza/Boostcamp-AI-Tech-Product-Serving: [Machine Learning Engineer Basic Guide] 부스트캠프 AI Tech - Product Servi...

github.com

깃허브에 있는 requirements.txt 들로 설치한다

pip install -r requirements.txt

설치가 잘 됬는지 확인하자. 나는 streamlit이 설치가 제대로 안되서 뒤에서 계속 모듈을 못찾는다는 에러가 떴다.

 

다음 streamlit 코드 파일을 만들고,

streamlit run <파이썬 파일>
streamlit run <파이썬 파일> --server.port <사용하고자하는 port번호> # 위의 코드로는 안 될 때

나는 aistage에서 서버 받을때 준 포트를 사용했다.

 

이렇게 하면

이렇게 URL이 뜬다. External URL로 들어가서 접속이 잘 되면 성공


그러면 stream text를 어떻게 작성하는지 알아보자

 

import streamlit as st

st.title('제목')
st.write('print같은 것')
st.button('버튼')
st.checkbox('체크박스')
st.dataframe('interactive한 dataframe')
st.table('정적인 dataframe')
st.line_chart(차트 data)

와 같이 여러 component가 있다.

더 많은 것은 공식 documentation이나

 

Streamlit Docs

Join the community Streamlit is more than just a way to make data apps, it's also a community of creators that share their apps and ideas and help each other make their work better. Please come join us on the community forum. We love to hear your questions

docs.streamlit.io

 

GitHub - daniellewisDL/streamlit-cheat-sheet: A cheat sheet for streamlit

A cheat sheet for streamlit. Contribute to daniellewisDL/streamlit-cheat-sheet development by creating an account on GitHub.

github.com

를 참고하면 될 것 같다.

 

session state

코드가 바뀌면 매번 코드가 처음부터 재실행된다. 그래서 중복 이벤트를 할 수 없다. global 변수를 사용하면 조금 이를 보완할 수 있기에 그런 역할을 하는 것이 st.session_state.변수명에 variable을 저장하면 된다. 

if '<변수명>' not in st.session_state:
	st.session_state.변수명=0

st.session_state.변수명+=3

위의 코드는 default value init 부분인데, 이 코드가 없으면 없으면 0으로 계속 초기화 되서 자꾸 0이 될 것이다.

 

Store Information Across App Interactions | Session State

You can now store information across app interactions and reruns!

blog.streamlit.io

 

cache

매번 dataframe을 받아오면 시간이 걸리기 때문에 메모리에 잠시 저장하는 기능이다.

@st.cache을 위에 그냥 쓰면 된다.

 


다음 강의인 2-3은 전에 들었던

 

[Day18] AI 서비스 개발 3. Linux&Shell Command

Linux server에서 자주 사용하는 OS 비용 window에서 서버를 사용하려면 라이센스비용을 내야하지만 linux는 오픈소스로 존재해서 비용이 필요하지 않다. 확장 가능 안정성, 신뢰성 CLI Command Line Interface

chae52.tistory.com

이것과 같은 내용이라서 생략하겠습니다. 위의 게시글을 참고하세요!