본문 바로가기
TIL _Today I Learned/2024.12

[DAY 97] 최종 프로젝트_ GraphRAG, MLOps, CI/CD

by gamdong2 2024. 12. 5.
[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 9기
학습일 : 2024.12.05

📕 프로젝트 작업 내역

  • GraphRAG / LLM / AI Agent
  • MLOps
  • CI/CD
  • GitLab

 

📗 수행 결과

1. GraphRAG

1) GraphRAG(Graph Retrieval-Augmented Generation) 이란?

  • 기존 RAG: 단순히 텍스트 기반의 지식 검색∙생성에 초점
  • GraphRAG는 노드와 엣지로 구성된 그래프 데이터의 구조적 정보를 활용하여 더 정교한 정보 검색∙텍스트 생성이 가능 

 2) GraphRAG의 구성

  • Graph-Based Retrieval
    • 그래프 데이터에서 관련 정보(노드 및 엣지)를 검색
    • 질의와 노드 간의 유사성을 계산하거나, 그래프 탐색 알고리즘을 사용
    • 예: 교육과정 로드맵에서 특정 수학 문제와 관련된 지식을 검색
  • Text Generation
    • 검색된 정보와 질의를 기반으로, LLM이 텍스트 생성
    • 학습 데이터 또는 추가 규칙을 통해 더 세밀한 라벨링 가능

3) RAG vs GraphRAG

  RAG GraphRAG
데이터 구조 단순 텍스트 데이터 그래프 데이터 (노드와 엣지로 구성된 관계형 데이터)
정보 검색 방식 Dense Retrieval (질의와 문서 간 유사도 기반 검색) Graph-Based Retrieval (그래프 탐색 및 관계 기반 검색)
관계 모델링 텍스트 간의 단순 유사도 계산 노드 간의 관계를 활용하여 복잡한 맥락 이해
응용 분야 문서 검색 및 질문-답 생성 관계형 데이터가 필요한 복잡한 응용(교육, 의료, 네트워크 분석 등)
장점 간단하고 빠른 검색 관계 기반의 검색과 텍스트 생성으로 맥락 이해도 향상
단점 복잡한 관계를 다루기 어려움 그래프 구축 및 처리에 더 많은 계산 자원 필요


 4)  프로젝트에 적용

① 교육과정 로드맵을 그래프로 구성

  • 노드(Node): 초등 1~6학년 교육과정에 따른 성취수준
  • 엣지(Edge): 개념 간의 관계(선수 학습 관계)

② 수학 문제 라벨링

  • 입력 문제를 GraphRAG의 Retrieval 단계에 전달
  • 관련 노드와 연결 정보를 바탕으로 LLM이 적절한 라벨링 수행
역할 GraphRAG LLM
목적 그래프 데이터에서 입력 질의와 관련된 정보 검색 검색된 정보를 텍스트로 생성 및 라벨링 수행
입력 그래프 데이터와 사용자 질의 GraphRAG 검색 결과 및 질의
출력 가장 관련성이 높은 노드와 엣지 자연어 텍스트(설명) 및 라벨링 결과
작업 방식 그래프 탐색 및 정보 검색 자연어 처리 및 라벨링
예시 "삼각형의 합동 조건"과 연결된 성취 수준 검색 "이 문제는 삼각형의 합동 조건과 관련된 문제입니다." 생성

 

2. AI Agent

1) AI Agent 란?

  • AI Agent: 특정 작업을 자동으로 수행하는 인공지능 기반 시스템
  • 주어진 데이터를 분석하고, 의사결정을 내리며, 주어진 목표를 달성하기 위해 작동
  • 특정 환경에서 입력(데이터)과 출력(결과) 사이의 관계를 학습하거나, 사전 정의된 규칙을 활용하여 지능적이고 반복 가능한 작업을 자동화

2) AI Agent의 구현 방식

AI Agent는 아래 두 가지 방식으로 동작할 수 있음

 

