트랜스포머란 무엇인가, 카파시 강연으로 정리

안드레이 카파시가 2023년 스탠포드 CS25 강연에서 직접 설명한 트랜스포머 구조를 원본 자막과 논문 원문으로 다시 확인했습니다. 어텐션의 등장 배경과 Q·K·V, 범용 컴퓨터라는 비유를 정리하고, 강연 속 nanoGPT 대신 후속작 nanochat으로 코드에서 직접 열어보는 순서까지 붙였습니다.

유튜브 재생 화면. 제목 슬라이드에 Transformers, Andrej Karpathy, Stanford CS25, Jan 10 2023 문구와 트랜스포머 구조도, 옵티머스 프라임 이미지가 함께 보인다.
원본 강연 영상의 시작 화면. 출처: 스탠포드 온라인(Stanford Online) 유튜브 채널, Stanford CS25 V2 I Introduction to Transformers w/ Andrej Karpathy, 2026년 9월 5일 확인.
정정 (2026년 10월 3일): 원래 쿼리·키·밸류 풀이와 트랜스포머의 세 가지 장점 근거를 강연에 없는 표현으로 쓰고, 카파시가 이미지 모델 이름을 언급하지 않았다고 썼으나, 강연 영어 자막을 다시 확인해 카파시의 실제 설명으로 고쳤습니다. 카파시는 이미지 모델 이름(ViT)을 직접 말했습니다.

안드레이 카파시(Andrej Karpathy)가 2023년 1월 10일 스탠포드 CS25 강의실에서 구조를 처음부터 끝까지 직접 설명한 영상이 있습니다. 이 강연 하나만 제대로 따라가면 (attention)이 왜 나왔는지, Q·K·V가 뭘 하는지, 트랜스포머가 왜 다른 구조보다 잘 작동하는지, 그리고 그 한계가 뭔지까지 한 번에 정리됩니다. 마침 이 강연에 한국어 자막을 붙인 재업로드 영상이 2026년 9월 3일 새로 올라오면서, 자막 없이 듣기 부담스러웠던 독자도 쉽게 접근할 수 있게 됐습니다. 다만 강연 중 소개된 실습 코드 nanoGPT, 지금도 강연 때 그대로일까요? 그 답은 뒤에서 따로 설명합니다.

이 강연은 스탠포드 CS25 코스의 2023년 1월 10일 세션으로 실제 커리큘럼에 올라 있고, 영상은 스탠포드 대학 공식 유튜브 채널 스탠포드 온라인(Stanford Online)이 올린 원본입니다. 앞의 10분은 코스 소개이고 카파시 본인의 발표는 10분 15초 지점부터 질의응답까지 이어지는데, 3년 전 강연임에도 한국어 자막 재업로드 덕분에 지금 접근성이 크게 달라졌습니다. 다만 그 재업로드는 카파시 본인이나 스탠포드가 올린 것이 아니라 제3의 채널이 올린 것이라, 이 글의 인용과 링크는 전부 원본 영상을 기준으로 합니다.

RNN은 문장 전체를 벡터 하나에 욱여넣어야 했다

이전까지 번역 같은 시퀀스 작업은 순환신경망(RNN)이 주로 맡았는데, 문장 전체 정보를 고정 길이 벡터 하나에 욱여넣어야 한다는 근본적인 한계가 있었습니다. 문장이 길어질수록 앞쪽 정보가 흐려지는 것이 문제였습니다.

이 문제에 답을 낸 것이 2014년 벤지오(Yoshua Bengio) 연구팀이 발표한 논문입니다. 논문이 제안한 모델의 정식 이름은 RNNsearch였고, 초록에는 ''이라는 단어가 아예 나오지 않습니다. 대신 소프트 서치(soft-search)라는 표현을 씁니다. 그런데 본문으로 들어가면 이야기가 달라지는데, 디코더가 소스 문장의 어느 부분에 주의를 기울일지 결정한다는 설명에 어텐션 메커니즘이라는 표현이 실제로 등장합니다.

카파시는 강연에서 이 이름의 뒷이야기를 하나 들려줍니다. 원래 이름이었던 RNN search가 별로여서, 논문을 마지막으로 검토하던 중 벤지오가 어텐션이라는 더 나은 이름을 제안했다는 것입니다. 그런데 이게 논문에 적힌 사실일까요? 아닙니다 — 카파시 본인의 강연 속 회고이므로, 여기서는 그가 강연에서 그렇게 말했다는 것까지만 전합니다.

