본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] CI/CD 파이프라인 내 CML을 활용한 모델 학습 자동화 3가지 해결 방법과 워크플로우 차이 분석

by Papa Martino V 2026. 4. 16.
728x90

CML(Continuous Machine Learning)
CML (Continuous Machine Learning)

전통적인 소프트웨어 개발의 CI/CD를 넘어, 머신러닝의 핵심인 Continuous Machine Learning (CML)을 구축하는 것은 현대 MLOps의 필수 과제입니다. 본 가이드에서는 Python 기반 환경에서 GitHub Actions와 CML 라이브러리를 연동하여 데이터 변경 시 모델 학습부터 리포팅까지 자동화하는 실무 전략을 상세히 다룹니다.


1. CML(Continuous Machine Learning)이란 무엇인가?

기존의 CI/CD가 코드의 빌드와 배포에 집중했다면, CML은 데이터와 모델의 변화에 집중합니다. 데이터 과학자가 코드를 Push하거나 데이터셋이 업데이트될 때, 자동으로 클라우드 인스턴스를 프로비저닝하여 모델을 학습시키고 그 결과를 Pull Request(PR) 댓글로 시각화해 주는 오픈소스 라이브러리입니다. 이를 통해 팀원들은 모델의 성능 지표(Accuracy, F1-Score 등)를 별도의 도구 없이 Git 환경 내에서 즉시 확인하고 코드 리뷰를 진행할 수 있습니다.

2. 기존 CI/CD와 CML 기반 MLOps의 3가지 핵심 차이

단순한 자동화와 머신러닝 자동화는 목적과 리소스 관리 측면에서 큰 차이가 있습니다.

비교 항목 일반 CI/CD (DevOps) CML 기반 학습 자동화 (MLOps)
트리거 (Trigger) 소스 코드 변경 코드 변경 + 데이터 업데이트 + 하이퍼파라미터 변경
컴퓨팅 리소스 가벼운 CPU 러너 고성능 GPU 인스턴스 (EC2, Azure 등 동적 할당)
산출물 (Artifact) 바이너리, 도커 이미지 학습된 모델 파일, 성능 리포트, 시각화 차트
검증 방식 단위 테스트, 통합 테스트 평가 지표 비교, 데이터 드리프트 체크

3. 실무 적용을 위한 7가지 핵심 자동화 예제 (Python & YAML)

실제 현업 프로젝트에서 CML 파이프라인을 구축할 때 필요한 코드 예제들을 단계별로 구성했습니다.

Example 1: 학습 결과 리포팅을 위한 Python 스크립트 작성

학습 후 성능 지표와 혼동 행렬(Confusion Matrix)을 마크다운 형식으로 저장하는 코드입니다.

import pandas as pd
from sklearn.metrics import classification_report
import matplotlib.pyplot as plt
import seaborn as sns

def save_metrics(y_true, y_pred):
    # 텍스트 리포트 생성
    report = classification_report(y_true, y_pred)
    with open("metrics.txt", "w") as f:
        f.write("## 모델 성능 평가 리포트\n")
        f.write(report)
    
    # 혼동 행렬 이미지 저장
    # sns.heatmap logic...
    plt.savefig("confusion_matrix.png")

# 실행 예시
save_metrics([0, 1, 0], [0, 1, 1])
        

Example 2: 기초적인 CML 워크플로우 설정 (GitHub Actions)

코드가 push될 때 자동으로 환경을 구성하고 학습 스크립트를 실행하는 YAML 설정입니다.

name: model-training
on: [push]
jobs:
  run:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: iterative/setup-cml@v1
      - name: Train model
        run: |
          pip install -r requirements.txt
          python train.py
          
          # CML 리포트 생성
          echo "## 모델 학습 결과" > report.md
          cat metrics.txt >> report.md
          cml-publish confusion_matrix.png --md >> report.md
          cml-send-comment report.md
        env:
          REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        

Example 3: DVC를 활용한 데이터 버전 관리와 자동화 해결 방법

데이터가 Git에 올라가지 않더라도 DVC와 연동하여 학습 데이터를 자동으로 가져오는 방법입니다.

- name: Pull data from DVC
  run: |
    dvc pull data/train_data.dvc
    # 이후 python train.py 실행
  env:
    GDRIVE_CREDENTIALS_DATA: ${{ secrets.GDRIVE_CREDENTIALS_DATA }}
        

Example 4: AWS EC2 GPU 인스턴스 동적 할당 (CML Cloud)

학습 시에만 GPU 인스턴스를 띄워 비용을 절감하는 고도화된 전략입니다.

- name: Setup Cloud Runner
  run: |
    cml runner \
      --cloud=aws \
      --cloud-region=us-east-1 \
      --cloud-type=g4dn.xlarge \
      --labels=cml-gpu
        

Example 5: 모델 성능 하락 시 배포 방지(Gatekeeping) 구현

이전 버전보다 정확도가 낮을 경우 파이프라인을 중단시켜 배포 사고를 예방합니다.

import json

with open('metrics.json') as f:
    current_accuracy = json.load(f)['accuracy']

baseline_accuracy = 0.85 # 기존 모델 성능
if current_accuracy < baseline_accuracy:
    print("성능 미달: 파이프라인을 종료합니다.")
    exit(1)
        

Example 6: 여러 모델의 결과 비교를 위한 표 생성 자동화

하이퍼파라미터 튜닝 시 여러 실험 결과를 하나의 표로 정리하여 PR에 게시합니다.

# Python에서 생성된 csv를 마크다운 표로 변환
import pandas as pd
df = pd.read_csv("results.csv")
print(df.to_markdown()) 

# CML Workflow에서 활용
# python compare.py >> report.md
        

Example 7: 학습된 모델 파일(Model Artifact) 외부 저장소 업로드

학습이 완료된 .h5 또는 .pkl 파일을 S3 버킷에 안전하게 저장하는 단계입니다.

- name: Upload Model to S3
  run: |
    aws s3 cp model/model_latest.pkl s3://my-model-bucket/v1/${{ github.sha }}.pkl
  env:
    AWS_ACCESS_KEY_ID: ${{ secrets.AWS_AK }}
    AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SK }}
        

4. 결론: CML이 선사하는 데이터 팀의 생산성 혁명

CML을 도입하면 데이터 과학자는 더 이상 "내 로컬에서는 잘 돌아갔는데?"라는 말을 할 필요가 없습니다. 모든 학습 과정이 재현 가능한 인프라 위에서 투명하게 공개되기 때문입니다. 모델 학습 자동화는 단순히 편리함을 넘어, 모델의 신뢰성을 담보하고 팀 간의 협업 속도를 5배 이상 높여주는 강력한 무기입니다.

내용 출처 및 참고 자료

  • Iterative.ai CML Documentation 
  • DVC (Data Version Control) Integration Guide 
  • GitHub Actions Documentation for MLOps 
  • "Building Machine Learning Pipelines" by Hannes Hapke, O'Reilly.
728x90