본문으로 건너뛰기

RWKV-5 Eagle과 RWKV-6 Finch: 상태를 행렬로 키우고 recurrence를 동적으로 만들기

· 약 6분
p4r4d0xb0x
Rustacean, AI, OSS Enthusiast

RWKV의 시간 혼합 블록과 행렬 상태 갱신을 표현한 개념도

Transformer가 긴 문맥을 처리하는 방식은 강력하지만, 생성할 때 과거 키와 값을 저장하고 읽는 비용이 따라온다. RWKV는 어텐션처럼 보이는 가중 평균을 recurrence로 계산해, 학습에서는 시간축 병렬화를 유지하고 생성에서는 토큰당 고정 크기 상태를 사용하는 방향을 택했다. “Eagle and Finch” 논문은 이 RWKV-4를 두 단계로 확장한다. Eagle(RWKV-5)은 벡터 상태를 다중 헤드 행렬 상태로 넓히고, Finch(RWKV-6)은 decay와 token shift를 입력에 따라 바꾼다.

원문 초록은 Eagle 네 모델(0.46B–7.5B)과 Finch 두 모델(1.6B, 3.1B)을 학습해 여러 벤치마크에서 경쟁적인 성능을 보였다고 보고한다. 또 1.12조 토큰 규모의 다국어 코퍼스, greedy matching 기반 토크나이저, Apache 2.0으로 공개된 모델과 코드를 소개한다. 이 글은 arXiv 2404.05892v4의 구조와 초록을 바탕으로 하며, “경쟁적”이라는 표현을 특정 모델의 보편적 우승으로 확대하지 않는다.

RWKV-4의 출발점: 어텐션을 감쇠 recurrence로 바꾸기

RWKV의 시간 혼합(time mixing)은 과거의 key-value 정보를 decay와 함께 누적한다. 현재 입력에는 별도의 bonus를 주고, receptance가 누적된 값을 얼마나 읽을지 조절한다. 이를 선형 어텐션의 k^T v 상태 업데이트와 비교하면 직관이 선명해진다. 매 단계에서 과거를 전부 다시 보지 않고, 누적된 상태와 현재 query에 해당하는 receptance만 계산한다.

이 구조의 시스템적 장점은 두 계산 모드다. 전체 시퀀스를 학습할 때는 time-parallel 구현으로 병렬화하고, 한 토큰씩 생성할 때는 상태를 갱신한다. 원문 표는 RWKV-4/5/6이 추론에서 시퀀스 길이에 대해 O(1) 상태와 시간 비용을 갖는 계열로 설명한다. 다만 O(1)은 모델 차원과 헤드 수를 무시한 표기이며, 실제 속도는 행렬 곱, 메모리 접근, 커널 구현에 의해 결정된다.

용어 해설: recurrence

쉬운 정의: 현재 결과를 계산한 뒤 그 결과의 일부를 다음 입력 처리에 다시 사용하는 순환 계산이다.

예시: 장부의 잔액을 매일 새로 계산하지 않고, 어제 잔액에 오늘의 입출금만 반영하는 방식이다. 계산은 빠르지만 이전 기록을 잔액 하나로 요약해야 한다.

용어 해설: decay

쉬운 정의: 시간이 지날수록 과거 상태의 영향력을 줄이는 학습 가능한 감쇠 계수다.

예시: 칠판의 오래된 메모를 매 수업 조금씩 흐리게 만들어 최근 내용이 더 잘 보이게 하는 것과 같다. 너무 빨리 흐리면 장기 정보가 사라진다.

Eagle: 벡터 기억을 행렬 기억으로 확장

Eagle의 가장 큰 변화는 각 헤드가 벡터가 아니라 행렬 형태의 k^T v 상태를 유지한다는 점이다. 원문은 multi-headed matrix-valued states, head별 LayerNorm, SiLU attention gating, receptance sigmoid 제거를 주요 변경으로 설명한다. 상태 갱신은 대략 다음처럼 읽을 수 있다.

s' = diag(w) · s + k^T · v
wkv' = s + diag(u) · k^T · v

wexp(-exp(ω))로 매개변수화되어 각 채널의 감쇠값이 0과 1 사이에 놓이도록 한다고 원문은 설명한다. 현재 토큰의 기여에는 u를 곱해 과거 누적값과 다른 가중치를 준다. receptance는 query처럼 상태를 읽고, SiLU gate는 출력의 흐름을 조절한다. 이 설계는 상태가 단순한 채널별 합이 아니라 key와 value의 관계를 더 풍부하게 보존하도록 만든다.

여기서 “표현력이 커졌다”는 말은 상태의 자유도가 늘고 입력·출력 변환이 다양해졌다는 구조적 해석이다. 특정 작업에서 반드시 정확도가 상승한다는 보장은 아니다. 원문은 Eagle과 Finch를 여러 벤치마크에서 평가하지만, 애플리케이션마다 상태 크기와 데이터 분포의 적합성이 달라질 수 있다.

용어 해설: matrix-valued state

쉬운 정의: 과거 정보를 숫자 하나나 벡터 하나가 아니라 행과 열의 관계를 가진 행렬로 누적하는 내부 상태다.

예시: 사람별 목록만 보관하는 대신 ‘사람-역할’ 표를 유지하는 것이다. 어떤 사람이 어떤 역할과 연결되는지 더 풍부하게 표현할 수 있지만 저장과 계산은 늘어난다.

Finch: recurrence를 입력에 반응시키기