(i) 규칙 기반(Rule-Based)

  • 사전에 정의된 규칙을 사용해 RAG와 LLM의 결과를 검증
  • ex: RAG에서 반환된 노드가 "기하"와 관련되면, LLM 결과에 반드시 "기하"라는 라벨이 포함되어야 한다는 규칙을 적용

(ii) 모델 기반(Model-Based)

  • AI Agent 자체가 모델로 구현되어, RAG와 LLM 결과를 학습하고 패턴을 학습해 검증 작업 수행
  • ex: RAG와 LLM 결과를 입력으로 받아, "라벨링이 정확하다" 또는 "수정 필요"를 예측하는 분류 모델

3) 프로젝트에 적용

① 교육과정 로드맵을 그래프로 구성

  • 노드(Node): 초등 1~6학년 교육과정에 따른 성취수준
  • 엣지(Edge): 개념 간의 관계(선수 학습 관계)

② 수학 문제 라벨링

  • 입력 문제를 GraphRAG의 Retrieval 단계에 전달
  • 관련 노드와 연결 정보를 바탕으로 LLM이 적절한 라벨링 수행

③ AI Agent의 검증

  • 라벨링 검증
    • LLM이 생성한 라벨이 RAG 결과와 일치하는지 확인
    • ex: RAG에서 "삼각형의 합동 조건"과 관련된 노드를 반환했는데, LLM이 엉뚱한 라벨("대수")을 생성했는지 검토
  • 정확도 평가
    • LLM의 라벨링 결과가 RAG의 검색 데이터와 얼마나 일치하는지 평가
    • ex: "기하"라는 라벨이 RAG에서 반환된 노드와 관련성이 높은지 확인
  • 보완 작업
    • RAG의 추가 정보를 분석해 LLM의 결과를 수정하거나, 보완적인 라벨링 수행
역할 GraphRAG LLM AI Agent
목적 그래프 데이터(노드, 엣지)를 통해 정보 검색 및 관계 탐색 검색된 정보를 기반으로 텍스트 생성 및 라벨링 수행 GraphRAG과 LLM 결과를 검증하고 최적화 수행
입력
데이터
사용자 질의(Query), 그래프 데이터 구조 GraphRAG의 검색 결과 GraphRAG 및 LLM의 결과
출력
데이터
검색된 정보(노드, 엣지, 관계) 생성된 텍스트 및 라벨링 결과 검증된 라벨, 추가 보완 라벨
주요 작업 그래프 탐색, 노드 간 관계 분석 텍스트 생성 및 초기 라벨링 라벨링 검증, 수정, 최적화

 

4) 활용 예제

  • 입력 데이터
    • 문제: "이 삼각형 문제는 무엇과 관련이 있나요?"
    • GraphRAG 결과: "삼각형의 합동 조건", "중급 문제"
    • LLM 결과: "이 문제는 기하학의 삼각형 합동 조건과 관련되며, 중급 난이도로 분류됩니다."
  • AI Agent의 작업
    • 라벨링 검증: GraphRAG에서 반환된 "삼각형의 합동 조건"이 LLM의 라벨("기하", "중급")과 일치하는지 확인.
    • 라벨 추가: Graph RAG 결과에 더 많은 관련 데이터(예: "각도 계산")가 포함되어 있다면, LLM 결과에 이를 추가하도록 수정
    • 결과 보고: 최종 라벨: ["기하", "중급", "삼각형 합동 조건"]

 

3. MLOps

1) MLOps 란?

  • MLOps(Machine Learning Operations): 머신러닝 모델 개발과 배포, 그리고 운영을 관리하는 일련의 프로세스와 도구를 통칭
  • 소프트웨어 엔지니어링의 DevOps를 머신러닝 프로젝트에 적용한 형태로, 모델의 개발, 배포, 모니터링, 업데이트를 체계적으로 관리하는 것을 목표로 함

