AI VIDEO BRIEFING
GPT 밑바닥부터 만들기: 카파시가 코드로 설명하는 트랜스포머·셀프어텐션 원리
안드레이 카파시가 작은 셰익스피어 데이터로 GPT를 처음부터 구현하며 트랜스포머의 핵심인 셀프 어텐션, 멀티헤드, 잔차연결, 그리고 챗GPT의 사전학습·파인튜닝 단계까지 풀어낸다.

핵심 메시지
쉽게 이해하기
강의는 챗GPT가 프롬프트를 받아 단어를 왼쪽에서 오른쪽으로 순차 생성하는 확률적 시스템이며, 같은 프롬프트에도 매번 조금씩 다른 답을 낸다는 관찰에서 출발한다. 카파시는 이 시스템의 후드 아래에 있는 신경망, 즉 2017년 'Attention Is All You Need' 논문의 트랜스포머가 무엇인지 직접 코드로 만들어 보겠다고 밝힌다.
프로덕션급 챗GPT를 그대로 재현할 수는 없으므로, 그는 약 1MB짜리 '타이니 셰익스피어' 텍스트로 문자 단위 언어 모델을 학습한다. 먼저 텍스트에 등장하는 65개 문자를 정수로 바꾸는 간단한 토크나이저를 만들고(실무에서는 구글의 SentencePiece나 OpenAI의 tiktoken 같은 서브워드 토크나이저를 쓴다고 비교), 데이터를 블록 크기 단위의 청크와 배치로 잘라 트랜스포머에 입력하는 과정을 설명한다.
가장 단순한 바이그램 모델로 손실 함수(크로스 엔트로피)를 잡은 뒤, 영상의 핵심인 셀프 어텐션으로 넘어간다. 처음에는 과거 토큰을 단순 평균하는 방식을 보여 주고, 이를 삼각 행렬을 이용한 행렬곱으로 효율화하는 '수학 트릭'을 소개한다. 이어 각 토큰이 query와 key를 내보내 내적으로 친화도(weight)를 만들고, 미래를 가리는 마스킹과 소프트맥스를 거쳐 value를 가중 합산하는 진짜 셀프 어텐션을 구현한다.
카파시는 어텐션을 '방향 그래프 위 노드들이 데이터에 따라 정보를 주고받는 통신 메커니즘'으로 정리하고, 초기화 시 분포가 너무 뾰족해지지 않도록 head 크기의 제곱근으로 나누는 '스케일드 어텐션'의 필요성을 짚는다. 그다음 여러 어텐션을 병렬로 돌려 이어 붙이는 멀티헤드 어텐션, 토큰별로 따로 '생각'하게 하는 피드포워드 층을 추가하며 검증 손실이 2.5→2.4→2.28→2.24로 꾸준히 내려가는 것을 보여 준다.
신경망이 깊어지며 생기는 최적화 문제는 잔차연결(스킵 커넥션)과 레이어 정규화로 해결한다. 잔차연결은 그래디언트가 입력까지 막힘없이 흐르는 '고속도로'를 만들어 손실을 2.08까지 낮춘다. 마지막으로 그는 자신의 nanoGPT 저장소를 훑으며, 실제 챗GPT는 같은 디코더 전용 트랜스포머를 사전학습(인터넷 전체로 문서 완성기 만들기)과 파인튜닝(질의응답 데이터 지도학습 → 보상 모델 → PPO 강화학습) 두 단계로 확장한 것이라고 마무리한다.
주요 인사이트
- 트랜스포머 논문 저자들조차 그 영향력을 다 예상하지 못했다. 기계 번역 맥락에서 나온 이 구조가 약간의 변형만으로 이후 5년간 AI 전반에 복사·붙여넣기되며 챗GPT의 심장이 되었다.
- 셀프 어텐션은 query='무엇을 찾는가', key='무엇을 가졌는가'의 내적으로 친화도를 만든다. 모음이 과거의 특정 자음을 찾는 식으로, 토큰들이 데이터에 따라 서로 다른 토큰에 주목하게 된다.
- '통신'(어텐션)과 '계산'(피드포워드)을 번갈아 끼워 넣는 것이 트랜스포머 블록의 본질이다. 토큰들이 서로 정보를 모은 뒤, 각자 그 정보를 곱씹어 생각할 시간을 갖는 구조다.
- 잔차연결은 덧셈이 그래디언트를 양쪽으로 똑같이 흘려보내는 성질을 이용한다. 덕분에 손실의 신호가 입력까지 막힘없이 도달하고, 곁가지 블록들은 학습이 진행되며 서서히 기여하기 시작한다.
- 강의의 10M 파라미터·30만 토큰 모델과 GPT-3의 1750억 파라미터·3000억 토큰 사이에는 약 100만 배 격차가 있지만 아키텍처는 거의 동일하다. 차이는 규모와, 사후의 정렬(파인튜닝) 단계에 있다.
자주 묻는 질문
이 강의에서 GPT를 어떤 데이터로 만드나요?
인터넷 전체 대신 약 1MB 크기의 '타이니 셰익스피어'(셰익스피어 전집을 한 파일로 모은 것)를 사용합니다. 이 데이터로 문자 단위 언어 모델을 학습해 셰익스피어 같은 텍스트를 끝없이 생성하게 만들며, 같은 코드를 임의의 텍스트 데이터에도 그대로 적용할 수 있습니다.
셀프 어텐션은 어떻게 작동하나요?
각 토큰이 query(무엇을 찾는지)와 key(무엇을 가졌는지) 벡터를 내보내고, query와 key의 내적으로 토큰 간 친화도를 계산합니다. 디코더에서는 미래 토큰을 마스킹해 과거 정보만 흐르게 하고, 소프트맥스로 정규화한 가중치로 value 벡터들을 가중 합산해 정보를 모읍니다.
이렇게 만든 모델과 실제 챗GPT의 차이는 무엇인가요?
아키텍처는 거의 동일하지만 규모와 학습 단계가 다릅니다. 강의 모델은 약 1000만 파라미터에 30만 토큰으로 학습한 반면, 챗GPT는 같은 구조를 수만~수백만 배 키워 인터넷 전체로 사전학습한 뒤, 사람 피드백 기반 파인튜닝(지도학습→보상 모델→PPO 강화학습)을 거쳐 '문서 완성기'를 '질문 응답 비서'로 정렬한 것입니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