Finch는 Eagle의 기반 위에서 token shift와 decay를 데이터 의존적으로 바꾼다. Eagle의 token shift가 현재와 이전 입력을 학습 가능한 선형 보간으로 섞는다면, Finch는 여기에 입력으로부터 계산한 추가 보정을 넣는다. 원문은 LoRA 형태를 활용해 decay 벡터를 문맥에 따라 보정하는 방법도 제시한다. 따라서 같은 채널이라도 입력 상황에 따라 과거를 얼마나 오래 유지할지 달라질 수 있다.

이 변화는 고정 decay의 한계를 겨냥한다. 어떤 정보는 짧게 기억하고, 어떤 정보는 긴 문맥을 통해 전달해야 한다. 동적 recurrence는 그 선택을 데이터에 맡긴다. 동시에 구현 복잡도와 안정성, 병렬 학습 비용이 커질 가능성이 있다. 논문은 구체적 공식을 제시하지만, 모든 하드웨어에서 동적 경로가 고정 경로만큼 효율적이라는 의미는 아니다.

다국어 데이터와 토크나이저도 아키텍처의 일부다

이 논문은 블록 수식만 다루지 않는다. RWKV World v2라는 1.12조 토큰 규모의 공개 다국어 데이터와 RWKV World Tokenizer를 소개한다. 토크나이저는 Trie 기반 greedy matching으로 설명되며, 저자들은 저대표 언어와 코드 데이터를 더 잘 다루는 것을 목표로 한다. 모델 성능을 아키텍처만의 결과로 읽으면 안 되는 이유다. 데이터 구성, 토큰화 효율, 학습 토큰 수가 함께 결과를 만든다.

원문은 네 개의 Eagle 모델과 두 개의 Finch 모델을 학습하고, 영어·다국어 텍스트, associative recall, 음악, 비전-언어 등 여러 영역을 평가한다. 표에 나타난 benchmark 점수는 모델 크기·학습 데이터·평가 프로토콜을 함께 봐야 한다. 다국어 서비스에 적용하려면 한국어와 목표 언어에서 토큰당 정보량, 긴 문장 회수, 코드 혼합 입력을 별도로 측정해야 한다.

논문 구조 분석과 실무 해석

원문은 Introduction에서 Transformer의 quadratic attention과 RNN의 추론 효율을 대비하고, Background에서 linear attention·AFT·RWKV-4의 진화를 설명한다. 이후 Eagle/Finch architecture, 세부 method, tokenizer와 dataset, pretrained models, language modeling·속도·멀티모달 실험 순서로 진행된다. 즉 기존 구조의 병목을 정의하고, Eagle→Finch의 단계적 변경을 제시한 뒤, 데이터·모델·응용 범위까지 검증하는 흐름이다.

운영 관점에서 RWKV의 핵심은 “긴 문맥을 무한히 저장한다”가 아니라 상태를 고정 크기로 유지하며 스트리밍 처리하기 쉽다는 점이다. 장시간 입력을 다루는 에이전트나 로컬 추론에서는 KV cache보다 상태 메모리 모델이 단순해질 수 있다. 반면 상태를 재사용하거나 분기할 때 특정 과거 토큰을 정확히 다시 읽는 Transformer식 접근과 다르다. 체크포인트 사이의 상태 호환성, 배치 내 길이 차이, 상태 초기화 정책을 제품 설계에서 명시해야 한다.

한계와 확인해야 할 것

첫째, 논문의 “competitive performance”는 광범위한 평가를 뜻하지만 모든 모델·언어·작업에서 Transformer를 능가한다는 주장은 아니다. 둘째, Apache 2.0 모델 공개는 재현 가능성을 높이지만, 데이터셋의 실제 구성과 사용 조건은 원문과 배포 저장소에서 다시 확인해야 한다. 셋째, O(1) 추론 표기는 시퀀스 길이에 대한 복잡도이며, 행렬 상태가 커질 때 절대 메모리와 연산량이 작다는 보장은 없다. 넷째, 동적 decay가 장기 기억을 자동으로 해결하지 않는다. 보존과 망각의 균형은 평가 데이터에 의존한다.

도입 전에는 다음을 확인할 필요가 있다.

  • 목표 언어와 코드에서 토크나이저의 평균 토큰 수
  • 동일 batch·정밀도·하드웨어에서 prefill 및 decode 처리량
  • 상태 크기와 동시 요청 수에 따른 메모리 피크
  • 최근 기억, 장거리 회수, 순서 변경에 대한 별도 정확도
  • 공개 inference/training 코드와 모델 체크포인트의 버전·라이선스

Eagle과 Finch가 보여 주는 방향은 RNN과 Transformer 중 하나를 선언하는 것이 아니다. 상태를 행렬로 풍부하게 만들고 recurrence의 감쇠를 입력에 반응시키면서도, 생성 단계에서는 상태 기반 효율을 지키려는 점진적 설계다. 제공된 자료에서 확인되는 범위에서는 매력적인 대안이지만, 실제 성능과 비용은 모델 크기·토크나이저·커널·업무 문맥을 함께 측정해야 한다. 특히 “무한 문맥”이라는 표현보다, 고정 크기 상태가 어떤 정보를 보존하고 어떤 정보를 버리는지부터 검증하는 편이 안전하다.

Sources

  • Bo Peng et al., “Eagle and Finch: RWKV with Matrix-Valued States and Dynamic Recurrence,” arXiv:2404.05892v4, submitted 2024-04-08, revised 2024-09-26, CC BY 4.0. https://arxiv.org/abs/2404.05892
  • HTML full text, arXiv:2404.05892v4, sections 1–9 and appendices, retrieved 2026-08-19. https://arxiv.org/html/2404.05892v4
  • RWKV project links listed by the paper (models, training, inference); availability and license should be rechecked before deployment. https://huggingface.co/RWKV
// COMMENTS

댓글