LLM 공부 일기 #1: Transformer
I’m happy to translate the article for you, but I’ll need the full text you’d like translated. Could you please paste the content (excluding the source line you already provided) here? Once I have the text, I’ll translate it into Korean while preserving all formatting, markdown, code blocks, and URLs.
About Me
저는 거의 8년째 소프트웨어 엔지니어로 일하고 있으며, 주로 백엔드와 인프라 분야에서 분산 시스템, 근실시간 처리, 배치 처리 등을 다루고 있습니다. 학교에서 머신러닝에 대한 기본적인 지식은 가지고 있지만, 복잡한 머신러닝 사용 사례 경험은 없습니다. 이 시리즈에서는 일반 소프트웨어 엔지니어의 관점에서 LLM에 대해 배우는 내용을 기록할 예정입니다. 혹시 잘못된 부분이 있으면 자유롭게 댓글을 달아주시고, 궁금한 점도 남겨 주세요.
트랜스포머
각 트랜스포머 구성 요소를 이해하기 위한 좋은 자료는 Hugging Face 블로그 포스트 Mastering Tensor Dimensions in Transformers 입니다.
- 디코더‑전용 모델 (GPT 계열, LLaMA, Claude)은 생성에 사용됩니다.
- 인코더‑디코더 모델 (BART, 원래 “Attention Is All You Need” 트랜스포머)은 번역 및 요약을 처리합니다.
- 인코더‑전용 모델 (BERT)은 분류와 임베딩에 사용됩니다.
여기서는 디코더‑전용 LLM에 초점을 맞춥니다. 아키텍처를 요약하면, 트랜스포머 블록은 두 가지 주요 구성 요소인 **Masked Multi‑Head Attention (MMHA)**와 **Feed‑Forward Network (FFN)**를 갖습니다.

Masked Multi‑Head Attention (MMHA)
The attention formula contains query (Q), key (K) and value (V):
\text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{QK^{\top}}{\sqrt{d_k}}\right) V
- (Q) (Query) – 현재 토큰이 찾고자 하는 것.
- (K) (Key) – 각 토큰이 제공하거나 나타내는 것.
- (V) (Value) – 실제로 검색되는 내용.
어텐션 가중치 계산에서, 소프트맥스는 (Q)와 (K) 사이의 가중치를 생성하고, 그 가중치로 값 (V)를 가중합하여 반환합니다.
Training intuition: 모든 토큰이 다른 모든 토큰에 대해 질문을 던지고((Q)를 생성) 그들의 (K/V)를 사용하며, 인과 마스크가 적용됩니다.
Inference intuition: 가장 최신 토큰만 (Q)를 생성하고, 이전 토큰에 저장된 (K/V)에 어텐션을 수행합니다.
훈련과 추론 시 Q/K/V
-
훈련: 전체 시퀀스를 사용할 수 있으므로 모든 토큰 위치를 병렬로 처리한다. 각 트랜스포머 레이어에서 (Q), (K)와 (V)는 동일한 은닉‑state 시퀀스로부터 계산되며, 인과 마스크가 미래 토큰에 대한 어텐션을 방지한다.
-
추론은 두 단계로 구성된다:
-
프리필 단계 – 전체 프롬프트를 처리한다. (Q), (K)와 (V)가 프롬프트 토큰에 대해 계산되고, 모델은 향후 사용을 위해 (K/V) 쌍만 캐시한다. (Q) 벡터는 순전파 후 폐기된다.
-
디코드 / 생성 단계 – 새로 생성된 각 토큰에 대해 모델은 새로운 (Q) (및 자체 (K/V))를 계산한다. 새로운 (Q)는 프롬프트와 이전에 생성된 토큰들의 캐시된 (K/V)에 어텐션한다. 새 토큰의 (K/V)는 캐시에 추가된다.
-
추론에서 KV 캐싱
같은 저자가 **KV Caching Explained: Optimizing Transformer Inference Efficiency**에서 KV 캐싱을 설명합니다.
캐싱 없이, 과거 토큰마다 (K)와 (V)를 매 생성 단계마다 다시 계산해야 하므로 비효율적입니다—왜냐하면 이 값들은 절대 변하지 않기 때문입니다. KV 캐싱은 이러한 행렬을 저장해 두어, 새로운 단계에서는 (Q) (및 현재 토큰의 (K/V))만 계산하고 캐시된 값을 재사용하므로 추론 속도가 크게 빨라집니다.
두 가지 추론 단계—prefill(프롬프트를 병렬 처리)와 decode(자동 회귀 생성, 한 번에 한 토큰)—가 지연 시간 특성, 배치 전략, 그리고 KV 캐시가 어떻게 채워지는지를 결정합니다.
Source: …
피드‑포워드 네트워크 (FFN)
FFN는 확장 → 비선형성 → 축소 변환을 수행합니다:
\text{FFN}(x) = \sigma\!\bigl(xW_{1} + b_{1}\bigr)W_{2} + b_{2}
- (W_{1}) – 확장 가중치 (보통 은닉 크기의 4배).
- (W_{2}) – 축소 가중치 (다시 은닉 크기로).
개념적으로:
- 확장 – 많은 후보 특징을 생성합니다.
- 활성화 – 비선형 함수 (\sigma) (예: GELU)를 적용해 유용한 특징을 선택합니다.
- 축소 – 잔차 스트림으로 다시 압축합니다.
목표 확장 차원은 하이퍼파라미터이며, 일반적인 경험법칙은 GPT‑3에서 사용된 것처럼 4배로 설정하는 것입니다.
Weights vs Hyper‑parameters
The transformer learns (tunes) the following weight matrices:
- Attention projections per head: (W_{Q}), (W_{K}), (W_{V}) → 헤드당 어텐션 프로젝션: (W_{Q}), (W_{K}), (W_{V})
- Attention output projection: (W_{O}) → 어텐션 출력 프로젝션: (W_{O})
- Token + positional embeddings (positional embeddings are learned in models like GPT‑2; rotary embeddings have no learned parameters) → 토큰 + 위치 임베딩 (위치 임베딩은 GPT‑2와 같은 모델에서 학습됩니다; 로터리 임베딩은 학습 파라미터가 없습니다)
- LayerNorm scale and bias ((\gamma, \beta)) → LayerNorm 스케일 및 바이어스 ((\gamma, \beta))
- Final output / unembedding matrix (often tied to the input embedding) → 최종 출력 / 언임베딩 행렬 (보통 입력 임베딩과 공유됩니다)
Hyper‑parameters are not learned by gradient descent; they define the network’s shape, e.g., learning rate, batch size, embedding dimension, FFN expansion factor, number of layers, number of attention heads, etc. → 하이퍼파라미터는 경사 하강법으로 학습되지 않으며, 네트워크 구조를 정의합니다. 예를 들어 학습률, 배치 크기, 임베딩 차원, FFN 확장 계수, 레이어 수, 어텐션 헤드 수 등이 있습니다.
손실 함수
표준 다음 토큰 언어 모델 손실은
L = -\frac{1}{T}\sum_{t=1}^{T}\log P\bigl(x_{t+1}\mid x_{\le t}\bigr)
역전파는 이 손실로부터 모든 층을 통해 그래디언트를 전달하여, 학습된 모든 가중치를 함께 업데이트함으로써 오류를 감소시킵니다.
Visualization
각 단계별 구체적인 예시를 보려면 인터랙티브 도구 Transformer‑Explainer 를 사용해 보세요.