DevOps··2분 읽기·0

부록1. 왜 트랜스포머인가: RNN에서 Mamba까지

트랜스포머 이전의 RNN이 왜 한계에 부딪혔는지. 병렬화 불가, 장거리 의존성, 고정 상태 벡터. 트랜스포머가 이걸 어떻게 해결했고, Mamba가 어디로 가고 있는지.

글꼴

본편에서는 트랜스포머를 "이미 존재하는 구조"로 놓고 내부 동작을 파고들었다. 이 부록에서는 한 발 뒤로 물러나서, 트랜스포머 이전에는 뭐가 있었고, 왜 바뀌었고, 이 다음에는 뭐가 올 수 있는지를 다룬다.


이전엔 뭘 썼나 — RNN

트랜스포머(2017) 이전의 주류는 RNN(Recurrent Neural Network)이었다.

RNN의 동작 방식:
 
  "OOM" -> [상태1] -> "killer" -> [상태2] -> "가" -> [상태3] -> ...
 
  토큰을 하나씩 순서대로 처리.
  이전 토큰의 "상태"를 다음 토큰에 전달.
  모든 이전 정보가 하나의 상태 벡터에 압축됨.

한 줄로 정리하면, RNN은 토큰을 순서대로 처리하면서 이전 정보를 "상태 벡터"에 누적하는 구조다.


RNN의 한계 1: 병렬화 불가능

RNN 학습:
  "OOM" -> [상태1] -> "killer" -> [상태2] -> ...
  
  "killer"를 처리하려면 "OOM"의 상태1이 필요.
  "가"를 처리하려면 "killer"의 상태2가 필요.
  -> 순차적으로만 처리 가능. GPU 코어 16,384개가 있어도 1개만 사용.
 
트랜스포머 학습:
  "OOM", "killer", "가", "nginx", "를" -> 동시에 처리 (행렬곱)
  인과적 마스킹으로 미래 정보 차단하면서도 병렬 처리.
  -> GPU 코어를 전부 활용.

이건 학습 속도에서 치명적이었다. 트랜스포머가 GPU를 풀로 활용해서 수십 배 빠르게 학습할 수 있는 반면, RNN은 토큰을 하나씩 순차 처리해야 하니까 GPU가 놀고 있었다. GPU 수천 장을 사서 갖다 놔도 제대로 쓸 수 없었던 거다. 자원을 쏟아부을 수 없는 구조는 스케일링 경쟁에서 탈락할 수밖에 없다.


RNN의 한계 2: 장거리 의존성

RNN에서 "를"이 "OOM"을 참조하려면:
 
  OOM의 정보 -> 상태1 -> 상태2 -> 상태3 -> 상태4 -> 상태5
  매 단계마다 다른 정보와 섞이면서 희석됨.
  토큰 100개 떨어져 있으면 100번 전달 -> 거의 소멸.
  LSTM이 "게이트"로 개선했지만, 수백~수천 토큰 거리에서는 여전히 한계.
 
트랜스포머에서 "를"이 "OOM"을 참조하려면:
 
  를의 Q . OOM의 K = 내적 1번. 끝.
  거리 1이든 거리 10,000이든 동일한 연산.
  중간 토큰을 거치지 않고 직접 참조.

트랜스포머의 어텐션은 중간 토큰을 거치지 않고 직접 참조한다. 거리에 관계없이 동일한 연산이다. 이건 RNN 대비 결정적인 장점이다.


RNN의 한계 3: 고정 크기 상태 벡터

RNN:
  모든 이전 정보를 하나의 "상태 벡터"에 압축.
  상태 벡터 크기: 고정 (예: 1024차원)
 
  토큰 10개의 정보 -> 1024차원에 압축     <- 아직 괜찮음
  토큰 1000개의 정보 -> 1024차원에 압축    <- 병목. 정보 손실 불가피.
  토큰 10만개의 정보 -> 1024차원에 압축    <- 거의 불가능.
 
  비유: 100페이지 보고서를 포스트잇 1장에 요약하라는 것.
 
트랜스포머:
  KV 캐시에 모든 토큰의 정보를 개별 저장.
 
  토큰 10개 -> K,V 벡터 10개 저장
  토큰 1000개 -> K,V 벡터 1000개 저장
  토큰 10만개 -> K,V 벡터 10만개 저장 (메모리는 먹지만 정보 손실 없음)
 
  비유: 100페이지를 100장 파일에 각각 보관하고, 필요할 때 꺼내보는 것.

