[Paper] 보이지 않는 코드베이스 도메인 데이터 합성 및 Code Graphs 기반 학습
Source: arXiv - 2602.20799v1
개요
이 논문은 최신 소프트웨어 프레임워크를 도입하는 개발자들이 겪는 실질적인 어려움을 다룹니다. 코드 완성이나 생성 도구에 사용되는 대형 언어 모델(LLM)은 사전 학습 시 해당 프레임워크의 API를 접해보지 못하면 종종 제대로 작동하지 못합니다. 저자들은 UCD‑Training이라는 두 단계 파이프라인을 제안합니다. 이 파이프라인은 보이지 않는 코드베이스의 원시 소스 코드를 기반으로 “사용 인식” 학습 데이터를 자동으로 생성하고, 이후 코드 LLM을 미세 조정하여 API 관계를 추론하고 환상을 일으키지 않으면서 올바른 호출을 구성할 수 있게 합니다.
주요 기여
- Code‑graph construction: 보이지 않는 코드베이스를 파싱해 import 관계, 클래스 계층 구조, API 시그니처를 포괄하는 파일 수준 의존성 그래프를 생성합니다.
- Dependency‑preserving continued pre‑training (CPT): 모델이 코드베이스의 구조적 의존성을 유지하면서 새로운 도메인에 적응하도록 합니다.
- **Graph‑grounded supervised fine‑tuning (SFT)**와 세 가지 새로운 합성 데이터 군:
- Single‑hop relation reasoning – 모델이 직접적인 API 관계를 식별해야 하는 질문(예: “어떤 함수가
Tensor를 반환합니까?”). - Compositional API reasoning – 여러 호출을 올바르게 연결해야 하는 다단계 작업.
- Codebase utilization – 실제 사용 시나리오(예: “프레임워크의
Dataset클래스를 사용해 데이터 로더를 작성하세요”).
- Single‑hop relation reasoning – 모델이 직접적인 API 관계를 식별해야 하는 질문(예: “어떤 함수가
- Explicit reasoning traces: 각 합성 예제에 단계별 추론 과정을 포함시켜 모델이 “소리 내어 생각”하도록 학습시키고, 환상을 감소시킵니다.
- UnseenCodeBench: 실제로 보지 못한 프레임워크에서 코드 생성 능력을 평가하는 새로운 벤치마크로, 여러 도메인(ML 라이브러리, 웹 프레임워크 등)을 포괄합니다.
- Comprehensive empirical validation: 6개의 다양한 코드베이스에 걸쳐 일반 LLM 및 검색 기반 생성(RAG) 베이스라인 대비 일관된 성능 향상을 입증합니다.
방법론
-
코드 그래프 파싱 및 구축
- 원시 소스 트리를 정적 분석기에 전달하여 모듈, 클래스, 함수 및 import 문을 추출합니다.
- 노드 = 코드 엔티티; 엣지 = “depends‑on”(import), “inherits‑from”, 또는 “calls‑within”.
- 그래프는 데이터 합성 중에 탐색할 수 있는 경량 JSON 형식으로 저장됩니다.
-
1단계 – 의존성 보존 연속 사전 학습 (CPT)
- 사전 학습된 코드 LLM(예: CodeLlama‑7B)에서 시작하여, 모델을 파일 수준 스니펫과 해당 의존성 컨텍스트(예: “File A imports B; here is the content of A”)가 짝지어진 형태로 추가 학습합니다.
- 이 단계는 모델의 토큰 임베딩을 새로운 코드베이스의 명명 규칙에 맞추면서 전역 구조를 유지합니다.
-
2단계 – 그래프 기반 감독 미세 조정 (SFT)
- 코드 그래프를 사용하여 세 가지 합성 코퍼스를 자동으로 생성합니다:
- Single‑hop – 엣지를 무작위로 선택(e.g.,
ClassX→methodY)하고, 모델에게 소스로부터 타깃을 검색하도록 요청합니다. - Compositional – 그래프에서 길이 2‑3인 경로를 따라 이동한 뒤, 모델에게 해당 경로를 따르는 스니펫을 생성하도록 요청하고, 각 홉을 설명하는 reasoning trace를 삽입합니다.
- Utilization – 현실적인 “작업”(예: “라이브러리의
DataLoader를 사용해 CSV 로드”)을 샘플링하고, 명시적인 chain‑of‑thought와 함께 전체 솔루션을 합성합니다.
- Single‑hop – 엣지를 무작위로 선택(e.g.,
- 모델은 표준 교차 엔트로피 손실을 사용해 이러한 예제들에 대해 미세 조정되며, 코드와 함께 이유를 출력하도록 장려합니다.
- 코드 그래프를 사용하여 세 가지 합성 코퍼스를 자동으로 생성합니다:
-
UnseenCodeBench 평가
- 벤치마크는 개발자가 프레임워크를 처음 접할 때 작성할 수 있는 프롬프트로 구성됩니다.
- 측정 지표: 정확히 일치, 기능적 정확성(단위 테스트를 통해), 그리고 환각률(정의되지 않은 심볼을 표시하는 정적 분석기로 측정).
결과 및 발견
| Model | Exact‑Match ↑ | Pass@1 (unit tests) ↑ | Hallucination ↓ |
|---|---|---|---|
| Base CodeLlama‑7B | 21.4 % | 18.7 % | 34 % |
| + Retrieval‑Augmented (RAG) | 27.9 % | 24.3 % | 22 % |
| UCD‑Training (CPT+SFT) | 38.6 % | 35.1 % | 9 % |
- CPT만 사용해도 환각을 절반으로 줄일 수 있음을 확인했으며, 이는 종속성 정보를 보존하는 것이 중요함을 의미합니다.
- 추론 트레이스를 포함한 SFT는 기능적 정확도에서 가장 큰 향상을 보이며, 특히 다단계 추론이 필요한 구성 작업에서 두드러집니다.
- 보지 못한 여섯 개의 프레임워크(딥러닝 라이브러리, 웹 라우터, 데이터 검증 툴킷 등) 전반에 걸쳐, 기본 모델 대비 평균 Exact‑Match가 +17 pp, Hallucination이 -25 pp 개선되었습니다.
실용적 함의
- 빠른 온보딩: 기업은 자체 SDK나 내부 라이브러리를 UCD‑Training에 입력하면 API를 이해하는 코드 LLM을 즉시 얻을 수 있어 신입 사원의 학습 곡선을 줄여줍니다.
- 디버깅 시간 감소: 환각률이 낮아져 개발자가 모델이 생성한 “유령” 임포트나 의미 없는 코드 조각을 찾는 데 드는 시간이 줄어듭니다.
- CI/CD용 플러그‑앤‑플레이: 파이프라인이 완전 자동화되어 소스가 저장소에 커밋되면 CI 작업이 코드 그래프를 재구성하고 데이터를 합성하며 모델을 매일 밤 미세 조정하여 어시스턴트를 최신 API와 동기화합니다.
- 향상된 RAG 대안: 문서 조각을 취약하게 검색하는 대신 모델이 관계를 내부화하여 더 부드러운 자동완성과 지연 시간 급증을 감소시킵니다.
- 오픈소스 잠재력: 저자들은 그래프 구축 스크립트와 UnseenCodeBench 벤치마크를 공개하여 커뮤니티가 임베디드 펌웨어나 과학 컴퓨팅 라이브러리와 같은 특수 분야에 이 접근법을 적용할 수 있게 합니다.
제한 사항 및 향후 작업
- Synthetic bias: 생성된 추론 트레이스는 결정론적 패턴을 따르며, 실제 개발자는 다르게 추론할 수 있어 분포 외 프롬프트에 대한 일반화가 제한될 수 있습니다.
- Scalability: 매우 큰 모노레포(수십만 파일)의 전체 코드 그래프를 구축하고 저장하는 것은 메모리를 많이 소모할 수 있으며, 현재 구현은 약 10 k 파일로 제한됩니다.
- Evaluation breadth: 기능적 정확성은 단위 테스트로 측정하지만, 벤치마크는 아직 성능에 민감한 코드(예: GPU 커널)와 같이 미묘한 버그가 중요한 영역을 포함하지 않습니다.
- Future directions suggested by the authors include:
- 동적 실행 트레이스(예: 런타임 호출 그래프)를 도입하여 합성 데이터를 풍부하게 만들기.
- 설계 문서나 UML 다이어그램과 같은 다중 모달 입력 탐색.
- 코드베이스가 진화함에 따라 점진적 파인‑튜닝을 지원하도록 프레임워크 확장.
저자
- Guangsheng Ou
- Qiming Zhang
- Sirong Chen
- Anji Li
- Dong Xu
- Tiancheng Luo
- Dekun Dai
- Cuiyun Gao
- Long Wang
- Jun Zhou
- Mingwei Liu
- Zibin Zheng
논문 정보
- arXiv ID: 2602.20799v1
- 분류: cs.SE
- 출판일: 2026년 2월 24일
- PDF: PDF 다운로드