2) 주요 특징

  • 자동화: 모델 학습, 평가, 배포를 자동화하여 반복 작업을 줄임
  • 효율성: 데이터 준비부터 모델 배포까지 프로세스를 효율적으로 연결
  • 지속 가능성: 모델을 배포 후에도 모니터링과 업데이트를 통해 지속적으로 유지
  • 협업 가능성:데이터 과학자와 엔지니어 간의 원활한 협업을 지원

3) MLOps의 구성 요소

  • 데이터 버전 관리: 데이터의 변경 사항 추적 및 관리
  • 모델 관리: 학습된 모델 버전 관리
  • 배포 파이프라인: 모델을 안정적으로 배포
  • 모니터링 및 로깅: 운영 중인 모델의 성능 추적 및 로깅
  • 재학습 및 업데이트: 새로운 데이터로 모델 재학습

4) MLOps의 필요성

  • 머신러닝 프로젝트는 단순히 모델을 학습시키는 것을 넘어, 배포 후에도 지속적인 관리와 개선이 필요
  • MLOps는 모델의 라이프사이클 전체를 관리하여 성능과 신뢰성을 유지

 

4. CI/CD

1) CI/CD 란?

  • CI/CD(Continuous Integration/Continuous Deployment): 코드 변경 사항을 자동으로 통합(CI)하고 배포(CD)하는 소프트웨어 개발 방법론
  • MLOps에서도 이 개념을 적용하여 모델 코드와 파이프라인의 지속적 배포를 지원

2) CI(Continuous Integration, 지속적 통합)

  • 개발자들이 작업한 코드를 중앙 저장소에 자주 병합하여 코드 충돌을 최소화
  • 병합 후 자동으로 빌드(Build) 및 테스트 과정을 수행

3) CD(Continuous Deployment, 지속적 배포)

  • 통합된 코드가 자동으로 프로덕션 환경에 배포
  • 테스트를 통과한 코드와 모델이 자동으로 사용자에게 제공됨

4) CI/CD의 구성 요소

  • 소스 코드 관리: GitLab, GitHub 등에서 버전 관리
  • 빌드 도구: 코드를 컴파일하거나, 실행 가능한 상태로 준비
  • 테스트: 단위 테스트, 통합 테스트 등을 수행하여 품질 확인
  • 배포: 새로운 코드를 자동으로 배포
[tip] 빌드(build) 란?
- 빌드(Build): 소프트웨어 개발 과정에서 소스 코드(Source Code)를 실행 가능한 상태로 변환 하는 과정
- 이는 사용자가 프로그램을 실행할 수 있도록 소스 코드, 라이브러리, 종속성 등을 컴파일*하거나 패키징*하여 실행 가능한 형식(예: 실행 파일, 배포 패키지 등)으로 만드는 작업

* 컴파일(Compile): 소스 코드를 기계어로 번역
* 패키징(Packaging): 실행 가능한 모든 파일을 하나의 패키지로 묶음
* 테스트(Build Test): 빌드된 결과물이 제대로 작동하는지 확인하는 과정

 

5) MLOps와 CI/CD의 관계

  • MLOps에서 CI/CD는 머신러닝 파이프라인에 자동화 기능을 추가
  • ex
    • CI: 데이터 전처리 코드나 모델 코드가 변경되면 자동으로 테스트와 학습 수행
    • CD: 학습된 모델이 검증을 통과하면 자동으로 배포 환경에 업데이트

 

5. GitLab

1) GitLab이란?

  • GitLab: 소스 코드 관리 및 DevOps 도구로, Git을 기반으로 개발된 플랫폼

2) 주요 기능

  • 코드 관리: 분산형 버전 관리 시스템(Git)을 통해 팀 간 협업 지원
  • CI/CD 파이프라인: 코드 변경 사항을 자동으로 테스트하고 배포
  • 이슈 및 프로젝트 관리: 이슈 트래킹, 병합 요청(Merge Request), 작업 흐름 관리
  • 컨테이너 레지스트리: Docker 컨테이너 이미지를 저장하고 관리

3) GitLab의 역할

  • 소스 코드 저장
    • 프로젝트의 모든 코드를 중앙 저장소로 관리
    • Git 명령어를 통해 코드 버전을 관리하고 병합 작업 수행
  • CI/CD 지원
    • GitLab CI/CD를 통해 코드 테스트, 빌드, 배포 작업을 자동화
    • 신대표님의 워크플로우에서는 GitLab 푸시 → Argo Workflows 실행 → 모델 학습 파이프라인 수행으로 이어지는 자동화 과정을 지원
  • 팀 협업 도구
    • 코드 리뷰, 병합 요청(MR)을 통해 팀 간 원활한 협업 환경 제공

 

6. 프로젝트에서의 MLOps & CI/CD

1) MLOps: 머신러닝 파이프라인 자동화 및 관리

  • 주요 역할
    • 모델 학습 파이프라인 구축 및 관리
    • 모델 학습 데이터와 결과물(S3 저장)을 체계적으로 관리
    • 학습된 모델을 API로 배포 후 성능 모니터링
  • 워크플로우 상의 MLOps 요소
    • 모델 학습 파이프라인 구축
      • GitLab CI/CD 파이프라인을 통해 모델 학습 자동화
      • .gitlab-ci.yml 파일로 다음 작업 정의
        • 데이터 전처리 → 모델 학습 → 검증 → 결과 저장(S3)
    • 결과물 관리
      • 학습된 모델과 학습 로그를 S3에 저장
      • S3에 저장된 학습 결과물을 API로 배포할 준비
    • 모델 모니터링
      • GitLab CI/CD 파이프라인을 활용해 API 상태를 주기적으로 확인
      • 필요 시 재학습 또는 모델 업데이트 수행

2) CI/CD: 코드 변경 자동화 및 배포

  • 주요 역할
    • 코드 변경 사항(GitLab 푸시)을 자동으로 통합(CI)
    • 모델 학습 결과를 기반으로 API를 자동으로 배포(CD)
  • 워크플로우 상의 CI/CD 요소
    • Continuous Integration (CI)
      • GitLab에 코드가 푸시되면 GitLab Runner가 이를 받아 모델 학습 파이프라인 실행
      • 데이터 전처리 → 학습 → 검증 → 결과 저장(S3)
      • 학습 결과(S3 저장) 후, 최종 모델 URI를 GitLab에 저장
    • Continuous Deployment (CD)
      • GitLab CI/CD 파이프라인에서 모델 학습 결과(S3 저장된 모델 URI)를 API에 배포
      • AWS Lambda와 API Gateway를 통해 최종 결과를 서비스
      • API 배포 상태와 결과를 GitLab CI/CD에서 모니터링

3) AWS 기반 MLOps 및 CI/CD 도구

  • AWS에서 활용될 서비스
    • EC2: 모델 학습 환경 구축 (OCR 모델, YOLOv8, Multimodal 모델)
    • S3: 학습 데이터 및 결과물(모델, 학습 로그) 저장
    • Lambda: 경량화된 API 로직 실행 및 모델 배포 지원
    • API Gateway: 학습된 모델 결과를 API로 제공
[tip] 쿠버네티스와 도커 컨테이너의 사용 여부
(i) 쿠버네티스 미사용
- 쿠버네티스를 사용하지 않고, GitLab CI/CD를 통해 컨테이너 관리 및 실행을 수행
(ii) 도커 컨테이너 사용
- 도커 컨테이너로 학습 환경 및 API 환경 구성
- 컨테이너 이미지 빌드 및 관리
   - GitLab CI/CD를 사용하여 컨테이너 이미지를 자동으로 빌드하고 실행
   - GitLab Runner를 통해 컨테이너 기반의 학습 파이프라인과 API 배포 파이프라인 수행

 

 

 

📙 내일 일정

  • 최종 프로젝트