표준 Transformer의 한계
시간적 얕음 (Temporal Shallowness): 시퀀스 방향 계산 깊이가 레이어 수(L)에 의해 물리적으로 제한되어, 복잡한 논리 추론 및 장기 상태 유지가 필요한 고난도 태스크에서 심각한 성능 병목을 유발합니다.
RT의 핵심 전략
레이어 내부 재귀 (Layer-wise Recurrence): 단일 레이어 내에서 정보가 순환하도록 설계하여 물리적 깊이를 초과하는 '무한한 시간적 깊이'를 시뮬레이션합니다. 현재 출력($z_i$) 기반의 KV 생성이 핵심입니다.
Architecture Comparison
| 비교 항목 | Vanilla Transformer | Recurrent Transformer (RT) |
|---|---|---|
| KV 생성 소스 | 레이어 입력 ($x_i$) | 레이어 최종 출력 ($z_i$) |
| KV 생성 시점 | Attention 계산 직전 | Attention & MLP 계산 직후 |
| 정보 전파 방식 | 순방향 (Feed-forward) | 순환 (Recurrent) |
| 미래 토큰 참조 대상 | 이전 레이어의 정적인 정보 | 현 레이어의 업데이트된 고차원 상태 |
| 시간적 유효 깊이 | 레이어 수 (L)에 고정 | 재귀를 통한 가변적 확장 |
01 이중 KV 캐시 메커니즘
임시 KV 쌍 ($k^{temp}, v^{temp}$)
현재 위치 $i$의 Attention 출력 계산에 즉시 사용되고 폐기되는 휘발성 데이터입니다.
영구 KV 쌍 ($k, v$)
레이어 최종 출력 $z_i$ 확정 후 생성되어 미래 토큰들이 참조할 수 있도록 캐시에 저장됩니다.
프로세스 실행 순서
Query 및 임시 KV 생성
입력 $x_i$에서 $q_i, k_i^{temp}, v_i^{temp}$를 도출합니다.
혼합 Attention
$q_i$가 이전 영구 KV($1 \dots i-1$)와 현재 임시 KV($i$)를 참조하여 $a_i$를 계산합니다.
레이어 출력 확정
$a_i$ 기반 MLP 및 잔차 연결 처리로 최종 상태 $z_i$를 도출합니다.
영구 KV 업데이트
확정된 $z_i$로부터 $k_i, v_i$를 생성하여 KV 캐시에 영구 저장합니다.
02 수학적 정규화 및 학습 안정성
q_i = RMS(W_Q · RMS(x_i))
k_i^{temp} = RMS(W_K · RMS(x_i))
a_i = Attn(KV_{prev}, (k_i^{temp}, v_i^{temp}), q_i)
z_i = x_i + 1/√L (a_i + MLP(RMS(x_i + 1/√L a_i)))
k_i = RMS(W_K · RMS(z_i))
v_i = W_V · RMS(z_i)
설계 핵심: Weight Sharing
$W_K$와 $W_V$ 가중치 행렬은 임시 및 영구 KV 생성 시 반드시 공유(Shared)되어야 합니다. 이는 두 데이터 간의 시맨틱 일관성을 보존하며 파라미터 효율성을 극대화합니다.
03 고성능 시스템 최적화 전략
Flash Inference 전략
특정 타일의 영구 KV 생성 시, 이를 대기 중인 모든 Query 타일에 즉시 반영하여 HBM 트래픽을 $O(N \log N)$으로 절감합니다.
CUDA Graphs 캡처
레이어 내 작은 커널 반복 호출 오버헤드를 제거하기 위해 전체 연산을 CUDA Graphs로 캡처하여 디스패치 속도를 극대화합니다.
Position-first 레이아웃
KV 캐시 업데이트 시 메모리 액세스 효율을 높이기 위해 (N, B, H, D) 순서의 메모리 배치 구조를 강제합니다.
Final Implementation Checklist
시스템 배포 전 필수 확인 사항
기대 효과 및 요약
6개 레이어로 12개 수준 성능 확보
KV 캐시 메모리 사용량 절감
레이어 수 축소에 따른 Throughput 향상