1. 소프트웨어 개발과 AI 개발, 뭐가 다를까?
항목일반 소프트웨어AI/ML 개발
주 대상 | 비즈니스 로직 | 데이터 기반 모델 |
검증 방법 | 테스트 코드로 검증 | 정확도/재현율 등 수치로 검증 |
주된 변화 | 코드 변경 | 데이터 변경 |
배포 기준 | 코드 머지 기준 | 모델 성능 기준 |
AI는 코드를 짜는 것보다, 데이터와 모델 변경이 핵심입니다. 이 때문에 일반적인 CI/CD로는 한계가 존재합니다.
2. AI 모델은 왜 배포가 어려울까?
- 데이터 변화가 잦음 → 재학습 필요
- 성능 평가지표 기준으로 배포 판단
- 테스트 케이스로만 검증이 어려움
- 코드 + 모델 + 데이터 모두 관리 대상
이러한 특성 때문에 모델 성능 기반 자동화 배포 파이프라인이 필요합니다.
3. DevOps vs MLOps
항목DevOpsMLOps
대상 | 코드 | 모델, 데이터 |
핵심 도구 | GitHub Actions, Jenkins 등 | MLflow, DVC, Kubeflow 등 |
빌드 기준 | 코드 변경 | 데이터/모델 변경 |
아티팩트 | Docker Image | 모델 + 메타데이터 |
MLOps는 단순히 "모델을 배포"하는 게 아니라,
데이터 수집 → 학습 → 검증 → 배포 → 모니터링까지 자동화하는 전 과정입니다.
4. 단계별로 보는 AI CI/CD 전략
Step 1: 버전 관리
- 코드: Git
- 모델: MLflow, DVC, Weights & Biases
- 데이터: S3 / DVC
Step 2: 모델 테스트
- 스모크 테스트: API 형태로 모델 호출 테스트
- 모델 성능 테스트: 이전 모델 대비 성능 향상 여부
Step 3: 빌드 & 컨테이너화
- 모델 + API 서버를 Docker로 래핑
- FastAPI, Flask 등으로 REST API 구성
FROM python:3.10 COPY ./model.pkl . COPY ./main.py . RUN pip install -r requirements.txt CMD ["uvicorn", "main:app"]
Step 4: CI 자동화
- GitHub Actions 사용
- 커밋 → 테스트 → Docker 이미지 빌드 → ECR 푸시
Step 5: CD 자동화
- AWS ECS, EKS 등으로 자동 배포
- 예: main 브랜치에 merge 시 자동 배포
5. 예시: GitHub Actions 기반 파이프라인
name: AI Model CI/CD
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: pip install -r requirements.txt
- name: Test model
run: python test_model.py
- name: Build Docker
run: docker build -t mymodel-api .
- name: Push to ECR
...
- name: Deploy to ECS
...
6. 모델 재학습 자동화까지?
CI/CD만으로는 충분하지 않습니다.
다음 단계는 MLOps입니다.
- 데이터 변경 감지 → 재학습 트리거
- MLflow로 학습 이력 기록
- Seldon / KServe로 배포 자동화
- Prometheus / Grafana로 성능 모니터링
마무리
AI 모델을 잘 만들기만 하면 끝일까요? 실제 서비스에 적용되기 위해선 빠르고 안정적인 배포 전략이 필요합니다.
CI/CD는 DevOps의 영역이지만, AI 개발에서는 데이터와 모델을 위한 CI/CD가 별도로 필요합니다.
앞에서 마이크로서비스 모델링은 실습해보셨다면 CICD도 적극 추천드립니다.
'KT에이블스쿨 7기' 카테고리의 다른 글
[KT AIVLE School 7기] AI 마이크로서비스 모델링 (1) | 2025.07.28 |
---|---|
[KT AIVLE School 7기] Spring Framework(4) (0) | 2025.06.24 |
[KT AIVLE School 7기] Spring Framework(3) (0) | 2025.06.24 |
[KT AIVLE School 7기] Spring Framework(2) (0) | 2025.06.24 |
[KT AIVLE School 7기] Spring Framework (0) | 2025.06.24 |