Skip to main content
QUICK REVIEW

[논문 리뷰] Non-autoregressive Model for Full-line Code Completion

Fang Liu, Zhiyi Fu|arXiv (Cornell University)|2022. 04. 21.
Software Engineering Research인용 수 4
한 줄 요약

이 논문은 전체 라인 코드 완성에 적합한 문법 인지 비자기적 모델인 SANAR을 제안한다. 이 모델은 병렬 토큰 생성을 가능하게 하여 자동회귀 모델 대비 최대 9배 빠른 추론 속도를 달성하면서, 파이썬 및 자바 데이터셋에서 자동회귀 및 비자기적 기준 모델을 모두 능가한다. 모델은 토큰 유형과 예측 신뢰도에 따라 동적으로 마스킹 및 재생성할 토큰을 선택하는 적응형, 문법 유도 샘플링 전략을 학습 중에 사용하여 좌측에서 우측으로의 자동회귀 생성에 의존하지 않는다.

ABSTRACT

Code completion tools are frequently used by software developers to accelerate software development by suggesting the following code elements. Completing a sequence of code tokens (e.g., a full line of code) has been proved more efficient than predicting a single token at a time. To complete the code sequence, researchers are employing AutoRegressive (AR) decoders to generate tokens in a left-to-right, token-by-token fashion. Consequently, the prediction of the next token depends on all previously generated tokens, which leads to high latency in inference. To improve the efficiency and accuracy of full-line code completion, in this paper, we propose a Non-AutoRegressive (NAR) model for code completion boosted by a syntax-aware sampling strategy. Our experimental results on two widely used datasets suggest that our model outperforms both AR and NAR baselines on full-line code completion, and it is faster than the AR model with up to 9 times speed-up.

연구 동기 및 목표

  • 전체 라인 코드 완성에서 자동회귀 모델의 높은 추론 지연 문제를 해결하기 위해 병렬 토큰 생성을 가능하게 하기 위해.
  • 자연어 생성과 달리 코드 토큰 간 의존성이 너무 약해 비자기적 생성이 가능할지 조사하기 위해.
  • 문법 유형과 난이도에 따라 동적으로 토큰을 샘플링하는 전략을 설계하여 비자기적 코드 완성 성능을 향상시키기 위해.
  • 비자기적 모델이 효과적으로 코드 완성에 적용될 수 있음을 보여주며, 기존 방법보다 더 높은 속도와 더 나은 정확도를 달성하기 위해.

제안 방법

  • 모든 타겟 토큰을 병렬로 생성하는 비자기적 트랜스포머 기반 모델(SANAR)을 제안하며, 자동회귀적 의존성을 피한다.
  • 학습 중에 토큰 유형과 예측 신뢰도에 따라 동적으로 마스킹 및 재생성할 토큰을 선택하는 문법 인지 샘플링 전략을 도입한다.
  • 좌측에서 우측으로의 자동회귀적 인도적 편향에 대한 의존도를 줄이는 유연한, 미분 가능한 샘플링 메커니즘을 사용하여 학습 안정성과 성능을 향상시킨다.
  • 전체 코드 라인을 한 번의 순방향 전파로 생성하는 단일 단계 추론 프로세스를 적용하여 지연 시간을 크게 감소시킨다.
  • 학습 중에 조건부 독립성 인수 분해를 적용한다: $\mathcal{L}_{NAR} = \sum_{t=1}^{T} \log p(y_t|X;\theta)$, 이는 병렬 디코딩을 가능하게 한다.
  • 비자기적 기계 번역(NMT)에서 유래한 반복적 개선 기법(CMLM 등)을 응용하여, 낮은 신뢰도를 보이는 토큰에 대해 반복적으로 예측을 향상시킨다.

실험 결과

연구 질문

  • RQ1자연어 생성과 달리 코드 토큰 간 의존성이 너무 약해 비자기적 생성이 가능할 수 있는가?
  • RQ2비자기적 모델이 전체 라인 코드 완성에서 자동회귀 모델과 경쟁하거나 더 나은 성능을 낼 수 있는가?
  • RQ3학습 중에 문법 인지적, 적응형 샘플링 전략을 사용하면 비자기적 코드 완성 모델의 성능이 향상되는가?
  • RQ4비자기적 코드 완성에서의 토큰 반복 비율은 신경망 기계 번역(NMT)과 비교해 어떻게 되며, 이는 모델 품질에 영향을 주는가?
  • RQ5비자기적 모델이 정확도를 손상시키지 않고 코드 완성 작업에서 상당한 속도 향상을 달성할 수 있는가?

주요 결과

  • SANAR는 파이썬 및 자바에 대한 전체 라인 코드 완성에서 자동회귀 및 비자기적 기준 모델을 모두 능가하며, 뛰어난 정확도를 보였다.
  • 모델은 자동회귀 모델 대비 최대 9배 빠른 추론 속도를 달성했으며, 평균적으로 5–6배의 속도 향상을 보였다. 특히 긴 코드 라인에서 유리했다.
  • 문법 인지 샘플링 전략은 무작위 마스킹(GLAT) 대비 성능 향상을 보였고, 샘플링 비율을 늘릴수록 성능 저하가 적어져 효과적인 토큰 선택을 확인했다.
  • SANAR에서의 토큰 반복 비율은 자동회귀 모델과 유사하게 높지 않아, 코드 내 토큰 간 의존성이 NMT보다 더 약하다는 것을 시사한다.
  • 실증 분석을 통해 코드 토큰 간 의존성이 자연어보다 더 약하다는 것이 확인되었으며, 이는 비자기적 코드 생성의 타당성을 뒷받침한다.
  • 모델는 오른쪽에서 왼쪽으로 또는 왼쪽에서 오른쪽으로 생성해도 성능이 유사하게 유지되어, 좌측에서 우측으로의 순서가 코드 완성에 필수적이지 않다는 것을 보여준다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.