Code2LoRA: 소프트웨어 진화에 따른 코드 언어 모델을 위한 하이퍼네트워크 생성 어댑터
요약
Code2LoRA는 저장소 수준의 컨텍스트를 추론 오버헤드 없이 주입하기 위해 하이퍼네트워크를 사용하여 저장소별 LoRA 어댑터를 생성하는 프레임워크입니다. 정적 코드베이스를 위한 Static 버전과 진화하는 코드베이스를 위한 Evo 버전을 지원하며, 새로운 벤치마크인 RepoPeftBench를 통해 성능을 입증했습니다.
핵심 포인트
- 하이퍼네트워크를 통한 효율적인 저장소별 LoRA 어댑터 생성
- 추론 시 토큰 오버헤드 없이 저장소 지식 주입 가능
- 정적 및 진화하는 코드베이스를 위한 두 가지 시나리오 지원
- 새로운 벤치마크 RepoPeftBench 구축 및 성능 검증
코드 언어 모델(Code language models)은 임포트(imports), API, 그리고 프로젝트 컨벤션(conventions)을 해결하기 위해 저장소 수준의 컨텍스트(repository-level context)가 필요합니다. 기존 방식들은 이러한 지식을 긴 입력값(RAG 또는 의존성 분석을 통해 검색됨)으로 주입하거나, 저장소별 미세 조정(fine-tuning) 및 LoRA를 통해 주입합니다. 이는 저장소 규모에서 비용이 많이 들고, 진화하는 코드베이스(evolving codebases)에 취약하다는 단점이 있습니다. 우리는 추론 시 토큰 오버헤드(inference-time token overhead) 없이 저장소 지식을 효과적으로 주입하는, 저장소별 LoRA 어댑터를 생성하는 하이퍼네트워크(hypernetwork) 프레임워크인 Code2LoRA를 소개합니다. Code2LoRA는 두 가지 사용 시나리오를 지원합니다: Code2LoRA-Static은 단일 저장소 스냅샷을 어댑터로 변환하여 안정적인 코드베이스의 이해에 적합하며, Code2LoRA-Evo는 코드 디프(code diff)마다 업데이트되는 GRU 은닉 상태(hidden state)에 의해 지원되는 어댑터를 유지하여 진화하는 코드베이스의 활발한 개발에 적합합니다. 매개변수 효율적 미세 조정(parameter-efficient fine-tuning) 베이스라인들과 Code2LoRA를 비교 평가하기 위해, 우리는 두 가지 트랙을 가진 604개의 Python 저장소 벤치마크인 RepoPeftBench를 구축했습니다: 40K의 학습 및 12K의 테스트 어설션-완성(assertion-completion) 태스크를 포함하는 정적(static) 트랙과, 215K의 커밋 유래 학습 및 87K의 커밋 유래 테스트 태스크를 포함하는 진화(evolution) 트랙입니다. 정적 트랙에서 Code2LoRA-Static은 63.8%의 교차 저장소(cross-repo) 및 66.2%의 저장소 내(in-repo) 정확히 일치(exact match)를 달성하여, 저장소별 LoRA 상한선(upper bound)과 일치하는 성능을 보였습니다. 진화 트랙에서 Code2LoRA-Evo는 60.3%의 교차 저장소 정확히 일치(exact match)를 달성했습니다(단일 공유 LoRA 대비 +5.2 pp). Code2LoRA의 코드는 https://anonymous.4open.science/r/code2lora-6857 에서 확인할 수 있으며, 모델 체크포인트와 RepoPeftBench 데이터셋은 https://huggingface.co/code2lora 에서 확인할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기