Search

MLOps: 온프레미스 AI 플랫폼 at MAXST

생성일
2024/12/01 06:38
최종 편집 일시
2025/01/16 09:21
카테고리
프로젝트
일정
2024/06/28
태그
포트폴리오
MAXST (맥스트)
4 more properties

프로젝트 요약

연구환경 개선, 인프라효율성 개선, 상품개발환경 조성을 위한 MLOps 도입
제목: 오픈소스 기반 온프레미스 MLOps 도입
기간: 2024년 01월 - 2024년 06월 (6개월)
역할: 리드 MLOps 담당 ~ 기획 + VoC + ML Workloads/Infra + PoC + 운영 [기여도 90%]
Kubeflow
Argo Workflows와 통합; AutoML, 분산학습, 모델 레지스트리 지원, 최대 16 GPU 가속
JupyterHub
IDE와 통합된 원격 개발 환경 구현; 원격 GPU 노트북 지원, 최대 4 GPU 가속
VectorDB
Milvus, ChromaDB 등 고가용 벡터 데이터베이스 구현, RAG+LLM 챗봇 개발
ML Infra
CI/CD, NAS, 데이터 레이크, 이미지 레지스트리, 모니터링 등 ML 워크로드를 지원할 인프라 구현
성과: 연구환경 개선, 리소스 통합 관리 ~ 리소스를 병합하여 가용성과 용량을 늘리고, 관리 자동화로 효율성은 유지
연구환경 개선
연구원들이 개별 관리하던 분산 서버들을 쿠버네티스로 통합하여 인프라 용량 및 안정성 확보. PoC를 통해 구성원의 MLOps 도입 의사결정 성공
AI 플랫폼
Kubeflow, JupyterHub 등 연구원 2명의 VoC에서 10명으로 점차 사용자 및 규모 확대. 지속적 MLOps 고도화로 연구환경 개선 및 기술부채 해소
GPU 활용성 개선
GPU 사용률 3배 증가 및 800건 이상의 AutoML 실험 수행 결과로 상품화 기여
대표 사용 기술
Kubeflow
Katib
Training Operator
Model Registry
JupyterHub
Argo Workflows
Milvus
ChromaDB
Ollama
Open WebUI
Grafana Stack (PLG, Prometheus + Loki + Grafana)
TensorBoard

아키텍처

1. ML 파이프라인

ML 모듈을 동작시키기 위한 파이프라인입니다. 쿠버네티스 네이티브 워크플로우 엔진인 ‘Argo Workflows’를 주로 사용했습니다. YAML 및 Python으로 파이프라인을 개발하였고, 정적/동적 파이프라인을 모두 지원하였습니다.
ML Pipeline을 위한 아키텍처는 다음과 같습니다:
동일 기능 파이프라인으로 온프레미스와 퍼블릭에서 모두 동작할 수 있게 스토리지 및 이미지 레지스트리를 설정하였습니다.
주로 고효율의 온프레미스에서 파이프라인을 동작시켰습니다., 산출물은 온프레미스(백오피스 및 분석)와 퍼블릭(서빙)에 모두 저장하였습니다. 온프레미스를 사용할 수 없을 때 퍼블릭을 사용하는 하이브리드 구조를 가집니다.
각 클라우드를 모니터링하고 API 게이트웨이로 파이프라인 요청을 스케줄링하였습니다.
파이프라인은 GitOps를 통해 원격 저장소에서 관리하고 API로 호출하여 사용합니다. 개발환경에서는 연구원이 Argo Workflows 서버에 직접 실행하여 파이프라인을 가동할 수 있습니다.

2. AI 플랫폼 JupyterHub

