> >
Post

[Upstage AI Lab] 11주차 - MLOps 자동화

[Upstage AI Lab] 11주차 - MLOps 자동화 & 배포(MLflow, CI/CD, API) 학습 내용

[Upstage AI Lab] 11주차 - MLOps 자동화

들어가며

이번 글에서는 MLflow, CI/CD, REST API 등 MLOps 자동화 & 배포 도구를 살펴본다.
간단한 실습 예제와 함께 설명한다.



MLflow


1. MLflow 란?

머신러닝의 전체 Project Lifecycle을 관리할 수 있는 오픈소스 플랫폼이다.
Project Lifecycle의 모든 단계에서 적용 가능하며 개발/학습/추론/배포 등 모든 단계에서 사용 가능

Mlflow

구성 요소

  • Tracking: 모델 학습 결과를 추적하고 다양한 프레임워크에서 동작할 수 있는 학습 코드의 재현성을 보장
  • Projects: 프로젝트의 코드 환경 설정 종속성 등을 관리
  • Models: 학습된 모델을 관리하고 다양한 환경에서 모델을 배포할 수 있는 기능 제공
  • Registry: 모델 버전을 관리하고 공동 작업을 위한 모델 저장소를 제공



2. MLflow 실습

아래 코드는 Conda 환경에서 MLflow Tracking Server를 실행하며 다음 단계를 따라 진행한다.

  • Preprocessing
  • Model Training
  • Model Selection
  • Model Serving


2-1. 환경 구축

  • 1. MLflow 설치
1
2
conda activate mlflow # 가상환경 이름
pip install mlflow # 설치
  • 2. http://127.0.0.1:5001 접속 및 확인
1
mlflow ui --port 5001 # 실행 / port는 개인 환경에 맞게 설정

MLflow ui 확인

2-2. MLflow loging Test

1. Jupyter file 생성

1
vi mlflow.ipynb # Test file 생성

2-2. Regression Model Test

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import mlflow
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor

# port
mlflow.set_tracking_uri("http://localhost:5001")
mlflow.sklearn.autolog()

# Data load
data_diabetes = load_diabetes()
X_train, X_test, y_train, y_test = train_test_split(data_diabetes.data, data_diabetes.target)

# Model
reg = RandomForestRegressor(n_estimators=50, max_depth=10, max_features=5)
reg.fit(X_train, y_train)

# predict
predictions = reg.predict(X_test)

3. 결과 확인

실험 목록 확인

Model Parameters, Metric 확인




CI/CD


1. CI/CD 란?

CI/CD는 코드 변경 시 자동 빌드·테스트·배포로 안정적 운영을 지원하는 파이프라인이다.

CI-CD

CI(Continuous Integration) 란?

  • 코드 변경사항을 중앙 저장소에 정기적으로 merge(병합)하는 것을 의미
  • 자동화된 빌드 및 테스트가 수행되어 코드 변경이 주 저장소에 통합되기 전에 문제를 조기에 발견하고 해결
  • 예시
    • A, B 두 개발자가 동일 파일을 작업 후 오랜 기간 지나 merge 시도
    • 코드 충돌 발생 → 충돌 해결에 더 많은 시간 소요
    • 작은 단위로 자주 merge하여 리스크 최소화


CD(Continuous Deployment) 란?

  • 테스트를 거친 코드를 자동으로 production 환경에 배포하는 과정
  • 수동 개입 없어도 새로운 코드 변경 사항이 사용자에게 신속하게 도달하도록 함
  • 예시
    • feature 브랜치 머지 시 CI 통과 후 자동 배포 파이프라인 실행
    • 운영 환경에 최신 코드즉시 반영



2. CI/CD 도구

CI/CD 도구는 코드 변경 시 자동으로 빌드·테스트·배포 워크플로우를 실행하여 피드백을 제공하는 플랫폼

CI-CD-도구

종류

  • Jenkins: Java로 작성된 오픈 소스 자동화 서버, SW 개발자의 연속적인 통합 및 배포를 위한 도구
  • GitLab CI/CD: GitLab에 내장된 CI/CD 도구로, 웹 기반의 Devops 생명주기 도구
  • GitHub Actions: GitHub 저장소에 내장된 CI/CD 기능으로, SW 워크플로우를 자동화
  • Circle CI: Cloud 기반의 CI/CD 서비스로, 빠른 서비스로 빠른 빌드, 테스트 및 배포를 지원
  • Travis CI: GitHub 프로젝트에 쉽게 통합되는 CI 서비스로, 오픈소스 프로젝트에 널리 사용




HTTP & REST API


1. HTTP 란?

HTTP는 웹 상에서 데이터를 교환하기 위한 Protocol(프로토콜)이다.
클라이언트-서버 구조의 요청-응답 방식이며, stateless(무상태) 를 특징으로 한다.

HTTP

HTTP MEthod

  • GET: 서버로부터 정보를 조회하기 위해 사용
  • POST: 서버에 데이터를 전송하기 위해 사용
  • PUT: 서버의 리소스를 업데이트(갱신)할 때 사용
  • DELETE: 서버의 리소스를 삭제할 때 사용


HTTP 상태 코드

  • 200 OK: 요청이 성공적으로 처리되었음을 뜻한다.
  • 404 Not Found: 클라이언트가 요청한 리소스를 서버에서 찾을 수 없음을 뜻한다.
  • 500 Internal Server Error: 서버 내부에서 예기치 못한 오류가 발생했음을 뜻한다.



2. REST API 란?

REST API는 웹 표준을 기반으로 서버와 클라이언트 간의 통신을 구현하기 위한 인터페이스다.
이는 자원의 표현에 의한 상태 전달을 의미하며, 웹의 기본 Protocol인 HTTP를 사용한다.

REST-API

작동 원리

  • REST API는 자원(URI), 행위(HTTP Method), 표현(Representation)의 세 가지 구성 요소로 이루어진다.
  • 클라이언트는 URI를 통해 자원을 지정하고, HTTP 메서드를 통해 해당 자원에 대한 행위를 지정한다.


상태 비저장성 (Statelessness)

  • REST상태 비저장성을 가짐
  • 서버는 클라이언트의 이전 요청 상태를 유지하지 않으며, 각 요청은 독립적으로 처리된다.
  • 서버 처리가 단순화되고, 시스템 확장성이 크게 향상된다.
This post is licensed under CC BY 4.0 by the author.