거대 언어 모델(LLM)이 텍스트를 생성하는 과정은 단순한 확률 게임을 넘어, 수조 개의 파라미터가 정밀하게 맞물려 돌아가는 거대한 기계 장치와 같습니다.
토큰화(Tokenization)부터 시작하여 임베딩(Embedding), 트랜스포머 블록(Transformer Block)에서의 복잡한 어텐션 연산, 그리고 최종적인 샘플링(Sampling)까지. 각 단계에서 어떤 연산이 일어나고 어디서 병목이 발생하는지 직관적으로 이해할 수 있는 아키텍처 구조도를 소개합니다.
특히 성능 최적화의 핵심인 **KV 캐시(KV Cache)**와 최근의 속도 향상 기법인 **추측 디코딩(Speculative Decoding)**의 원리를 한눈에 확인해 보세요.
LLM 텍스트 생성 아키텍처
구조/텍스트
핵심 연산
메모/주석
프롬프트 단계: 모든 입력 토큰을 병렬 처리
(연산 병목)
(연산 병목)
③
임베딩 레이어
토큰 ID [2601, 318, 26110, 879, 30]
토큰
임베딩
임베딩
| ···
| ···
| ···
| ···
| ···
임베딩 행렬
(seq_len x d_model)
(seq_len x d_model)
d_model =
4096차원 벡터
4096차원 벡터
④
트랜스포머 블록
(x N 레이어)멀티헤드 셀프 어텐션
Q
(d_model x d_k)
K
(d_model x d_k)
V
(d_model x d_v)
어텐션 점수
i
j
softmax
(QKᵀ) / √dₖ
+
더하기 & 레이어 정규화
피드포워드 네트워크 (FFN)
선형층
(d_model x d_ff)
(d_model x d_ff)
ReLU / SwiGLU
선형층
(d_ff x d_model)
(d_ff x d_model)
+
더하기 & 레이어 정규화
디코드 단계:
토큰을 하나씩 생성
(메모리 병목)
토큰을 하나씩 생성
(메모리 병목)
KV 캐시 (레이어별)
시간 t₁, t₂, t₃ ... t
K
→
V
→
→ 이전 K,V 쌍 저장
→ 재계산 방지
→ 재계산 방지
KV 캐시는 시퀀스 길이에 비례해 증가 - 주요 메모리 병목
FlashAttention:
어텐션 연산을 합쳐 HBM 읽기 감소
어텐션 연산을 합쳐 HBM 읽기 감소
x N 레이어 (GPT-4급 모델 기준)
⑤선형층 + 소프트맥스
선형층 + 소프트맥스
(LM 헤드)
선형층
(d_model x 128K)
(d_model x 128K)
로짓
(어휘 크기 = 128K)
(어휘 크기 = 128K)
...
1128K
소프트맥스
어휘별 확률
10⁰
10⁻³
...1128K
⑥
샘플링 전략
그리디:
최대확률 선택
↓ 샘플
↓ 샘플
Top-K:
상위 K 토큰에서
샘플
샘플
Top-P(뉴클리어스):
누적확률 기준
샘플
샘플
Temperature:
무작위성 조절
T→0 결정적
T→1 창의적
양자화:
INT8/INT4 가중치로
메모리 2~4배 절감
INT8/INT4 가중치로
메모리 2~4배 절감
⑦
추측 디코딩
(속도 트릭)작은 초안 모델이
후보 토큰 k개를
빠르게 생성
후보 토큰 k개를
빠르게 생성
중력
이란
무엇
a
큰 목표 모델이
병렬 검증
병렬 검증
토큰 4개 병렬 검증
✓중력26110수락
✓이란879수락
✓무엇318거절
✗a256거절
다음 토큰
생성
생성
fundamental
17042