← 최신 논문
🤖 AI

An Evaluation of Context Length Extrapolation in Long Code via Positional Embeddings and Efficient Attention

이 논문은 소프트웨어 공학 분야에서 고정된 컨텍스트 길이 제한을 극복하기 위해 위치 인코딩 개선과 효율적인 어텐션 메커니즘 최적화를 통한 제로샷 추론 기반의 긴 코드 컨텍스트 외삽 방법들을 심층적으로 평가합니다.

원저자: Madhusudan Ghosh, Rishabh Gupta

게시일 2026-02-26
📖 3 분 읽기☕ 가벼운 읽기

원저자: Madhusudan Ghosh, Rishabh Gupta

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

이 논문은 **"AI 가 아주 긴 코드를 읽을 때, 어떻게 하면 기억력을 잃지 않고 잘 이해할 수 있을까?"**라는 질문에 답하는 연구입니다.

쉽게 비유하자면, 이 연구는 **"AI 라는 학생이 100 페이지짜리 두꺼운 책 (긴 코드) 을 읽을 때, 앞페이지 내용을 잊어버리지 않고 마지막 페이지까지 잘 이해하게 만드는 방법"**을 비교 분석한 것입니다.

주요 내용을 일상적인 비유로 설명해 드릴게요.


1. 문제 상황: "기억력 장애"를 겪는 AI

대부분의 최신 AI(거대 언어 모델) 는 훈련될 때 정해진 분량의 정보만 기억하도록 설정되어 있습니다. 마치 책상 위에 펼쳐둘 수 있는 책장이 10 장뿐인 학생과 같습니다.

  • 문제: 만약 100 장짜리 긴 코드를 주면, 학생은 앞쪽 내용을 잊어버리고 뒤쪽만 보게 됩니다. 코드는 앞뒤 문맥이 중요하기 때문에, 앞부분을 잊으면 뒤에서 코드를 완성할 때 엉뚱한 답을 내놓거나 문법 오류를 범합니다.

2. 해결책 두 가지: "기억술" vs "효율적인 책상 정리"

연구진은 이 문제를 해결하기 위해 훈련 없이 (Zero-shot) 바로 적용할 수 있는 두 가지 방법을 비교했습니다.

방법 A: "기억술" (Positional Embedding - 위치 인코딩)

  • 비유: 학생에게 **"책의 페이지 번호를 외우는 특수한 기억술"**을 가르치는 것입니다.
  • 원리: 코드의 각 단어에 "나는 1 번 페이지의 5 번째 줄이야", "나는 1000 번 페이지의 2 번째 줄이야"라고 표시를 해줍니다.
  • 특징:
    • RoPE/ReRoPE: 이 기억술을 업그레이드한 버전입니다. 특히 ReRoPE는 "너무 먼 페이지는 대충 기억하고, 가까운 페이지는 자세히 기억하자"는 전략을 써서, 긴 코드를 읽을 때 **문맥의 흐름 (구조)**을 잘 유지합니다.
    • 결과: 코드의 전체적인 구조와 논리를 잘 파악해서, 코드가 "잘 짜여진 느낌"을 냅니다. (편집 유사도 점수 높음)

방법 B: "효율적인 책상 정리" (Efficient Attention - 효율적 주의 메커니즘)

  • 비유: 책상 위에 모든 책을 다 펼칠 수 없으니, 책상 공간을 효율적으로 쓰는 방법을 찾는 것입니다.
  • 원리:
    • Paged Attention: 책을 한 권씩 쪼개서 필요한 부분만 책상 위에 올리는 방식입니다. 메모리 (책상 공간) 를 아껴서 아주 긴 코드를 처리할 수 있게 해줍니다.
    • Flash Attention: 책장을 넘기는 속도를 극한으로 높여주는 방식입니다.
  • 결과: 아주 빠르게 정확한 단어를 찾아내서 **정답과 똑같은 코드 (Exact Match)**를 만들어내는 데는 탁월합니다. 하지만 너무 효율만 쫓다 보니, 코드의 전체적인 흐름이나 구조를 놓치는 경우가 많습니다.

3. 실험 결과: 어떤 방법이 더 나을까?

연구진은 파이썬, C#, 자바 등 다양한 프로그래밍 언어로 실험을 해보았습니다.

  • 정확한 복사 (Exact Match): Paged Attention이 압도적으로 잘합니다. 마치 복사기를 켜서 원본과 똑같이 찍어내는 것처럼, 특정 부분의 코드를 정확히 맞추는 데 강합니다.
  • 구조와 흐름 (Edit Similarity): ReRoPE가 압도적으로 잘합니다. 코드가 "자연스럽고 논리적으로 연결된" 느낌을 줍니다.
  • 언어별 차이:
    • 파이썬: 문법이 유연해서 AI 가 이해하기 쉽습니다.
    • C#/자바: 문법이 엄격하고 규칙이 많아서 AI 가 긴 코드를 처리할 때 더 어려워합니다.

4. 결론 및 제언: "완벽한 점수표"가 필요하다

이 논문은 중요한 교훈을 줍니다.

  • 현재의 문제: 우리는 AI 가 코드를 잘 썼는지 평가할 때, "원본과 100% 똑같은가?" (Exact Match) 만 봅니다. 하지만 코드는 동일한 기능을 하는 다른 표현도 많습니다.
  • 제안: AI 가 코드를 만들 때, 단순히 글자만 맞추는 게 아니라 **"이 코드가 실제로 작동하는가?", "컴파일이 되는가?", "논리적 오류는 없는가?"**를 평가하는 새로운 점수표가 필요합니다.

한 줄 요약

"긴 코드를 처리할 때, '구조를 잘 이해하는 기억술 (ReRoPE)'과 '빠르게 정확한 답을 찾는 책상 정리법 (Paged Attention)' 중 어느 것이 더 좋은지 비교했더니, 목적에 따라 다르다는 것을 발견했다. 앞으로는 AI 가 코드를 잘 썼는지 평가할 때, '정확함'보다 '실제 작동 여부'를 더 중요하게 봐야 한다."

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →