1. LLM이란?

정의

  • LLM (Large Language Model): 대규모 언어 모델로, 대량의 텍스트 데이터를 학습하여 자연어 처리, 생성 및 분석 작업을 수행할 수 있는 모델

실사용 사례

  • 문서 요약: 법률 문서나 기술 매뉴얼을 간결하게 요약.
  • 자동 응답 시스템: 고객 서비스 봇 구현.
  • 코드 분석 및 생성: 코드 리뷰, 오류 검출, 리팩토링 제안 등.

2. 왜 Local LLM인가?

Local LLM의 정의

  • Local LLM: 로컬 환경에서 동작하는 대규모 언어 모델로, 데이터를 외부 서버로 전송하지 않고도 AI 기능을 활용할 수 있다.

Local LLM 선택 이유

  1. 보안
    • 회사의 MR(Merge Request) 검토는 보안 규칙상 외부로 데이터를 전송불가
    • 민감한 소스 데이터를 외부 서버로 전송하지 않고도 작업을 수행 가능.
  2. 비용 절감
    • API 호출 비용을 절감하고 지속 가능한 환경 구축.
  3. 커스터마이징
    • 우리 조직의 니즈에 맞춘 모델로 동작.

3. 자동 코드 리뷰의 필요성

현재 상황

  • MR(Merge Request)는 개발 생산성에 필수적.
  • 그러나 시간과 자원이 한정적이기 때문에 종종 관행적 승인으로 이어지는 경우가 있음.

자동 코드 리뷰로 가능한 작업

  1. 문법 및 구조 검토
  2. 로직 오류 탐지
  3. 리팩토링 제안 검토
  4. 피드백 생성

자동화 가능한 영역은 최소한의 기계적 코드 리뷰로 맡기고, 개발자는 핵심 작업에 집중.


4. 사용 기술 정리

Ollama란?

  • Ollama: OpenAI 출신 개발자가 만든 오픈소스 솔루션으로, 로컬 환경에서 LLM을 쉽게 설치, 실행 및 관리할 수 있도록 지원.

모델 선정 과정

한정된 스펙으로 동작가능한 모델검토 (only cpu )

  • 검토한 모델:
    1. Llama
    2. CodeLlama
    3. Qwen 2.5
  • 최종 선정 모델: Qwen 2.5 (Alibaba 개발)
    • 장점:
      • 자연어 처리 및 코드 리뷰에서 우수한 성능.
      • CPU에서도 원활히 실행 가능.
      • 빠르고 정확한 결과 제공.

5. 구조 설계 및 동작 원리

전체 구조

  1. GitLab Webhook: 이벤트 발생 시 웹서버로 요청 전송.
  2. Webserver: Webhook 요청을 수신하여 Flask로 전달.
  3. Flask: MR 데이터를 수신 및 처리 후 프롬프트 엔지니어링 과정을 거쳐 Ollama API로 전달.
  4. Ollama: 코드 리뷰 결과 생성.
  5. Slack: 리뷰 결과를 알림으로 전달.
GitLab > (Webhook) > Webserver > Flask (MR 수신) > Ollama API > Slack 알림

구조 설계 이유

  • GitLab Webhook은 기본적으로 동일 도메인에서만 동작.
  • 따라서 Webserver를 통해 Flask로 요청을 전달.
  • 프롬프트엔지니어링을 도메인 분리
  • 차후 GPU 서버를 별도로 구축하여 성능 향상을 목표로 설계.

6. 셋팅 가이드

1) GitLab Webhook 설정

  • Webhook URL: Webserver의 엔드포인트.
  • 필요한 데이터:
    • 브랜치
    • 프로젝트 정보

2) Webserver 설정

  • Webserver는 GitLab에서 전달된 데이터를 중계.
  • 필터링된 데이터를 Flask로 전달.

3) Flask 설정

  • Flask를 사용하여 MR 데이터를 처리하고 Ollama API와 통신.
  • Slack으로 결과 반환.

4) Ollama 설치 및 실행


7. 후기 및 개선점

후기

  1. 모델 최적화
    • 프롬프트 작성에 시간이 많이 소요됨.
    • 정확도와 적응성을 높이기 위해 지속적인 튜닝 필요.
  2. 리소스 한계
    • GPU 사용의 필요성을 강하게 느낌.
  3. 권한 문제
    • 방화벽, 슬랙, 서버 권한 등 여러 제약 사항.

앞으로의 계획

  • 회사 코드를 학습시켜 도메인 전문가 AI로 발전.
  • GPU 서버 환경 구축으로 성능 최적화.
  • 프롬프트 최적화를 위한 내부 가이드 제작.

8. 결론

Local LLM을 활용한 AI 코드 리뷰는 보안과 효율성을 모두 잡을 수 있는 도구. 초기 구축 및 운영에는 어려움이 있지만, 지속적인 개선과 튜닝을 통해 개발 생산성을 크게 향상시킬것을 기대해봄.

+ Recent posts