1. 논문 정보

  • 제목: LLaMA-Reviewer: Advancing Code Review Automation with Large Language Models through Parameter-Efficient Fine-Tuning
  • 저자: J. Lu et al
  • doi: https://doi.org/10.48550/arXiv.2308.11148
  • 키워드: Code Review Automation, LLM, Parameter-Efficient Fine-Tuning (PEFT), LLaMA, Software Quality Assurance

2. 요약

코드 리뷰에서 LLM은 사전 훈련된 언어 모델(PLM)과 비교했을 때, 코드 리뷰 자동화와 같은 복잡한 작업에 대해 더 효율적이고 범용적인 접근 방식을 제공한다. LLM은 다양한 도메인 지식을 이미 내재화하고 있기 때문에 도메인 특화 사전 훈련에 필요한 자원이 적고, 다양한 업무에 유연하게 적용될 수 있기에 코드 리뷰 자동화의 발전에 크게 기여할 수 있다고 저자는 평가하고 있다.

그림입니다. 원본 그림의 이름: CLP0000182c0002.bmp 원본 그림의 크기: 가로 1181pixel, 세로 505pixel

이 논문은 코드 리뷰 자동화를 위해 Meta에서 개발한 LLM인 LLaMA를 활용하는 새로운 프레임워크인 LLaMA-Reviewer를 소개한다. 파라미터의 효율적 파인튜닝(PEFT) 방법과 Zhiyu Li가 Automating Code Review Activities by Large-Scale Pre-training(2022)에서 제안한 파이프라인을 기반으로 1) 리뷰 필요성을 예측하고, 2) 리뷰 코멘트를 생성하여, 3) 코드 개선 작업을 Figure 1과 같이 포함한다.

코드 리뷰에 사용할 LLM을 LLaMA로 선택한 이유는 1) 코드 생성과는 별개로 코드 리뷰 작업이라는 점에서 복잡성을 처리할 수 있는 유연성과 높은 성능을 가지고 있고, 2) 오픈 소스로서의 장점이 선택이유이다.

그림입니다. 원본 그림의 이름: CLP0000182c0003.bmp 원본 그림의 크기: 가로 1125pixel, 세로 471pixel

이 논문에서 제시하는 프레임워크는 Figure 2와 같이 이중 단계의 파인튜닝 과정을 사용한다. 첫 단계에서 코드 데이터를 사용하여 LLaMA에 지시 사항 조정 방식을 사용하여 모델이 코드 리뷰 작업을 이해하고 작업 지시 사항을 준수하는 능력을 향상시킨다. 그런 다음 이렇게 향상된 LLaMA 모델을 사용하여 코드 리뷰 과정 내의 각 하위 작업에 대해 지도하는 형태의 파인 튜닝을 실시한다.

첫 단계인 지시 사항 조정 방식을 사용하기 위해, Stanford Alpaca의 템플릿을 활용하되, PEFT 방법을 적용하여 파인 튜닝을 수행하였다. 이 때 사용한 프롬프트 템플릿은 {지시 사항, 입력(선택적), 출력} 형식을 따른다. 이후 하위 작업에 대해서도 동일한 프롬프트 템플릿이 사용되어, 첫 단계에 파인 튜닝된 모델의 활용을 극대화한다. 사용한 프롬프트 템플릿은 Figure 3에서 확인할 수 있다.

그림입니다. 원본 그림의 이름: CLP0000182c0005.bmp 원본 그림의 크기: 가로 609pixel, 세로 807pixel

그림입니다. 원본 그림의 이름: CLP0000182c0006.bmp 원본 그림의 크기: 가로 604pixel, 세로 28pixel

Figure 2와 3에서 확인할 수 있듯이 코드 리뷰 프로세스에는 필수적인 세 가지 핵심 작업이 있다.

  • 리뷰 필요성 예측(RNP): diff hunk가 리뷰를 필요로 하는지를 이진 라벨(yes/ no)로 응답하는 작업이다.
  • 코드 리뷰 코멘트 생성(RCG): 주어진 diff hunk에 대한 코멘트를 생성한다. 여기서 두가지 관점이 제시되는데, 첫 번째는 코드의 개별 줄의 내용에 초점을 맞춘 줄 수준 관점(Crer 데이터셋 사용)과 코드 컨텍스트에 대한 전체적인 시각을 제공하는 메소드 수준 관점(Tufano 데이터셋 사용)을 제공한다.
  • 코드 정제: 코드 정제는 코드의 품질을 향상시키기 위해 기존 코드에 대한 사소한 조정이나 재정렬을 포함한다. 이러한 사소한 수정으로 인해, 입력 코드와 출력 코드는 종종 강한 유사성을 보여준다.

3. 결론

이 논문에서 소개한 LLaMA-Reviewer는 LLaMA의 가장 작은 버전을 사용해도(파라미터 6.7B, 제한된 튜닝 에포크) 최신 코드 리뷰 모델과 동등한 성능을 보였다. 사전 훈련 중 사용된 형식과 일치하는 입력 표현과 지시 사항 조정의 초기 단계를 적용함으로써 작업 성능을 향상시키고 모델이 추가적인 자연어 정보를 처리하는 능력을 높일 수 있음을 발견했다.


4. 느낀점

이 논문을 통해, LLM의 코드 리뷰 분야에서의 장점을 제 논문에 인용하고자 합니다. 그리고 LLM을 활용한 효과적인 코드 피드백 파이프라인은 기존 문헌 조사와는 차별화된 접근을 제시하고 있습니다. 이전 연구는 백엔드의 파이썬 컴파일러를 활용해 사용자가 실행 후 발생한 에러에 대한 피드백을 생성하며, 이를 통해 LLM의 한계를 보완하고 병목 현상을 해결하려 했습니다. 반면, 이 논문에서는 컴파일러 없이도 코드 리뷰 프로세스를 단계별로 세분화하여 진행함으로써 새로운 방법론을 제시합니다. 첫 번째 단계에서는 이진 라벨을 사용해 코드 리뷰의 필요성을 판단하고, 두 번째 단계에서 필요한 경우 상세한 코드 리뷰 코멘트를 생성합니다. 논문에서는 구체적으로 언급하지 않았으나, 마지막 단계에서 생성된 코멘트를 바탕으로 코드를 정제하고 개선합니다. 이전 연구들이 덩어리로 이루어진 프롬프트 요청과 응답에 의존한 것과 달리, 이 논문에서는 각 단계를 명확하게 구분하고 캡슐화함으로써 입력과 결과를 체계화하는 방식은 체계적인 접근이라 생각했습니다. 다만, 웹 기반으로 구현하기 위한 API 개발이나 서비스 개발까지 이어지지 않아 아쉬웠습니다.

댓글남기기