AI 용어집 · 심화 · 언어 모델
RoPE 회전 위치 임베딩
RoPE(Rotary Position Embedding, 회전 위치 임베딩)는 트랜스포머가 각 토큰이 문장의 몇 번째에 있는지 알 수 있도록, 위치에 따라 벡터를 일정 각도씩 회전시키는 방법이다. 지금 많은 LLM이 위치 정보를 다루는 기본 방식으로 쓴다.
어떻게 작동하나
트랜스포머의 어텐션은 그대로 두면 단어의 순서를 모른다. RoPE는 어텐션에서 쓰는 쿼리·키 벡터를 위치에 비례하는 각도만큼 회전시켜 순서 정보를 넣는다. 두 토큰을 비교할 때 회전 각도의 차이가 남기 때문에, 모델은 절대 위치보다 '서로 얼마나 떨어져 있는가'를 자연스럽게 읽게 된다. 벡터의 여러 부분을 서로 다른 속도로 회전시켜 가까운 거리와 먼 거리를 함께 표현한다.
어디서 보게 되나
Hugging Face 모델 저장소의 config.json에서 rope_theta(회전 속도의 기준값), rope_scaling(컨텍스트 확장 방식), max_position_embeddings(학습한 최대 위치) 같은 항목으로 만난다. 추론 엔진 설정에서 컨텍스트 길이를 늘릴 때 rope_scaling 옵션을 함께 지정하기도 한다. 모델 카드에 'YaRN으로 컨텍스트 확장' 같은 설명이 있다면 RoPE 설정을 조정해 더 긴 입력을 다루게 했다는 뜻이다. 즉 RoPE 설정은 그 모델이 감당할 수 있는 컨텍스트 윈도와 직결된다.
알아 둘 점
학습 때 본 길이보다 훨씬 긴 입력을 넣으면 처음 보는 회전 각도가 나와 품질이 급격히 떨어질 수 있다. 그래서 컨텍스트를 늘리려면 모델이 권장하는 rope_scaling 설정을 따르거나 추가 학습이 필요하다. 설정 파일의 값을 임의로 바꾸면 모델은 돌아가도 답이 엉망이 될 수 있다. 긴 텍스트나 긴 영상 생성 연구에서는 학습 범위를 벗어난 위치를 어떻게 다룰지가 계속 중요한 과제다.
예시
사내 문서 요약용으로 긴 계약서를 한 번에 넣고 싶을 때, 엔지니어는 모델의 config.json에서 max_position_embeddings와 rope_scaling을 확인하고, 모델 카드가 권장하는 확장 설정을 추론 엔진에 그대로 넣는다. 이 사이트에 소개된 'In-Distribution Forcing' 논문처럼 긴 영상 생성 연구에서도 학습 범위를 넘어서는 위치를 KV 캐시에서 어떻게 다룰지가 핵심 문제로 다뤄진다.