MLOps 와 Model Serving 실습 및 트러블 슈팅 해결 경험

Jeonghyeon Park·2025년 3월 31일

SKALA

목록 보기
7/13

목적

LSTM 모델(RNN 계열 딥러닝 모델)을 FastAPI 서버에 서빙하여, 시계열 데이터를 예측하고 그 결과가 정상적으로 업로드되는지 확인하여 MLOps 환경을 구축해보는 것입니다.

환경

  • 로컬: 윈도우 10(64bit), Mac OS
  • IDE: VSCode
  • Python 버전: Python 3.10.6 (TensorFlow 안정성 보장을 위해 3.10.6 사용)

1. Troubleshooting

파이썬 3.10.6 버전 설치

기존에 로컬 환경에서 Python 3.13.2 버전이 설치되어 있었으나, TensorFlow가 해당 버전을 안정적으로 지원하지 않아 Python 3.10.6 버전을 설치했습니다. 설치는 Python 공식 사이트에서 진행했습니다.

파이썬 3.10 가상환경 생성

로컬에서 정상적으로 패키지 설치가 되지 않아 임의로 파이썬 가상환경을 생성했습니다.

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 에러가 발생했는데, 서버와 클라이언트 간의 요청 경로가 일치하지 않아 발생한 문제였습니다.

FastAPI 실행 및 확인

서버를 실행한 후 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는 의존성 문제를 한 번에 해결할 수 있도록 도와주므로, 향후 팀 프로젝트에서는 Dockerpoetry를 활용해 FastAPI 컨테이너 개발환경을 설정할 예정입니다.

모델을 서빙하는 것은 아직 손에 익지 않아 어색하지만, Python과 FastAPI, 그리고 MLOps에 활용되는 라이브러리들이 매우 강력하고 실용성이 크다는 것을 실감할 수 있었습니다. 클라우드를 활용한 개발 환경 세팅 및 DevOps의 역할이 정말 중요함을 느꼈습니다.

profile
안녕하세요

0개의 댓글