LSTM 모델(RNN 계열 딥러닝 모델)을 FastAPI 서버에 서빙하여, 시계열 데이터를 예측하고 그 결과가 정상적으로 업로드되는지 확인하여 MLOps 환경을 구축해보는 것입니다.
기존에 로컬 환경에서 Python 3.13.2 버전이 설치되어 있었으나, TensorFlow가 해당 버전을 안정적으로 지원하지 않아 Python 3.10.6 버전을 설치했습니다. 설치는 Python 공식 사이트에서 진행했습니다.
로컬에서 정상적으로 패키지 설치가 되지 않아 임의로 파이썬 가상환경을 생성했습니다.
py -3.10 -m venv new-env
가상환경을 활성화하고 필요한 라이브러리들을 설치했습니다.
.\new-env\Scripts\activate
pip install keras tensorflow numpy uvicorn fastapi pandas
__init__.py 파일 추가FastAPI에서는 모든 디렉토리마다 __init__.py 파일이 있어야 해당 디렉토리를 패키지로 인식하고 내부 모듈을 불러올 수 있습니다. 이 부분에서 많은 시간을 소모했으나, 결국 해결할 수 있었습니다. 각 폴더에 __init__.py 파일을 추가한 후에도 여전히 500 에러가 발생했는데, 서버와 클라이언트 간의 요청 경로가 일치하지 않아 발생한 문제였습니다.
서버를 실행한 후 Swagger UI에서 시계열 데이터를 업로드하는 부분을 확인했습니다.
uvicorn main:app --host 0.0.0.0 --port 8001 --reload
이미지 확인: http://localhost:8001/view-download
SwaggerUI:http://localhost:8001/docs#/default/post_data_set_upload_post
환경 설정에 많은 시간을 투자해야 했습니다. 파이썬 버전 다운그레이드, 라이브러리 설치 등 의존성 문제를 해결하는 데 상당한 시간이 소모되었으며, 코드 로직보다는 설정에 더 많은 시간을 보냈습니다. 결국, venv 가상환경을 사용해 문제를 해결했지만, poetry 같은 의존성 관리 도구를 사용했다면 문제를 더 쉽게 해결했을 것이라고 생각합니다.
poetry는 의존성 문제를 한 번에 해결할 수 있도록 도와주므로, 향후 팀 프로젝트에서는 Docker와 poetry를 활용해 FastAPI 컨테이너 개발환경을 설정할 예정입니다.
모델을 서빙하는 것은 아직 손에 익지 않아 어색하지만, Python과 FastAPI, 그리고 MLOps에 활용되는 라이브러리들이 매우 강력하고 실용성이 크다는 것을 실감할 수 있었습니다. 클라우드를 활용한 개발 환경 세팅 및 DevOps의 역할이 정말 중요함을 느꼈습니다.