AI 서비스를 개발하고 배포하는 과정과 MCP까지 정리해보겠습니다.
머신러닝, DevOps, 데이터 엔지니어링을 결합하여 AI 모델의 배포, 모니터링, 유지보수를 간소화하는 방법론
재현성 : 표준화된 워크플로우로 환경 간 일관된 모델 동작 보장
확장성 : 자동화된 파이프라인으로 대규모 데이터셋과 복잡한 모델 처리 가능
협업 : 데이터 과학자, ML 엔지니어, DevOps 팀의 통합
신뢰성 : 지속적인 모니터링과 자동 재학습으로 모델 정확도 유지
머신러닝 실험, 재현성, 배포를 포괄적으로 관리하는 오픈소스로 실험 추적, 모델 버전 관리, 모델 레지스트리, 배포 기능을 제공
정확히는 모델 학습을 포함한 전체 AI 개발 과정을 기록
데이터 전처리, 하이퍼파라미터 튜닝, 모델 학습, 검증, 평가 등의 모든 단계가 포함된다.
# Python 가상 환경 생성
conda create -n ai-dev-env python=3.10
conda activate ai-dev-env
# MLflow 설치
conda install -c conda-forge mlflow
# MLFlow 실행 localhost:8080
mlflow server --host 127.0.0.1 --port 8080
# 의존 패키지 설치
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
pip install pillow
그 후 모델 학습 추적, 모델 등록과 로드를 통해 결과 확인
AI 프로젝트에서 대용량 데이터셋과 모델 파일들을 Git 처럼 버전 관리할 수 있게 해주는 오픈소스
Git이 코드를 추적하듯이 DVC는 데이터 파일의 변경사항을 추적하면서도 실제 파일은 클라우드 스토리지나 로컬 저장소에 저장하고, Git에는 가벼운 메타 파일(.dvc)만 저장한다. 이를 통해 실험을 재현하고 데이터셋 버전을 관리할 수 있다.
# dvc 설치 및 초기화
pip install dvc[s3]
git init
dvc init
git add .dvc/
git commit -m "DVC 초기화"
# 대용량 데이터셋 추적
dvc add data/large_dataset.csv
git add data/large_dataset.csv.dvc
git commit -m "DVC로 대용량 데이터셋 추적"
# 학습된 모델 추적
dvc add models/pytorch_model.pth
git add models/pytorch_model.pth.dvc
git commit -m "PyTorch 모델을 DVC로 추적"
# 데이터셋이나 모델의 변경이 발생하면 갱신하는 명령
dvc add data/large_dataset.csv
git add data/large_dataset.cvs.dvc
git commit -m "데이터셋 업데이트"
# 갱신을 하기 전에 변경 사항이 있다면 확인하는 명령
dvc status
# AWS S3 설정
dvc remote add -d s3remote s3://my-bucket/dvc-storage
dvc remote modify s3remote access_key_id YOUR_ACCESS_KEY
dvc remote modify s3remote secret_access_key YOUR_SECRET_KEY
dvc push
# 로컬 원격 설정
mkdir ../dvc-remote-storage
dvc remote add -d localremote ../dvc-remote-storage
dvc push
AI 모델을 서비스 프로덕션 환경에 배포하기 위한 오픈소스로 학습된 모델을 일관된 규격(Bento)으로 패키징하고 모델의 추론을 API로 서빙할 수 있게 해준다.
다양한 AI 개발 프레임워크들과의 통합을 지원하고 자동 배치 처리, GPU 가속, 모델 버전관리 등의 기능을 제공하여 모델 배포 과정을 단순화 할 수 있습니다.
# 필요한 의존 패키지 설치
pip install bentoml
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
pip install fastapi uvicorn transformers
그 후 모델 생성, 모델 서빙 API 서비스를 구현했다면
# 서비스 실행
bentoml serve service:PyTorchModelService --reload
서비스가 실행되면 http://localhost:3000 에 접속해서 swagger처럼 확인 가능!
이렇게 배포된 서비스 운영을 위한 지표들을 모니터링 할 수 있도록 통합 배포 진행
BentoML 은 AI 모델의 추론에 주로 활용됩니다. 하지만 일반적인 웹 어플리케이션은 DB에서 쿼리를 하여 데이터를 응답하기 때문에 BentoML 과 통합될 Python 웹 프레임워크로 FastAPI 를 활용해보겠습니다. 그리고 운영 중 성능 지표를 모니터링하기 위해 Prometheus 와 Grafana 를 사용하고, 이를 패키징하여 Docker 컨테이너로 AWS EC2에 배포하는 방식
Fast API
Prometheus
Grafana
Docker
AI 서비스 (Python 웹 어플리케이션)
WSL + Docker Desktop
Docker file (Prometheus, Grafana 설정)
docker-compose 설정
AI 서비스: http://localhost :8000
ASW EC2에 배포 (GPU 사용하면 프리티어 안됨)
서비스 실행하면 끝!
AI 어플리케이션을 LLM에 일관된 방식으로 연결해주는 오픈 표준 프로토콜
LLM은 학습된 지식 외의 최신 정보나 사용자의 데이터에는 접근하지 못하는 한계가 있었다.
그래서 연결하는 표준화된 인터페이스가 필요했고, 이에 따라 개발된 개방형 프로토콜
ex) Claude Desktop 애플리케이션은 로컬 MCP 서버를 통해 사용자의 컴퓨터 파일 시스템에 접근하여 파일을 읽고 쓰는 작업을 가능하게 한다.
3가지 구성 요소
MCP 호스트 : Claude Desktop, IDE, AI 도구와 같이 사용자가 직접 상호작용하는 프로그램
MCP 클라이언트 : 호스트와 서버 간 1:1 연결을 유지하는 프로토콜 클라이언트
MCP 서버 : 특정 기능을 표준화된 프로토콜을 통해 노출하는 경량 프로그램
다양한 오픈소스 MCP 서버 중 airbnb 로 예제 설명
Airbnb MCP Server는 NodeJS로 개발되어 있어서 안깔려있으면 설치!
프롬프트 재시작 후 명령어
npx -y @smithery/cli install @openbnb-org/mcp-server-airbnb --client claude
그러면 api 키를 입력하라고 할텐데
여기서 Github로 로그인하고 Profiles & API Keys 로 키 발급 받고 입력
이제 Claude Desktop 에 설치한 MCP 서버의 설정을 편집하는데
메뉴 > 파일 > 설정 > 개발자 claude_desktop_config.json 에서
{
"mcpServers": {
"airbnb": {
"command": "npx",
"args": [
"-y",
"@openbnb/mcp-server-airbnb"
]
}
}
}
이렇게 입력 후 종료 후 실행
이제 서울에 있는 에어비앤비 숙소를 찾아달라고 프롬프팅하면 외부 연동 서비스 (MCP)를 사용해서 숙소 목록을 출력해준다.