Bahdanau 등 2014년 논문 원문 화면. attention mechanism이라는 표현이 포함된 문단이 보인다.
Bahdanau·Cho·Bengio 논문 본문 중 어텐션 메커니즘이 처음 등장하는 문단. 초록에는 없던 이 표현이 본문에는 나온다. 출처: arXiv 1409.0473 HTML 전문판, 2026년 9월 5일 확인.

트랜스포머는 실제로 어떻게 생겼나

2017년 논문 Attention Is All You Need는 의 기본 구조를 이렇게 정리합니다 — 인코더와 디코더를 각각 동일한 층 6개씩 쌓아 올린 구조라는 것입니다. 구글 연구진 8명이 함께 썼고, 층과 층 사이에는 잔차 연결(residual connection)과 레이어 정규화(layer normalization)를 끼워 넣어 학습이 쉽게 되도록 했습니다. RNN도 CNN도 안 쓰다 보니 단어의 순서 정보를 따로 넣어줘야 하는데, 이 역할은 사인·코사인 함수로 만든 위치 인코딩(positional encoding)이 맡습니다.

Attention Is All You Need 논문의 Figure 1, 트랜스포머 전체 구조도. 왼쪽이 인코더, 오른쪽이 디코더 스택이다.
논문이 그린 트랜스포머 구조도. 인코더(왼쪽)와 디코더(오른쪽)가 각각 멀티헤드 어텐션과 피드포워드를 쌓은 모습이다. 출처: arXiv 1706.03762 Figure 1, 2026년 9월 5일 확인.

카파시는 강연에서 이 구조를 그래프 위의 메시지 전달로 풀어 설명합니다. 셀프 단계는 노드들이 서로 정보를 주고받는 통신 단계이고, 그 뒤에 오는 피드포워드 단계는 각 노드가 받은 정보를 혼자 처리하는 계산 단계라는 것입니다. 트랜스포머 전체는 데이터에 따라 연결 방식이 달라지는 방향 그래프 위에서 이 통신과 계산을 N번 반복하는 구조라고 정리합니다.

이 구조는 쓰는 방식에 따라 세 가지로 나뉩니다. 카파시는 GPT처럼 디코더만 쓰는 모델, BERT처럼 인코더만 쓰는 모델, 그리고 T5처럼 기계번역 같은 작업에 인코더와 디코더를 함께 쓰는 모델을 구분해 설명하는데, BERT는 GPT식 자기회귀(autoregressive) 언어모델링 방식으로는 학습시킬 수 없고 마스킹을 쓰는 방식으로 따로 학습된다고 덧붙입니다. 결국 같은 블록을 어떻게 조합하느냐가 다를 뿐입니다.

Q, K, V — 어텐션은 실제로 무엇을 계산하나

Q, K, V는 정확히 뭘까요? 카파시는 강연에서 그래프의 각 노드가 쿼리(Query)·키(Key)·밸류(Value), 줄여서 Q·K·V를 하나씩 내보낸다고 설명합니다. 쿼리는 내가 찾고 있는 것, 키는 내가 가진 것, 밸류는 내가 전달할 내용에 해당합니다.

논문은 이 계산을 헤드 여러 개로 나눠 병렬로 실행하는 멀티헤드 (multi-head attention)으로 정식화합니다.

MultiHead(Q, K, V) = Concat(head_1, ..., head_h)W^O, where head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)

이 공식이 말하는 것은 Q·K·V를 한 번만 계산해서 쓰는 게 아니라 헤드 수만큼 서로 다른 방식으로 나눠 계산한 뒤 이어붙인다는 것인데, 헤드 하나로 평균을 내면 정보가 뭉개지는 반면 여러 헤드로 쪼개면 문장 안의 다른 관계를 동시에 담을 수 있습니다.

Figure 2, 스케일드 닷프로덕트 어텐션과 멀티헤드 어텐션 도식. Q, K, V가 각각 Linear를 거쳐 어텐션 블록으로 들어간다.
Q·K·V가 입력되는 지점과 멀티헤드 어텐션 구조. 출처: arXiv 1706.03762 Figure 2, 2026년 9월 5일 확인.

왜 이렇게 잘 작동하나 — 카파시의 비유는 범용 컴퓨터

카파시는 강연 말미에 이런 비유를 던집니다. 예전 신경망이 한 가지 작업만 하도록 설계된 전용 컴퓨터였다면, 기반의 GPT는 뭐가 다를까요?

GPT is a general purpose computer reconfigurable at runtime to run natural language programs.

카파시는 이 재구성이 로 이뤄진다고 덧붙입니다. 프로그램을 프롬프트로 주면 GPT가 문서를 이어 쓰는 방식으로 그 프로그램을 실행한다는 설명입니다.

