본문 바로가기
C.W.K.
Stream
Lesson 01 of 05 · published

Transformer가 강한 이유

~14 min · transformer, attention, foundations

Level 0관찰자
0 XP0/50 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

Self-attention은 학습된 조회 장치야

Self-attention의 힘은 모든 토큰이 다른 모든 토큰을 직접 살필 수 있다는 데서 나와. 각 query가 어느 토큰을 얼마나 중요하게 볼지도 실제 내용에 따라 정하지. 이전 시퀀스 아키텍처에는 이런 자유가 없었어. RNN은 모든 정보를 hidden state 하나에 눌러 담느라 먼 과거의 세부 사항을 잃기 쉬웠고, convolution은 receptive field가 고정되어 가까운 범위부터 볼 수밖에 없었어. 어텐션은 거리를 뛰어넘어 토큰 쌍을 잇고, 실행하는 순간의 내용을 바탕으로 관계의 세기를 계산해.

원리는 Q, K, V 세 텐서로 정리돼. 각 토큰에서 query Q(“무엇을 찾고 있지?”), key K(“무엇을 가지고 있지?”), value V(“무엇을 내보내지?”)를 만들어. Q·Kᵀ/√d_k로 구한 토큰 쌍의 점수는 둘의 관련성을 나타내고, softmax는 그 점수를 확률 분포로 바꿔. 마지막으로 V를 곱하면 각 위치에 문맥을 반영한 출력이 생겨. 행렬 곱, softmax, 행렬 곱으로 이어지는 단순한 흐름이라 GPU가 처리하기에도 좋아.

왜 주류로 살아남았을까

충분한 연산 자원이 갖춰지자 세 가지 장점이 어텐션을 주류로 끌어올렸어. 첫째, 학습할 때 시퀀스 전체를 병렬로 처리할 수 있어. RNN처럼 토큰을 하나씩 순서대로 밟을 필요가 없지. 둘째, multi-head attention은 여러 관계를 동시에 배워. 각 head가 문법, 지시 대상, 위치, 의미처럼 서로 다른 역할에 특화될 수 있어. 셋째, residual stream과 layer normalization에 매끄럽게 결합되어 층을 쌓고 규모를 키우기 쉬워. 2017년의 65M Transformer와 2025년의 2T MoE가 같은 기본 블록을 쓰는 까닭이야.

새 아키텍처라면 이 세 장점을 한꺼번에 상대해야 해. 이 퀘스트에서 만날 대안들은 어텐션의 장점 일부를 내주고 다른 이익을 얻어. 보통은 전체 문맥에서 특정 정보를 정확히 집어내는 능력을 조금 줄이는 대신, 제곱보다 완만하게 늘어나는 계산량이나 일정한 추론 메모리를 얻지. 어텐션이 무엇을 잘하는지 먼저 알아야 다른 구조로 옮겨도 되는 순간을 제대로 판단할 수 있어.

Code

Scaled dot-product attention의 핵심 연산·python
import torch
import torch.nn.functional as F

def attention(Q, K, V, mask=None):
    # Q, K, V: (batch, heads, seq, d_k)
    d_k = Q.size(-1)
    scores = (Q @ K.transpose(-2, -1)) / (d_k ** 0.5)  # (B, H, n, n)
    if mask is not None:
        scores = scores.masked_fill(mask == 0, float('-inf'))
    weights = F.softmax(scores, dim=-1)                 # (B, H, n, n)
    return weights @ V                                  # (B, H, n, d_k)

External links

Exercise

PyTorch로 scaled dot-product attention을 처음부터 구현해 봐. 무작위 (4, 8, 64, 32) Q/K/V 배치에서 torch.nn.functional.scaled_dot_product_attention과 결과가 같은지 확인해. 그런 다음 시퀀스 길이 4096에서 두 구현의 실행 시간을 재고 비율을 비교해 봐. 수식이 같더라도 PyTorch의 fused kernel이 실제 실행 시간을 얼마나 줄이는지 체감하는 게 핵심이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.