[논문]You Only Cache Once

타샤's 월드·2026년 3월 28일

LLM 아키텍처의 진화: Transformer에서 YOCO까지

1. 아키텍처 변천사: "역할 분담에서 효율의 극치로"

  • Classic Transformer (Encoder + Decoder): 번역기형
    • 구조: 입력(인코더)과 출력(디코더)이 분리됨.
    • 특징: 질문을 완전히 읽은 뒤 답변을 생성. 인코더-디코더 사이를 잇는 '가교(Cross-Attention)'가 필수적.
  • GPT 시리즈 (Decoder-Only): 현재의 표준
    • 구조: 인코더를 없애고 디코더만 사용.
    • 특징: 모든 토큰이 이전 토큰을 참조하며 다음 단어를 예측. 현재 Llama, GPT-4 등 메인스트림 모델의 99%가 채택.
  • YOCO (Decoder-Decoder): 차세대 초경량 구조
    • 구조: 디코더 위에 디코더를 또 쌓음 (Self-Decoder + Cross-Decoder).
    • 특징: 앞단에서 '핵심 요약'을 한 번만 수행하고, 뒷단 레이어들은 이를 재사용함.

2. GPT(Decoder-only)의 한계: 시간복잡도 O(N2)O(N^2)

현재의 표준인 GPT 구조가 가진 가장 큰 숙제는 비용과 메모리입니다.

  • 제곱의 법칙 (O(N2)O(N^2)): 문장이 2배 길어지면 계산량은 4배, 10배 길어지면 100배가 늘어납니다.
  • KV 캐시의 저주: GPT는 모든 레이어(예: 80층)마다 대화 내용을 별도로 저장(Caching)해야 합니다. 문맥이 길어질수록 GPU 메모리가 기하급수적으로 소모되는 근본적 이유입니다.

3. YOCO (You Only Cache Once) 핵심 로직

YOCO는 귀찮게 층마다 메모리를 만들지 말고, 한 번만 만들어서 나눠 쓰자 는 혁신적인 설계를 제안합니다.

  1. Self-Decoder (요약층): 전체 문맥을 훑으며 가장 중요한 정보를 딱 한 번만 캐싱합니다. 이때 O(N2)O(N^2) 대신 선형 복잡도(O(N)O(N)) 기법인 Gated Retention을 사용합니다.
  2. Cross-Decoder (생성층): 이후의 레이어들은 직접 캐시를 만들지 않고, 1단계에서 만든 '공유 캐시'에 빨대를 꽂아 정보만 가져와 답변을 생성합니다.

4. 핵심 수식과 "알못"을 위한 이해 가이드

팀원들에게 수식의 의미를 전달할 때 아래의 비유를 활용해 보세요.

① Gated Retention (정보 압축 기술)

St=ftSt1+it(KtVt)S_t = f_t \odot S_{t-1} + i_t \odot (K_t^\top V_t)

💡 비유: "기억 = (망각 필터 × 어제의 메모) + (중요도 필터 × 오늘의 정보)"

  • 해설: 과거의 모든 데이터를 일일이 뒤지는 대신, '어제의 요약본'에 '오늘의 핵심'만 더해 '새 요약본'을 만듭니다. 이 덕분에 계산량이 문장 길이에 비례(O(N)O(N))해서만 늘어납니다.

② Shared KV (공유 기술)

Output=Cross-Attention(Q,Shared_KV)\text{Output} = \text{Cross-Attention}(Q, \text{Shared\_KV})

💡 비유: "답변 = 질문 × 아까 만든 그 요약본"

  • 해설: 모든 층이 각자 백과사전을 들고 있는 게 아니라, 1층에서 만든 '단 한 권의 요약본'을 전 층이 돌려봅니다. 메모리 사용량을 수십 배 아낄 수 있는 비결입니다.

🌟 결론: YOCO가 우리 팀에 주는 의미

  • 인프라 절감: 동일한 GPU 자원으로 기존 대비 최대 10배 많은 사용자를 수용 가능합니다.
  • 초장문 처리: 100만 토큰(책 수십 권 분량)을 넣어도 메모리 부족 없이 정확하게 정보를 찾아냅니다.
  • 사용자 경험: 첫 토큰이 나오는 속도(TTFT)가 기존 대비 약 3배 빨라집니다.
profile
그때 그때 꽂힌것 하는 개발블로그

0개의 댓글