AI 개발을 위한 Jupyter Notebook을 공급하는 JupyterHub으로 AI 플랫폼을 구성하였습니다. Jupyter는 원격 GPU 서버를 연구자에게 공급할 수 있습니다. 웹, IDE 통합을 모두 지원하기 때문에 연구원의 PC 자원과 독립적인 연구 환경을 구성할 수 있습니다.
JupyterHub는 쿠버네티스에 배포하였고, 연구원들이 개별 관리하던 서버를 클러스터에 통합하였습니다. 이를 통해 유휴 자원을 최소화 하고, GPU 분산가속을 이용해 단일 서버보다 높은 성능의 실험을 수행할 수 있게 되었습니다. AI 플랫폼은 다음과 같은 전제로 개발되었습니다.
모든 연구원이 항상 실험을 하지 않음
모든 연구원이 항상 모든 자원을 사용하지 않음
연구원은 아주 많은 연산이 필요할 경우가 있음
연구원들이 데이터 I/O 및 분석을 위해 단순 작업을 반복하는 경우가 많음
JupyterHub를 위한 아키텍처는 다음과 같습니다:
JupyterHub에 로그인 합니다.
연구원이 원하는 사양이 노트북을 선택합니다.
CPU, RAM, GPU, 베이스 노트북 이미지를 선택할 수 있습니다.
원하는 사양이 없을 경우 챗봇 + CustomSpawner를 이용하여 동적으로 생성할 수 있습니다.
클러스터에 할당된 GPU 수를 모니터링하여 자원을 효율적으로 관리합니다.

3. AI 플랫폼 Kubeflow

Kubeflow는 ML/AI 연구 및 개발을 위한 통합 솔루션입니다. 연구원이 GPU 클러스터를 직접 구성할 필요없이, 쿠버네티스에 속한 GPU 노드들을 간접적으로 호출하여 가속할 수 있는 기능을 제공합니다.
다음과 같은 구성요소가 있습니다.
Pipeline: Argo Workflows를 엔진으로 정적/동적 파이프라인을 생성할 수 있습니다. 단일학습, 분산학습 등 모든 시나리오를 수행할 수 있습니다.
AutoML Katib: 하이퍼파라미터를 찾기 위한 스케줄러입니다. 같은 실험을 여러 번 반복하여 분석할 수 있습니다.
Training Operator: 단일 실험을 위해 분산학습을 수행하는 스케줄러입니다. 비동기 모델 학습 및 전파를 지원하는 환경에서 높은 성능으로 학습을 진행할 수 있습니다.
Model Registry: Kubeflow에 통합된 모델 이미지 레지스트리입니다. 클러스터 외부의 레지스트리도 사용할 수 있습니다.
이 AI 플랫폼 역시 JupyterHub와 같은 전제로 개발되었습니다.
모든 연구원이 항상 실험을 하지 않음
모든 연구원이 항상 모든 자원을 사용하지 않음
연구원은 아주 많은 연산이 필요할 경우가 있음
연구원들이 데이터 I/O 및 분석을 위해 단순 작업을 반복하는 경우가 많음
Kubeflow를 위한 아키텍처는 다음과 같습니다:
Kubeflow의 워크플로우 엔진은 쿠버네티스 잡 대신 Argo Workflows를 사용합니다.
이를 지원하는 모듈은 Pipeline, Katib AutoML, Training Operator가 있습니다.
이미 Argo Workflwos를 사내 워크플로우 엔진으로 사용하고 있기 때문에, 이 선택이 연구/개발 주기를 당길 수 있어 유용합니다.
연구원이 원하는 사양이 파이프라인을 설정합니다.
CPU, RAM, GPU, 베이스 노트북 이미지를 선택할 수 있습니다.
원하는 사양이 없을 경우 챗봇과 GitOps를 통해 사양을 수정할 수 있습니다.
실험결과는 각 파이프라인 실험 끝에 NAS에 저장하는 로직을 넣도록 가이드라인을 구성하였습니다. 실험이 끝난 후 실험 데이터를 그대로 TensorBoard 혹은 Wandb로 불러와 분석할 수 있습니다.

4. LLM+RAG 챗봇

사내 문서를 임베딩하여 학습한 벡터 데이터베이스를 이용한 챗봇을 프로토타이핑 개발하였습니다.
아키텍처: TBA
모델 선택
파인 튜닝 된 오픈소스 LLM 모듈 → 이미지 레지스트리에 저장
OpenAI API (LLM 성능 비교를 위해서)
모델 서빙
Ollama (개발용)
Kubeflow KServe (프로덕션, 고가용성)
UI/UX
Open WebUI
Python FastUI