이번 글부터는 지난 Perplexity와의 회의(https://aidalab.tistory.com/255)에서 제안받은 MLOps 시스템 아키텍처의 각 요소에 대하여 그 의의와 필요성을 하나하나 체크해 보도록 하겠습니다.
먼저 가장 첫 번째로 나온 구성요소인 MinIO에 대하여 살펴보겠습니다.
MinIO는 Minimal Object Storage for Input/Output이라는 의미의 용어입니다.
그러나 방금 설명드린 표현은 의미는 맞으나 공식적으로 저 이름이 Fullname이라고 말하지는 않는다는군요.
Fullname은 별도로 있지 않고 MinIO가 그냥 이름이라고 합니다.
의미는 앞에서 설명드린 그대로 입니다.
즉 MinIO는 "최소화된 입출력 오브젝트 스토리지"를 의미하며, 이는 간단하고 효율적인 데이터 저장 및 검색 시스템을 지향하는 MinIO의 철학을 반영하고 있습니다.
MinIO는 고성능 오픈소스 오브젝트 스토리지 시스템으로 Amazon S3와 호환되는 API를 제공하며, 클라우드 네이티브 환경에 최적화된 분산 아키텍처를 가지고 있습니다.
다시 말하면 스토리지 즉 저장소라는 것입니다.
저장소는 단순하게 생각해보면 그냥 파일을 저장하는 곳이라는 의미겠죠.
그럼 그냥 접근이 빠른 고용량의 저장소(HDD나 SSD 등)를 준비하면 되는 것이 아닐까요?
왜 굳이 잘 모르는 MinIO 같은 것을 적용해야 하는 것일까요?
여기서는 MLOps에서의 스토리지의 의의를 살펴보아야 할 것 같습니다.
먼저 MLOps에서 스토리지는 단순한 저장소 이상의 역할을 하고 있습니다.
MLOps에 대한 스토리지의 의미와 영향력을 생각해보겠습니다.
1. 데이터 버전 관리
스토리지는 데이터셋의 버전을 체계적으로 관리하고 추적하는데 필수적입니다.
단순히 데이터의 저장만을 담당하는 것이 아니라 데이터 버전관리를 통하여 모델의 성능 변화를 데이터의 변화와 연관지어 분석할 수 있기 때문입니다.
그리고 필요할 경우 이전 버전의 데이터로 롤백하여야 하는데 스토리지의 기능을 통해 롤백과 같은 기능을 지원해 줄 수 있다면 그만큼 시스템의 안정화에 도움이 되겠죠.
2. 모델 버전 관리
또한 MLOps에서는 데이터만이 아니라 우리가 만드는 모델이나 학습된 모델 자체의 버전도 관리해야 합니다.
그래서 모델도 필요할 경우 롤백과 같은 대응이 필요합니다.
이런 기능은 모델의 일관성과 신뢰성을 유지하는데 매우 중요하죠.
3. 데이터 리니지(Data Lineage, 데이터 계보) 추적
데이터 리니지란 시간 경과에 따른 데이터 흐름을 추적하여 데이터의 출처, 변경 방법, 데이터 파이프라인 내 최종 목적지에 대한 명확한 이해를 제공하는 프로세스를 가리킵니다.
즉 원시 데이터로부터 특정 데이터셋이 생성되는 과정을 추적할 수 있다는 말이죠.
이를 통해 데이터의 흐름을 쉽게 이해하고 관리할 수 있게 됩니다.
데이터를 구매하거나 제공받아서 사용하는 경우에는 그 중요성이 크지 않겠지만 제조공장 등에서 직접 데이터를 생산, 수집하여 운영하는 시스템이라면 이러한 데이터 리니지의 추적 기능은 매우 중요한 역할을 하게 될 것입니다.
4. 협업 지원
MLOps는 단순히 머신러닝을 쉽게 할 수 있도록 지원하는 시스템이 아니라 데이터 과학자, 소프트웨어 엔지니어, IT 운영 팀 사이에서 발생하는 협업이 중요한 시스템입니다.
워낙 소규모 시스템에 적용되어 혼자, 또는 한두명이 사용하는 시스템이라면 그렇게까지 중요하지 않겠지만(제가 만들고자 하는 AiDAOps는 이런 시스템을 목적으로 합니다만...) 실제 시스템을 사용할 고객층은 다소의 협업이 필요한 층이 될 가능성이 높겠죠.
스토리지는 바로 이런 협업을 효과적으로 할 수 있는 중앙집중형 저장소의 역할을 하게 됩니다.
그리고 각 팀간 데이터와 모델의 공유를 용이해지도록 지원하게 되죠.
5. 지속적 통합 및 배포(CI/CD) 지원
앞에서도 말씀드렸지만 MLOps는 그냥 머신러닝을 쉽게 할 수 있도록 지원하는 것에 그치는 시스템이 아닙니다.
우리가 개발하고 학습시킨 모델을 필요한 곳에서 사용할 수 있도록 필요한 형태로 통합 및 배포하여 기업의 전체 프로세스에 활용할 수 있도록 하는 것에 그 목적이 있습니다.
MLOps를 위해 개발된 스토리지는 자동화된 테스트와 배포과정에서 필요한 데이터, 코드, 모델을 저장하고 관리하는 역할을 담당하며, 이는 MLOps의 핵심이라고 할 수 있는 CI/CD 파이프라인을 효율적으로 운영하는데 필수적이라고 볼 수 있습니다.
6. 모델 모니터링 및 성능 추적
새롭게 개발한 모델이 과연 우리가 기대한 성능을 보여줄 것인지, 생각하지 못한 문제는 없을지 우리는 계속 모니터링을 하고 성능 추적을 해 나가야 됩니다.
스토리지는 운영 중인 모델의 성능 데이터와 로그를 저장하고 분석하는데 활용될 수 있으며 이를 통해 모델의 성능 저하나 이상 동작을 즉각적으로 감지하고 대응할 수 있게 됩니다.
7. 데이터 품질 관리
최근의 AI 모델들은 센서 등으로부터 수집하는 Raw Data만을 학습을 위한 데이터로 사용하지 않습니다.
입력 데이터의 품질을 지속적으로 검사하고 관리하기 위하여 메타 데이터라는 것을 사용하는데, 메타데이터란 대량의 정보 가운데에서 찾고 있는 정보를 효율적으로 찾아내서 이용하기 위해 일정한 규칙에 따라 컨텐츠에 대하여 부여되는 데이터라고 할 수 있습니다.
최근의 AI 모델은 이러한 메타데이터를 저장하여 활용하고 있으며, 메타데이터를 이용한 데이터의 품질관리는 모델의 성능과 신뢰성을 유지하는데 중요한 역할을 하고 있습니다.
8. 규정 준수 및 거버넌스
데이터와 모델의 사용 내역, 접근 권한 등을 기록하고 관리하여 규제 요구사항을 충족하고 윤리적인 사용을 보장합니다.
지금까지 살펴본 스토리지의 역할을 보면 우리가 생각하고 있는 단순한 저장소로서의 스토리지와 많이 다르다는 것을 알 수 있습니다.
실제로 효과적인 스토리지의 관리는 모델의 개발부터 배포, 운영, 모니터링에 이르기까지 전체 라이프사이클에서 일관성, 재현성, 효율성을 보장하고 있으며, 이는 모델의 품질 향상, 개발 및 배포 주기의 단축, 운영 비용을 절감에 기여하고 있습니다.
이처럼 스토리지는 단순한 저장소가 아니라 MLOps의 핵심 구성요소로서 전체 MLOps 프로세스의 성공과 효율성을 좌우하는 중요한 영향력을 가진 요소라고 할 수 있습니다.
MLOps용으로 제안된 시스템 아키텍처의 구성요소 중 하나인 MinIO와 같은 스토리지들은 앞에서 살펴본 것과 같이 데이터 파일의 저장과 관리, 추적 등을 위한 다양한 기능을 내포함으로써 MLOps의 성공적인 구축에 큰 영향을 미칠 수 있도록 개발되고 있습니다.
흔히 생각할 수 있는 저장소의 기능에 여러 가지 관리 기능을 부여하고, 동시에 빅데이터와 같은 대용량의 데이터를 신속하게 조작, 활용할 수 있는 분산 아키텍처 등을 지원함으로써 우리가 MLOps를 더욱 쉽게 개발할 수 있도록, 그리고 더욱 신뢰성 있는 기능을 구현할 수 있도록 도와주는 핵심 요소의 위치를 확보하고 있다고 볼 수 있겠습니다.
'AiDAOps > 개발 진행' 카테고리의 다른 글
프론트엔드 부분을 담당할 프레임워크는 무엇이 좋을까? (26) | 2024.11.12 |
---|---|
회의 002: 시스템 아키텍처 구성하기 (15) | 2024.11.12 |
회의 001: 시스템 기본 틀 구성하기 (16) | 2024.10.18 |