카파시는 이 범용성이 어디서 나오는지도 한 호흡에 꼽습니다.

...forward pass is expressive... it's very efficient... it's easily optimizable by gradient and trains very nicely.

표현력·효율성·최적화 용이성, 세 단어 각각에는 근거가 따로 있습니다. 카파시가 든 근거는 이렇습니다. 표현력은 입력을 한 번 통과시키는 계산(forward pass)만으로 메타 러닝(meta-learning)까지 할 수 있는 함수를 구현할 수 있다는 것, 최적화 용이성은 잔차 연결과 레이어 정규화 덕분이라는 것, 효율성은 계산 그래프가 얕고 넓어 GPU 병렬 처리에 잘 맞는다는 것입니다. 이 세 가지를 동시에 만족하는 점이 트랜스포머가 널리 쓰이게 된 이유일 수 있다는 것이 카파시의 설명입니다.

지금 nanoGPT를 그대로 따라 하면 안 되는 이유

카파시는 강연 중 실습 코드로 nanoGPT를 직접 보여줍니다. 를 최소한으로 구현한 저장소인데, GPT-2를 OpenWebText로 재현하는 데 A100 한 노드로 38시간 정도 걸렸던 것 같다고 말합니다. 다만 본인도 정확히는 기억나지 않는다는 듯 조심스럽게 덧붙인 말입니다.

그런데 지금 저장소 README를 보면 숫자가 다릅니다. 8×A100 40GB 한 노드에서 GPT-2(124M)를 OpenWebText로 학습시키면 같은 조건 기준 약 4일이 걸린다고 적혀 있습니다. 그리고 300줄이라는 표현도 정확히는 저장소 전체가 아니라 학습 루프를 담은 train.py 약 300줄과 모델 정의를 담은 model.py 약 300줄, 두 파일 각각을 가리킵니다.

그렇다면 지금 상태는 어떨까요? 카파시 본인이 README 상단에 nanoGPT에게는 nanochat이라는 더 새롭고 개선된 사촌이 생겼고, 아마 찾는 건 nanochat일 것이며, nanoGPT는 이제 매우 오래됐고 지원 종료(deprecated)됐지만 기록으로 남겨둔다고 명시해뒀습니다. 라이선스는 MIT로 여전히 열려 있지만, 강연을 보고 nanoGPT를 카파시가 지금도 쓰는 최신 도구처럼 따라 하면 안 됩니다.

nanoGPT GitHub 저장소 README. Update Nov 2025로 시작하는 지원 종료 고지문과 MIT license 탭이 보인다.
nanoGPT README 상단의 지원 종료 고지문. MIT 라이선스 탭도 함께 보인다. 출처: GitHub karpathy/nanoGPT, 2026년 9월 5일 확인.

카파시가 직접 꼽은 한계는 되돌려 고칠 수 없다는 것이다

에 한계가 없을까요? 있습니다. 질의응답에서 카파시는 자기회귀 방식으로 텍스트를 생성하면 이미 내놓은 을 되돌려 고칠 수 없다는 점을 꼽으면서, 초안을 쓰고 다시 고쳐 쓰는 디퓨전 방식의 생성이 개인적으로 더 매력적이라고 말합니다.

(context window) 문제도 언급합니다. 처리할 수 있는 문맥 길이를 늘리는 방법 중 하나로 스크래치패드 토큰을 내보내 중간 계산 과정을 적어두고 이어가는 방식을 예로 드는데, 이 문제를 다루는 논문이 이미 200편쯤 나와 있다고만 말할 뿐 특정 기법에 이름을 붙여 부르지는 않습니다.

언어를 벗어난 확장 사례도 소개합니다. 오디오는 스펙트로그램을 잘게 잘라 트랜스포머에 넣는 OpenAI의 Whisper, 단백질 구조는 딥마인드의 AlphaFold를 예로 들고, 이미지는 사진을 작은 사각형으로 잘라 그대로 트랜스포머에 넣는 ViT(Vision Transformer)를 예로 듭니다. 부가 정보를 어떻게 융합할지의 문제는 테슬라 사례로 짚는데, 이미지를 보고 예측을 내놓는 모델에 다른 종류의 정보를 어떻게 추가로 넣어줄 것인가가 그 문제라고 카파시는 설명합니다.

이 글은 원본 강연 자막을 직접 확인하고 두 논문 원문을 대조해 썼습니다. 다만 벤지오의 명명 일화처럼 논문에서는 확인되지 않고 강연에서만 나온 이야기는 강연 발언으로 한정해 정리했습니다.