종합 비교

                        RNN/LSTM            트랜스포머
------------------   --------------   ------------------
학습 시 병렬화        X (순차 처리)       O (행렬곱, GPU 최적)
장거리 의존성         약함 (전달 희석)     강함 (직접 참조)
정보 저장            고정 크기 벡터       토큰별 K,V 개별 저장
학습 속도            느림                빠름 (수십 배)
스케일링             한계 있음           데이터+파라미터 늘릴수록 성능 향상

스케일링 법칙 — 트랜스포머의 진짜 무기

RNN은 데이터를 10배 늘려도 학습 시간이 10배 이상 걸리고, GPU를 추가해도 병렬화가 안 된다. 트랜스포머는 데이터 10배에 GPU 10배를 추가하면 학습 시간을 비슷하게 유지할 수 있다.

이 스케일링 특성 덕분에 "크게 만들수록 똑똑해진다"는 법칙이 성립했다. GPT-2(1.5B)에서 GPT-3(175B), 그리고 GPT-4로 이어지는 대규모 경쟁의 기반이 이거다.


트랜스포머의 약점

트랜스포머도 완벽하지 않다.

O(n^2) 문제:
  어텐션이 모든 토큰 쌍을 계산 -> 토큰 수 제곱에 비례하는 비용.
  RNN은 O(n) - 토큰이 늘어도 선형.
  128K 토큰 어텐션 = 164억 번 계산 + 수십 GB 메모리.
 
KV 캐시 메모리:
  RNN은 상태 벡터 1개만 유지 (고정 메모리).
  트랜스포머는 모든 토큰의 K,V를 저장 (토큰 수에 비례).
 
추론 시 비효율:
  Decode 단계에서 매 토큰마다 모든 W를 읽어야 하는 메모리 바운드.

토큰이 늘어나면 O(n^2)로 비용이 폭증하고, KV 캐시가 VRAM을 잡아먹는다. 6편에서 다뤘듯이 128K 토큰이면 KV 캐시만 36GB다.


이후의 흐름 — Mamba/SSM

이 문제를 해결하려는 시도가 Mamba(State Space Model)다.

Mamba (State Space Model, 2023~):
 
  RNN의 O(n) 효율성 + 트랜스포머의 장거리 의존성을 동시에 잡으려는 시도.
 
  핵심 아이디어:
    선택적 상태 공간 모델 - 입력에 따라 상태 전달 방식을 동적으로 조절.
    RNN처럼 순차적으로도, 트랜스포머처럼 병렬로도 계산 가능한 구조.
 
  장점:
    - O(n) 시간 + 메모리 (토큰 수에 선형)
    - 고정 크기 상태 -> 긴 시퀀스에서도 메모리 일정
    - 추론 속도 빠름 (KV 캐시 불필요)
 
  현재 상태 (2025):
    - 일부 벤치마크에서 트랜스포머에 근접하거나 추월
    - 하지만 대규모(70B+)에서 트랜스포머를 완전 대체하지는 못함
    - 하이브리드 접근 (트랜스포머 + Mamba 혼합)이 유망
    - 실무에서 쓰는 LLM은 아직 사실상 전부 트랜스포머 기반
 
결론: 트랜스포머는 현재의 승자이지만 영원하지 않을 수 있음.
      핵심 원리(어텐션, 임베딩, FFN)를 이해해두면
      구조가 바뀌어도 적응할 수 있음.

Mamba가 트랜스포머를 대체할지는 아직 모른다. O(n^2)를 O(n)으로 줄이면서 성능까지 유지할 수 있다면 안 바꿀 이유가 없지 않을까? 하지만 현실은 그렇게 단순하지 않다. 이 시리즈에서 다룬 핵심 원리들, 임베딩, 어텐션의 개념, FFN의 지식 저장, 학습의 원리, 이런 것들은 구조가 바뀌어도 유효하다. 그게 내부를 이해하는 가치다.

이 글이 어떠셨나요?

이 글이 도움이 되셨나요?
공유:

관련 포스트

뉴스레터 구독

새 글이 올라오면 이메일로 알려드려요.

댓글

댓글을 불러오는 중...