BigBertha는 오픈 소스 컨테이너 네이티브 기술을 사용하여 모든 Kubernetes 클러스터에서 자동화된 LLMOps(Large Language Models Operations)를 달성할 수 있는 방법을 보여주는 아키텍처 설계입니다.
? BigBertha는 Prometheus를 활용하여 LLM(Large Language Model) 제공 모듈을 모니터링합니다. 데모 목적으로 Streamlit 앱을 사용하여 LLM을 제공하고 Prometheus는 이 앱에서 측정항목을 스크랩합니다. 성능 저하를 감지하도록 경고가 설정됩니다.
Prometheus는 모델 성능이 저하되면 경고를 트리거합니다. 이러한 경고는 Argo 이벤트를 사용하여 재교육 파이프라인을 트리거하여 모델을 미세 조정하는 AlertManager에 의해 관리됩니다.
?️ 재교육 파이프라인은 Argo Workflows를 사용하여 조정됩니다. 이 파이프라인은 LLM 관련 재교육, 미세 조정 및 지표 추적을 수행하도록 맞춤화될 수 있습니다. MLflow는 재교육된 LLM을 기록하는 데 사용됩니다.
MinIO는 비정형 데이터 저장에 사용됩니다. Argo Events는 MinIO에서 업로드 이벤트를 수신하도록 설정되어 새 데이터가 업로드될 때 벡터 수집 워크플로를 트리거합니다.
? Argo Workflows는 벡터 생성 및 수집을 위해 LlamaIndex를 활용하는 벡터 수집 파이프라인을 실행하는 데 사용됩니다. 이러한 벡터는 검색 증강 생성을 위한 지식 기반 역할을 하는 Milvus에 저장됩니다.
BigBertha는 다음과 같은 몇 가지 주요 구성요소에 의존합니다.
ArgoCD: BigBertha 스택의 모든 구성 요소를 관리하는 Kubernetes 기반 지속적 전달 도구입니다.
Argo Workflows: 벡터 수집 및 모델 재교육 파이프라인을 실행하는 데 사용되는 Kubernetes 기반 워크플로 엔진입니다.
Argo Events: 다양한 애플리케이션과 구성요소를 연결하고 이벤트 기반 워크플로를 트리거하는 Kubernetes 기반 이벤트 기반 종속성 관리자입니다.
Prometheus + AlertManager: 모델 성능과 관련된 모니터링 및 경고에 사용됩니다.
LlamaIndex: 데이터 수집 및 인덱싱에 사용되는 LLM과 데이터 소스를 연결하기 위한 프레임워크입니다.
Milvus: 벡터를 저장하고 쿼리하기 위한 Kubernetes 기반 벡터 데이터베이스입니다.
MinIO: 구조화되지 않은 데이터를 저장하는 데 사용되는 오픈 소스 객체 스토리지 시스템입니다.
MLflow: 실험 추적 및 모델 관리를 포함하여 기계 학습 수명 주기를 관리하기 위한 오픈 소스 플랫폼입니다.
Kubernetes: 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 컨테이너 오케스트레이션 플랫폼입니다.
Docker 컨테이너: Docker 컨테이너는 일관되고 재현 가능한 방식으로 애플리케이션을 패키징하고 실행하는 데 사용됩니다.
데모로 BigBertha에는 Llama2 7B 양자화 챗봇 모델을 제공하는 Streamlit 기반 챗봇이 포함되어 있습니다. 간단한 Flask 앱을 사용하여 측정항목을 노출하고 Redis는 Streamlit과 Flask 프로세스 사이의 중개자 역할을 합니다.
이 프로젝트는 오픈 소스이며 이 저장소에 포함된 LICENSE 파일에 설명된 이용 약관이 적용됩니다.