한 줄 정의

YaRN은 RoPE를 쓰는 language model컨텍스트 창을 더 길게 쓰기 위한 위치 임베딩 스케일링 방법이야. 풀어 쓰면 Yet another RoPE extensioN이고, 긴 문맥을 위해 모델의 위치 좌표를 다시 늘려 읽게 만드는 쪽에 가깝다.

그래서 YaRN은 모델 이름도, A3B 같은 MoE 구조 표기도 아니야. 모델 카드에서 128K, 262K, 1M 같은 숫자가 보일 때 그 숫자가 네이티브 컨텍스트인지, YaRN을 켠 확장값인지 가르는 설정 이름으로 보면 돼.

어떻게 작동하나

RoPE 계열 모델은 토큰 위치를 회전 위치 임베딩으로 처리해. 문제는 모델이 학습 때 본 길이를 훌쩍 넘기면 위치 값이 낯설어지고, 긴 문서 끝부분을 안정적으로 다루기 어려워진다는 점이야. YaRN은 이 위치 스케일을 조정해서 학습 때보다 긴 컨텍스트를 열 수 있게 한다.

원 논문은 YaRN이 기존 context window extension 방법보다 적은 학습 비용으로 긴 문맥을 열 수 있다고 설명해. 초록 기준으로는 이전 방법보다 10배 적은 토큰과 2.5배 적은 학습 step을 말해. 공개 구현 저장소도 Llama 2 7B·13B의 64K·128K 변형과 70B의 32K 변형을 따로 적어 둬.

최근 모델 카드에서는 이 개념이 더 실무적인 설정으로 보인다. Qwen3.5-35B-A3B 카드는 네이티브 컨텍스트를 262,144 토큰으로 두고, 그보다 긴 작업에는 rope_type: "yarn", factor: 4.0, original_max_position_embeddings: 262144 같은 rope_parameters를 안내해. vLLM 예시는 --max-model-len 1010000까지 같이 붙어 있어.

왜 중요한가

YaRN을 알아야 하는 이유는 긴 문맥 숫자가 한 종류가 아니기 때문이야. Qwen3-14BQwen3-30B-A3B 같은 페이지에서 32,768 native와 131,072 YaRN 확장이 같이 나오면, 앞 숫자는 기본 창이고 뒤 숫자는 확장 설정을 켰을 때의 검증 범위로 읽어야 해. 둘을 합쳐서 “항상 128K 모델”처럼 적으면 운영 판단이 흐려져.

관련 용어와 비교하면 Context Window는 모델이 한 요청에서 볼 수 있는 창의 크기이고, Long Context는 그 창을 업무에서 길게 쓰는 성격이야. YaRN은 둘 중 어느 쪽도 아니라, RoPE 기반 모델에서 그 창을 늘릴 때 쓰는 스케일링 설정이다.

운영에서는 비용 쪽도 바로 달라진다. 컨텍스트 창을 키우면 KV 캐시 메모리, prefill 시간, 첫 토큰 지연이 같이 커져. YaRN이 위치 스케일링을 풀어 줘도, GPU VRAM런타임 지원이 자동으로 따라오는 건 아니야. 그래서 긴 문서 요약, 코드베이스 분석, 긴 에이전트 로그 처리처럼 실제로 긴 입력을 넣는 작업에서만 먼저 실험하는 편이 맞다.

또 하나는 “모델이 긴 창을 열 수 있다”와 “긴 창에서 답이 좋아진다”가 다른 문장이라는 점이야. Qwen3.5 모델 카드도 static YaRN은 입력 길이와 상관없이 같은 scaling factor를 쓰기 때문에 짧은 텍스트 성능에 영향을 줄 수 있다고 경고해. 평균 입력이 32K 아래라면 기본 컨텍스트부터 쓰고, 524,288 토큰 안팎처럼 실제 목표 길이가 생길 때 factor: 2.0 같은 값을 따로 잡는 쪽이 더 낫다.

주의해서 볼 점

  • YaRN은 긴 컨텍스트를 여는 방법이지, 검색·요약·정확도 문제를 한 번에 해결하는 기능이 아니야.
  • 모델마다 원래 컨텍스트가 다르다. 32,768 native인 모델과 262,144 native인 모델의 YaRN factor를 같은 의미로 보면 안 돼.
  • static YaRN은 짧은 입력에도 같은 스케일을 적용할 수 있어. 긴 문맥이 필요하지 않다면 기본 설정을 먼저 재는 편이 안전해.
  • llama.cppllama-cli 쪽에서는 --rope-scaling yarn, --rope-scale, --yarn-orig-ctx 같은 런타임 인자가 실제 판단 지점이 된다.
  • 1M 토큰 같은 숫자는 모델 카드와 서빙 엔진 조건을 같이 봐야 해. SGLang, vLLM, KTransformers, Transformers가 모두 같은 속도와 메모리로 동작한다는 뜻은 아니야.