Machine Learning Operations (MLOps)
MLOps는 기계 학습에 DevOps 관행을 적용합니다. 여기에는 버전 관리되는 데이터, 자동화된 학습 파이프라인, 품질 게이트, 배포, 드리프트 모니터링이 포함됩니다.
머신러닝 운영(MLOps)은 머신러닝(ML) 모델을 실제 환경에서 안정적이고 반복 가능한 방식으로 구축, 배포, 유지 관리하기 위한 관행과 도구의 집합입니다. MLOps는 소프트웨어 테스트 및 릴리스 방식을 자동화하는 DevOps를 코드뿐 아니라 데이터에도 동작이 좌우되는 시스템으로 확장합니다. 관찰 대상인 세계가 바뀌면 코드 한 줄 바뀌지 않아도 모델 성능이 저하될 수 있습니다. 모델 자체는 이러한 시스템의 일부에 불과합니다. Google의 MLOps 아키텍처 가이드는 실제 ML 시스템에서 ML 코드가 차지하는 비중은 극히 일부이며 나머지는 데이터 수집 및 검증, 서빙 인프라, 모니터링으로 구성된다고 설명합니다. NeurIPS 논문 머신러닝 시스템의 숨겨진 기술 부채는 주변 시스템에 장기적으로 축적되는 유지 관리 비용을 다뤘습니다.
핵심 실천 방법#
MLOps는 몇 가지 관행을 통해 데이터 엔지니어링, 모델 개발, 운영을 연결합니다. 각 관행은 코드뿐 아니라 학습 데이터에도 적용됩니다.
- 데이터 버전 관리: 모든 데이터셋 스냅샷에 변경할 수 없는 버전을 부여하므로, 어떤 모델이든 해당 모델을 생성한 정확한 데이터까지 추적할 수 있습니다.
- 실험 추적: 각 학습 실행에서 코드 버전, 데이터 버전, 하이퍼파라미터, 메트릭, 아티팩트를 기록하므로 결과를 비교하고 재현할 수 있습니다.
- 지속적 통합 및 전달: 자동화된 파이프라인이 코드를 테스트하고, 유입 데이터를 검증하고, 모델을 재학습하며, 품질 게이트를 통과하지 못한 후보는 모두 차단합니다.
- 모델 레지스트리: 승인된 모델 버전을 메타데이터, 계보, 스테이징 또는 프로덕션과 같은 단계 정보와 함께 저장하므로 배포와 롤백에서 정확한 버전을 지정할 수 있습니다.
- 모델 서빙: 모델을 컨테이너 등에 패키징하고 API를 통해 제공하거나 엣지 디바이스에 배포합니다.
- 모델 모니터링: 드리프트를 감지하고 재학습 시점을 결정하기 위해 프로덕션 입력, 예측, 지연 시간, 정확도를 추적합니다.
Google 가이드는 성숙도를 세 단계로 설명합니다. 레벨 0에서는 데이터 과학자가 모델을 수동으로 학습하고 전달합니다. 레벨 1에서는 학습 파이프라인 자체를 자동화하고, 새 데이터가 들어오거나 데이터 드리프트가 감지될 때 모델을 자동으로 재학습하고 서빙하는 지속적 학습(CT)을 추가합니다. 레벨 2에서는 CI/CD를 사용해 파이프라인 코드의 빌드, 테스트, 배포도 자동화하므로 새 파이프라인 버전도 새 모델과 마찬가지로 안전하게 프로덕션에 적용됩니다. 이러한 관행을 함께 적용하면 다음과 같은 루프가 만들어집니다.
실무에서의 MLOps#
- 제조 검사: 공장에서 제품 라인을 추가하면 새로운 결함 이미지를 레이블 지정하고 버전 관리합니다. 파이프라인은 탐지 모델을 재학습하고, 승인된 버전을 가동 중단 없이 모든 라인의 엣지 카메라에 배포합니다.
- 소매 매장 선반 모니터링: 포장 디자인 변경과 매장 조명은 카메라가 보는 화면을 바꿉니다. 모니터링 시스템은 신뢰도 점수 저하를 감지하고, 신뢰도가 낮은 이미지는 어노테이션 작업에 전달합니다. 재학습된 모델은 평가를 통과한 후 매장에 배포됩니다.
품질 게이트는 승격 결정을 자동화합니다. 다음 스크립트는 후보 객체 탐지 모델을 학습하고 동일한 검증 데이터로 후보 모델과 현재 프로덕션 모델의 점수를 계산한 뒤, 후보 모델의 mAP50-95가 더 높은 경우에만 후보 모델을 ONNX로 내보냅니다.
from ultralytics import YOLO
# 후보를 학습합니다. 실행 결과로 가중치, args.yaml, results.csv가 project/name 아래에 저장됩니다
candidate = YOLO("yolo26n.pt")
candidate.train(data="coco8.yaml", epochs=10, project="mlops", name="candidate")
# 품질 게이트: 동일한 검증 데이터로 후보 모델과 프로덕션 모델의 점수를 계산합니다
candidate_map = candidate.val(data="coco8.yaml").box.map
production_map = YOLO("yolo26n.pt").val(data="coco8.yaml").box.map
# 서빙 스택이 실행할 수 있는 형식으로 내보낸 개선 모델만 승격합니다
if candidate_map > production_map:
candidate.export(format="onnx")프로덕션 파이프라인에서는 새 레이블 데이터가 들어올 때마다 스케줄러 또는 CI 작업이 이와 같은 스크립트를 실행하고, 내보낸 모델은 데이터 버전 및 메트릭과 함께 등록됩니다. Ultralytics Platform은 변경할 수 없는 데이터셋 버전, 실시간 메트릭을 제공하는 클라우드 학습, TensorRT와 같은 형식으로의 내보내기, 전용 추론 엔드포인트, 배포 모델 모니터링을 통해 비전 모델의 전체 라이프사이클을 하나의 워크스페이스에서 지원합니다.
MLOps와 관련 용어 비교#
- DevOps: 코드 변경 시 파이프라인이 실행되도록 소프트웨어 빌드, 테스트, 릴리스를 자동화합니다. MLOps는 데이터와 모델을 버전 관리되는 자산으로 추가하므로, 새 데이터가 들어오거나 프로덕션 정확도가 떨어질 때도 파이프라인이 실행될 수 있습니다.
- LLMOps: 대규모 언어 모델 애플리케이션에 적용되는 MLOps 분야로, 프롬프트, 검색, 생성 텍스트 평가, 토큰 비용에 중점을 둡니다.
- 자동화 머신러닝(AutoML): 알고리즘과 하이퍼파라미터 선택 등 모델 구축을 자동화합니다. MLOps는 데이터 버전 관리부터 모니터링까지 모델을 둘러싼 라이프사이클을 운영하며, 흔히 AutoML을 파이프라인 단계 중 하나로 호출합니다.
- MLflow 및 Weights & Biases: 실험 추적 및 모델 레지스트리와 같이 라이프사이클의 일부를 지원하는 도구입니다. MLOps는 이러한 도구를 파이프라인, 서빙, 모니터링과 결합하는 관행입니다.










