기업 코드 저장소 맞춤형 LLM 자동 커스터마이징 의미 스코프 기반 접근법

기업 코드 저장소 맞춤형 LLM 자동 커스터마이징 의미 스코프 기반 접근법
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

본 논문은 기업 내부 코드 저장소의 특수한 스타일과 규칙을 반영하도록 대형 언어 모델(LLM)을 자동으로 맞춤화하는 방법을 제안한다. 코드의 의미적 스코프를 추출해 프리픽스‑라벨 쌍을 자동 생성하고, 이를 기반으로 Retrieval‑Augmented Generation(RAG)과 Fine‑Tuning(FT) 두 가지 커스터마이징 전략을 비교한다. 실험 결과, 의미 스코프 기반 FT가 RAG 및 기존 대형 모델을 능가하며, 중간 규모 모델도 훨씬 큰 비커스 모델보다 우수한 코드 완성 성능을 보였다.

상세 분석

이 연구는 기업용 코드베이스가 공개 데이터에 포함되지 않아 일반 LLM이 정확한 완성을 제공하지 못한다는 문제를 출발점으로 삼는다. 저자들은 “의미 스코프(semantic scope)”라는 개념을 도입해, 코드의 의미적 경계를 파악하고 이를 학습 데이터로 전환한다. 구체적으로, 저장소 전체를 파일 단위로 수집하고, 언어별(Java, C++) 구문 트리를 이용해 괄호·중괄호 사이의 블록을 후보 스코프로 선정한다. 이후 스코프 크기(50~1 000 바이트), 깊이, 선행 코드 양(≥200 바이트) 등 필터링 기준을 적용해 잡음이 적은 샘플을 확보한다.

데이터 전처리 단계에서는 각 스코프를 ‘프리픽스(코드 앞부분)’와 ‘라벨(스코프 전체)’로 나누어 쿼리‑라벨 쌍을 만든다. 기본 쌍은 스코프 시작 지점을 기준으로 생성하고, 추가적인 랜덤 오프셋을 도입해 모델의 일반화 능력을 강화한다. 라벨 끝에는 명시적인 EOS 토큰을 삽입해 모델이 언제 출력을 멈출지 학습하도록 설계하였다.

두 가지 커스터마이징 전략을 비교한다. RAG는 생성된 쿼리‑라벨 쌍을 벡터 데이터베이스에 저장하고, 추론 시 쿼리를 임베딩해 가장 유사한 N개의 라벨을 검색해 프롬프트에 병합한다. 이 방식은 검색 정확도와 라벨 품질에 크게 의존하므로, 의미 스코프가 충분히 구분되지 않을 경우 부정확한 완성이 발생한다. 반면 FT는 동일한 데이터셋을 사용해 사전 학습된 모델을 추가 학습한다. 의미 스코프 기반 라벨은 코드의 ‘의미’를 직접 전달하므로, 모델이 스타일, 네이밍 규칙, 오류 처리 패턴 등을 내재화한다.

실험은 두 개의 대규모 사내 저장소(Java와 C++)와 공개 벤치마크(Repobench‑C, CrossCodeEval 등)에서 수행되었다. 평가 지표는 정확도(정답 토큰 일치율), ‘effort‑to‑value’(예측 길이 대비 개발자 절감 시간), 응답 지연(latency) 등을 포함한다. 결과는 FT가 평균 12 %~18 % 높은 정확도를 보였으며, 특히 중간 규모(8 B 파라미터) 모델이 120 B 규모의 비커스 모델보다 1 초 내에 정확한 완성을 제공함을 확인했다. RAG은 검색 단계에서 평균 30 ~ 100 초의 지연을 보였고, 상위 N개의 라벨이 실제 정답과 일치하지 않을 경우 완성 품질이 급격히 떨어졌다.

이 논문은 의미 스코프가 코드 스타일을 학습시키는 핵심 단위임을 실증하고, 자동화된 파이프라인이 인간 라벨링 비용을 크게 절감한다는 점을 강조한다. 또한, 스코프 필터링 파라미터(크기, 깊이, 선행 코드 양)의 선택이 모델 성능에 미치는 영향을 정량적으로 분석하였다. 한계점으로는 현재 스코프 추출이 구문 트리에 크게 의존해 언어 확장성이 제한적이며, 복잡한 의존 관계가 있는 대형 함수나 클래스 전체를 포괄하기엔 샘플링 전략이 추가로 필요함을 지적한다. 향후 연구에서는 정적 분석 도구와 동적 실행 트레이스를 결합해 스코프 정의를 정교화하고, 멀티모달(코드‑문서) 학습으로 개발자 의도를 더 정확히 파악하는 방안을 제시한다.


댓글 및 학술 토론

Loading comments...

의견 남기기