Transformer는 거의 같은 블록을 반복해서 쌓는다
모든 Transformer 블록에는 두 개의 하위층이 있어. 하나는 멀티헤드 셀프 어텐션이고, 다른 하나는 위치별 피드포워드 신경망이야. 위치별 피드포워드 신경망은 각 위치에 독립적으로 적용되는 작은 MLP다. 두 하위층은 모두 잔차 연결과 층 정규화로 감싸.
구조는 이게 전부야. 블록을 12개 쌓으면 작은 Transformer인 BERT-base가 되고, 96개 쌓으면 최전선 LLM이 돼. 입력에는 임베딩 층을 두고, 출력에는 LM 헤드나 분류기를 붙여. 모델이 토큰 순서를 알 수 있도록 위치 인코딩도 추가해.
팁: Transformer 블록을 머릿속에서 그릴 수 있으면 모든 현대 LLM 논문을 읽을 수 있어. 잔차 연결 + LN, 어텐션, 잔차 연결 + LN, FFN 순서만 기억하면 돼. RMSNorm, rotary 위치 임베딩, GLU 활성화, 전문가 혼합 같은 아키텍처 변형도 모두 이 기본 부품을 다른 것으로 교체한 거야.
위치 인코딩
셀프 어텐션 자체는 순열 불변이야. 모델에 순서 감각을 주려면 토큰 임베딩에 위치 정보를 더해야 해. 원래 Transformer는 sinusoidal 인코딩을 사용했고, 현대 LLM은 RoPE를 사용해. RoPE는 query/key projection 자체에 위치 정보를 통합해서 어떤 문맥 길이에서도 상대 위치를 추론할 수 있게 해.
어텐션을 구성하는 세 가지 방식
- 인코더 (BERT, ViT) — 양방향 셀프 어텐션을 사용해서 모든 토큰이 다른 모든 토큰에 주목해. 분류, 검색, 임베딩에 사용해.
- 디코더 (GPT, LLaMA) — triangular mask를 적용한 causal 셀프 어텐션을 사용해서 각 토큰이 자기 자신과 이전 토큰에만 주목해. 생성에 사용해.
- 인코더-디코더 (T5, BART) — 두 구조를 모두 사용하고, 디코더가 인코더를 참조하는 cross-어텐션도 추가해. 번역, 요약, 텍스트 변환 과제에 사용해.
원칙: 현대 Transformer는 대부분 하나의 블록을 변형한 구조야. 임베딩 + 위치 인코딩 + N×(LayerNorm + 어텐션 + LayerNorm + 잔차 연결이 있는 FFN) + 최종 norm + 헤드로 이어지는 구조를 깊이 익혀. 그러면 Hugging Face의 모든 모델 카드를 읽을 수 있어.