1. LLM이란?
정의
- LLM (Large Language Model): 대규모 언어 모델로, 대량의 텍스트 데이터를 학습하여 자연어 처리, 생성 및 분석 작업을 수행할 수 있는 모델
실사용 사례
- 문서 요약: 법률 문서나 기술 매뉴얼을 간결하게 요약.
- 자동 응답 시스템: 고객 서비스 봇 구현.
- 코드 분석 및 생성: 코드 리뷰, 오류 검출, 리팩토링 제안 등.
2. 왜 Local LLM인가?
Local LLM의 정의
- Local LLM: 로컬 환경에서 동작하는 대규모 언어 모델로, 데이터를 외부 서버로 전송하지 않고도 AI 기능을 활용할 수 있다.
Local LLM 선택 이유
- 보안
- 회사의 MR(Merge Request) 검토는 보안 규칙상 외부로 데이터를 전송불가
- 민감한 소스 데이터를 외부 서버로 전송하지 않고도 작업을 수행 가능.
- 비용 절감
- API 호출 비용을 절감하고 지속 가능한 환경 구축.
- 커스터마이징
- 우리 조직의 니즈에 맞춘 모델로 동작.
3. 자동 코드 리뷰의 필요성
현재 상황
- MR(Merge Request)는 개발 생산성에 필수적.
- 그러나 시간과 자원이 한정적이기 때문에 종종 관행적 승인으로 이어지는 경우가 있음.
자동 코드 리뷰로 가능한 작업
- 문법 및 구조 검토
- 로직 오류 탐지
- 리팩토링 제안 검토
- 피드백 생성
자동화 가능한 영역은 최소한의 기계적 코드 리뷰로 맡기고, 개발자는 핵심 작업에 집중.
4. 사용 기술 정리
Ollama란?
- Ollama: OpenAI 출신 개발자가 만든 오픈소스 솔루션으로, 로컬 환경에서 LLM을 쉽게 설치, 실행 및 관리할 수 있도록 지원.
모델 선정 과정
한정된 스펙으로 동작가능한 모델검토 (only cpu )
- 검토한 모델:
- Llama
- CodeLlama
- Qwen 2.5
- 최종 선정 모델: Qwen 2.5 (Alibaba 개발)
- 장점:
- 자연어 처리 및 코드 리뷰에서 우수한 성능.
- CPU에서도 원활히 실행 가능.
- 빠르고 정확한 결과 제공.
- 장점:
5. 구조 설계 및 동작 원리
전체 구조
- GitLab Webhook: 이벤트 발생 시 웹서버로 요청 전송.
- Webserver: Webhook 요청을 수신하여 Flask로 전달.
- Flask: MR 데이터를 수신 및 처리 후 프롬프트 엔지니어링 과정을 거쳐 Ollama API로 전달.
- Ollama: 코드 리뷰 결과 생성.
- 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 설치 및 실행
- 설치:
- curl -fsSL https://ollama.com/install.sh | sh
- 모델 실행:
- ollama run qwen2.5
- API 서버 실행:
- ollama serve
7. 후기 및 개선점
후기
- 모델 최적화
- 프롬프트 작성에 시간이 많이 소요됨.
- 정확도와 적응성을 높이기 위해 지속적인 튜닝 필요.
- 리소스 한계
- GPU 사용의 필요성을 강하게 느낌.
- 권한 문제
- 방화벽, 슬랙, 서버 권한 등 여러 제약 사항.
앞으로의 계획
- 회사 코드를 학습시켜 도메인 전문가 AI로 발전.
- GPU 서버 환경 구축으로 성능 최적화.
- 프롬프트 최적화를 위한 내부 가이드 제작.
8. 결론
Local LLM을 활용한 AI 코드 리뷰는 보안과 효율성을 모두 잡을 수 있는 도구. 초기 구축 및 운영에는 어려움이 있지만, 지속적인 개선과 튜닝을 통해 개발 생산성을 크게 향상시킬것을 기대해봄.