원본 강연을 처음부터 보고 싶다면 위에 건 링크로 들어가 자막을 켜면 됩니다.

코드에서 직접 열어보는 순서

여기까지가 구조 이야기이고, 아래는 그 구조를 코드에서 확인하는 순서입니다. 지금 살아 있는 저장소는 nanoGPT가 아니라 후속작 nanochat입니다. 아래 명령과 수치는 2026년 9월 22일 저장소 README에서 직접 확인했습니다.

1. 받아서 의존성을 맞춥니다. 의존성 관리는 uv를 씁니다. GPU가 있으면 uv sync --extra gpu, CPU나 애플 실리콘이면 uv sync --extra cpu. → 확인: source .venv/bin/activate가 먹으면 된 것입니다.

2. 층 수 설정부터 봅니다. 복잡도를 정하는 값은 --depth 하나뿐이고, 폭과 헤드 수, 학습률, 학습 분량은 거기에 맞춰 자동으로 정해집니다. 앞에서 읽은 구조가 코드에서 어떤 값으로 잡히는지가 여기서 보입니다. GPT-2급이 대략 depth 26입니다.

3. 작게 한 번 실행해 봅니다. GPU 노드가 없으면 runs/runcpu.sh가 모델을 크게 줄여 수십 분 안에 끝냅니다. 저장소도 "좋은 결과는 안 나온다"고 분명히 밝혔지만, 화부터 학습·평가까지 단계는 전부 실행됩니다. → 확인: 스크립트가 끝까지 실행됩니다.

4. 제대로 실행하려면 GPU 노드가 필요합니다. bash runs/speedrun.sh가 8×H100 한 노드에서 GPT-2급까지 약 1시간 반입니다. 저장소는 비용을 48달러쯤, 스팟 인스턴스면 15달러쯤으로 적었습니다.

5. 만든 모델과 대화해 봅니다. source .venv/bin/activate 뒤 python -m scripts.chat_cli. → 확인: 터미널에서 답이 돌아오면 앞에서 읽은 구조가 실제로 작동하는 것을 본 것입니다.

참고한 자료

  1. 스탠포드 온라인(Stanford Online) 유튜브 — Stanford CS25: V2 I Introduction to Transformers w/ Andrej Karpathy
  2. 스탠포드 CS25 V2 공식 코스 페이지
  3. Attention Is All You Need (Vaswani 외, 2017)
  4. Neural Machine Translation by Jointly Learning to Align and Translate (Bahdanau, Cho, Bengio, 2014)
  5. nanoGPT (GitHub)

아무 곳이나 누르면 닫힙니다

함께 보면 좋은 글

인사이트

AI 연구자 카파시의 이용자 깔때기, 60억 명에서 5천 명

같은 AI를 두고 누군가는 엉성한 챗봇이라 하고 누군가는 몇 달 치 일을 한 번에 끝낸다고 합니다. AI 연구자 카파시는 이 격차를 60억 명에서 약 5,000명으로 좁아지는 네 층의 깔때기로 그렸습니다. 인원은 본인이 대충 계산한 추정치입니다.

인사이트

Karpathy의 AI 답변 이해법 4가지, 첫째는 항공 정비 영어

Andrej Karpathy가 10월 2일 X에서 AI 답변을 이해하기 쉽게 받는 방법 네 가지를 소개했습니다. 첫째로 꼽은 ASD-STE100은 항공 정비 문서를 위해 만든 통제 영어 표준입니다. 규격의 내용과 이력, 같은 구글 기사를 두 문체로 만들어 문장 길이를 측정한 결과를 정리했습니다.

인사이트

스탠포드 AI 에이전트 무료 강의, 성능 원리부터 워크플로까지

스탠포드가 과목 CS329A '자기 개선 AI 에이전트'의 첫 수업을 유튜브에 무료로 공개했습니다. 학습 연산을 키우는 스케일링 법칙에서 추론 연산으로 축이 옮겨 간 흐름, 답을 여러 번 뽑아 고르면 코딩 해결률이 15.9%에서 56%로 오른 논문, 워크플로 패턴 5종을 다룹니다.

인사이트

AI에게 대화를 전부 주면 오히려 답을 놓칠 수 있다

컨텍스트 엔지니어링(context engineering)은 AI가 답을 만들 때 무엇까지 함께 보여줄지를 설계하는 일입니다. 크로마 실험에서 Claude Opus 4는 답에 필요한 대목만 받으면 1점 만점에 0.92점, 대화 전체를 받으면 0.38점이었습니다. 길이보다 섞여 든 잡음이 문제였습니다. '프롬프트 엔지니어링 변천사' 시리즈 5편입니다.