대규모 언어 모델의 작동 원리
💡 학습 가이드: 이 장에서는 프로그래밍 기초가 필요하지 않으며, 인터랙티브 데모를 통해 대규모 언어 모델(LLM)의 내부 작동 원리를 심층적으로 이해할 수 있습니다. 가장 기본적인 토큰화부터 시작하여 GPT가 어떻게 훈련되고 추론되는지까지 다룹니다.
Choose a business scenario to begin.
0. 서론: 인간의 언어에서 기계의 계산으로
인간은 언어로 소통하고, 컴퓨터는 숫자로 계산합니다. 대규모 언어 모델(LLM)의 본질은 바로 이 두 세계를 연결하는 다리입니다.
그 핵심 과제는 단 하나: "언어를 이해하는" 문제를 "수학적 계산" 문제로 변환하는 것입니다.
이 목표를 달성하기 위해 세 가지 핵심 과제를 해결해야 합니다:
- 번역: 어떻게 문자를 숫자로 바꿀 것인가? (토큰화 & 임베딩)
- 효율성: 어떻게 컴퓨터가 빠르게 계산하게 할 것인가? (행렬 연산)
- 기억: 어떻게 컴퓨터가 문맥을 이해하게 할 것인가? (Transformer 모델)
이 튜토리얼은 처음부터 시작하여 이 다리를 구축하는 과정을 단계별로 분해해 보여줍니다.
1. 첫 번째 단계: 번역 (Tokenization)
컴퓨터는 "햄버거"라는 글자를 이해하지 못하고, 오직 숫자만 인식합니다. 따라서 첫 번째 과제는: 텍스트를 컴퓨터가 이해할 수 있는 최소 단위로 분할하는 것입니다.
1.1 토큰화란 무엇인가?
토큰화는 하나의 문장을 "토큰(Token)"이라는 단위로 나누는 것입니다.
- 영어: 공백이 있어 자연스럽게 토큰화하기 쉽습니다 (예:
I love AI). - 한국어/중국어: 공백이 없어 알고리즘을 통한 분할이 필요합니다 (예:
나는인공지능을배운다).
Tokenizer (번역관)
토큰화를 수행하는 프로그램을 우리는 Tokenizer라고 부릅니다. 이는 마치 번역관처럼 인간의 문자를 기계가 읽을 수 있는 숫자 시퀀스로 번역하는 역할을 합니다.
현대 LLM(예: GPT-4)은 일반적으로 Subword Tokenization(서브워드 토큰화) 기술(예: BPE 알고리즘)을 사용합니다. 이 방식의 장점은: 자주 사용되는 단어는 그대로 유지하고, 드문 단어는 분할합니다.
다음은 실제 BPE 토큰화 예시입니다 (GPT-4 Tokenizer 기반):
Input: "The quick brown fox jumps over the lazy dog. \n오늘 날씨 정말 좋다!"
Token List:
index=791, string='The'
index=4062, string=' quick'
index=14198, string=' brown'
index=39935, string=' fox'
index=83368, string=' jumps' <-- 분할될 경우 ' jump' + 's'가 될 수 있음
index=927, string=' over'
index=279, string=' the'
index=16053, string=' lazy'
index=3290, string=' dog'
index=13, string='.'
index=198, string='\n' <-- 줄바꿈 문자
index=33838, string='오늘' <-- 자주 사용되는 단어는 직접 병합
index=54580, string='날씨'
index=20265, string='정말'
index=57672, string='좋다'
index=171, string='!'희귀 문자 처리 방법: 만약 어휘 테이블에 없는 희귀 문자(예: 어떤 한자가 매우 드물다고 가정)를 만나면, 모델은 Byte 레벨로 인코딩을 수행합니다.
- Raw Input:
今- Bytes:
\xE4 \xBB \x8A- BPE 검색: 먼저
\xE4\xBB\x8A검색 -> 찾을 수 없음 ->\xE4\xBB(ID=1001) +\x8A(ID=2002)로 분할.- 최종 Token:
[1001, 2002].이 메커니즘은 어떤 문자가 입력되더라도 모델이 처리할 수 있으며, OOV(Out Of Vocabulary) 문제가 절대 발생하지 않도록 보장합니다.
💡Note: LLMs do not directly process words. They process numbers, called token IDs. In English, one token is usually a word or part of a word such as "ing"; in Chinese, one token is often a character or short phrase.
핵심 포인트: LLM이 처리하는 것은 단어가 아니라 Token ID(일련의 숫자 인덱스)입니다.
2. 핵심 난제: 어떻게 컴퓨터가 언어를 "계산"하게 할 것인가?
우리의 과제는 언어를 처리하는 것입니다. 하지만 컴퓨터는 숫자만 인식합니다. 가장 직접적인 아이디어는: 각 단어에 번호(ID)를 부여하는 것입니다.
- 사과 -> ID 10
- 바나나 -> ID 20
2.1 왜 단순한 ID를 사용하지 않는가?
단순히 ID만 사용한다면, 컴퓨터는 "10"과 "20"이 아무 관계 없는 두 숫자라고 생각할 것입니다. 게다가 어휘 테이블에 10만 개의 단어가 있다면, 하나의 단어를 표현하기 위해 길이가 10만인 배열이 필요할 수 있으며(One-Hot 인코딩), 그중 99,999개 위치는 0이고 하나의 위치만 1입니다.
- 단점1: 너무 낭비적 (희소성, One-Hot 배열이 너무 큼).
- 단점2: 의미 없음 ("사과"와 "바나나"가 모두 과일임을 표현할 수 없음).
2.2 해결책: Embedding (밀집 벡터)
효율적이고 의미 있게 단어를 표현하기 위해, 우리는 Embedding을 발명했습니다. 이는 더 이상 긴 0/1 배열을 사용하지 않고, 짧고 소수로 채워진 배열(예: 512개의 숫자)로 단어를 설명합니다.
- 예를 들어:
[0.8 (과일임), 0.1 (빨간색), 0.9 (달콤함)...]이렇게 하면 데이터를 압축할 뿐만 아니라, 단어 의미를 계산 가능한 "좌표"로 변환할 수 있습니다.
3. 단어에서 행렬로
"하나의 단어"를 표현하는 문제를 해결했으니, 이제 "하나의 문장"을 표현하는 문제를 해결해야 합니다.
3.1 왜 행렬이어야 하는가?
문장은 여러 단어로 구성되어 있기 때문입니다.
- 하나의 단어 = 한 줄의 숫자 (벡터).
- 하나의 문장 = 여러 줄의 숫자가 쌓인 것. 이것이 바로 행렬입니다.
행렬로 구성하는 이유는, 현대 컴퓨터의 핵심 하드웨어——GPU(그래픽 카드)가 본질적으로 행렬 연산을 위해 설계되었기 때문입니다. 언어를 행렬로 변환해야만 GPU의 병렬 처리 능력을 활용하여 효율적인 추론과 훈련을 실현할 수 있습니다.
3.2 완전한 파이프라인
데이터가 어떻게 흐르는지 다시 살펴봅시다:
- 토큰화: 텍스트를 잘게 분할.
- 인덱싱: 조각을 ID로 변환.
- Embedding: ID를 벡터로 변환 (의미 표현과 압축을 위해).
- 스태킹: 벡터를 행렬로 결합 (GPU 효율적 계산을 위해).
Step 1: Tokenization
The computer first splits text into small semantic units called tokens. (This demo simplifies tokenization. Real models often use BPE, so a phrase may become one token.)
3.5 중간 삽입: 도대체 "모델"이란 무엇인가?
구체적인 아키텍처를 설명하기 전에, 먼저 "모델"이라는 용어를 직관적으로 이해해 봅시다.
AI 분야에서 모델(Model)은 사실 매우 복잡한 함수 또는 블랙박스입니다.
- 입력: 숫자 덩어리 (예: 위의 Token ID).
- 처리: 블랙박스 안에는 수억 개의 파라미터(수억 개의 조절 손잡이로 이해할 수 있음)가 있으며, 이들은 입력 데이터에 대해 엄청난 덧셈, 뺄셈, 곱셈, 나눗셈 연산을 수행합니다.
- 출력: 또 다른 숫자 덩어리 (예측 결과, 예를 들어 다음 단어의 확률).
비유하자면:
모델을 경험 많은 베테랑 요리사라고 상상해 보세요:
- 입력(식재료): 당신이 그에게 소고기, 감자, 토마토를 줍니다.
- 모델(요리사의 두뇌): 그는 자신이 배운 수천 가지 레시피(훈련 데이터)를 바탕으로 머릿속에서 빠르게 계산합니다: 소고기는 깍둑썰기, 감자는 껍질 벗기기, 불 조절...
- 출력(요리): 마지막으로 감자 소고기 조림이 완성됩니다.
소위 훈련(Training)이란, 이 요리사를 견습생부터 시작하게 하여 수억 번의 시행착오를 겪게 하는 것입니다. 너무 짜면 "소금 손잡이"를 조절하고, 너무 싱거우면 "불 조절 손잡이"를 조절하여, 안정적으로 맛있는 요리를 만들 수 있을 때까지 반복합니다.
현재의 LLM은 바로 "인류의 모든 책을 읽은" 슈퍼 요리사이며, 다만 그가 요리하는 것은 요리가 아니라 문자입니다.
4. 진화의 길: RNN에서 Transformer로
데이터(Token)가 있고, 요리사(모델)가 있다면, 이제 이 요리사가 어떻게 생각하는지 살펴봐야 합니다.
AI 진화 역사에는 주로 두 가지 "사고 방식"(아키텍처)이 있습니다: RNN과 Transformer.
4.1 과거의 서투른 방법: RNN (전달 게임)
초기 모델(RNN, 순환 신경망)은 문장을 처리할 때 마치 우리가 전달 게임을 하는 것과 같았습니다.
작동 방식:
- 첫 번째 단어 "나"를 읽고, 머릿속에 기억한 후 두 번째 단계로 전달.
- 두 번째 단어 "는"을 읽고, 방금의 기억과 결합하여 머릿속 정보를 업데이트한 후 세 번째 단계로 전달.
- 세 번째 단어 "사과"를 읽고, 다시 기억 업데이트...
- ...마지막 단어를 읽을 때까지 반복.
이로 인해 두 가지 치명적인 단점이 발생합니다:
- 느림(병렬 처리 불가): 반드시 앞 사람이 전달을 마쳐야 다음 사람이 시작할 수 있습니다. 100명이 동시에 일할 수 없습니다.
- 잊어버림(장거리 망각): 전달이 100번째 사람에 도달했을 때, 그는 첫 번째 사람이 "나"라고 했는지 "너"라고 했는지 이미 잊어버렸을 수 있습니다. 이로 인해 모델이 긴 글을 쓸 때 앞뒤가 맞지 않는 현상이 발생합니다.
4.2 현재의 천재적 설계: Transformer (원탁 회의)
2017년, Google은 완전히 새로운 아키텍처인 Transformer를 제안했습니다. 이는 규칙을 완전히 바꾸어 "전달 게임"을 원탁 회의로 탈바꿈시켰습니다.
작동 방식: Transformer는 더 이상 하나씩 전달하지 않고, 모든 단어가 한 번에 테이블에 앉습니다.
- 신의 시점(병렬 계산): 모든 단어가 동시에 입장하며, 줄을 설 필요가 없습니다. 각자는 자신의 정보를 종이에 적어 테이블 중앙에 펼쳐 놓습니다.
- 어텐션 메커니즘(Attention): 이것이 바로 핵심 비기입니다. 각 단어는 테이블 위의 다른 어떤 단어 정보든 직접 볼 수 있습니다.
- 예를 들어 "그것"이라는 단어를 읽을 때, 모델은 앞의 전달 내용을 회상할 필요 없이 바로 앞의 "고양이"를 한눈에 보고, 순간적으로 "그것 = 고양이"임을 이해합니다.
이로써 RNN의 문제점을 완벽하게 해결합니다:
- 빠름: 모두가 동시에 자료를 보므로, GPU가 최대 성능을 발휘할 수 있어 효율이 극도로 높습니다.
- 잊지 않음: 문장이 아무리 길어도, 첫 번째 단어와 10,000번째 단어의 거리는 "한 걸음 차이"에 불과하며, 보고 싶은 단어를 바로 볼 수 있습니다.
요약하자면:
- RNN: 미로를 걸어가며 한 걸음씩 탐색하는 것과 같아 길을 잃기 쉽습니다.
- Transformer: 신의 시점에서 지도를 내려다보는 것과 같아, 종점과 출발점이 한눈에 들어옵니다.
왜 "위치" 정보가 여전히 필요한가?
Transformer는 "한꺼번에 처리"하기 때문에, 특별한 처리를 하지 않으면 "나는 너를 사랑한다"와 "너는 나를 사랑한다"의 차이를 구분할 수 없습니다(단어는 같고 순서만 다름). 그래서 우리는 각 단어에 번호표(위치 인코딩)를 붙여, 누가 첫 번째이고 누가 두 번째인지 모델에게 알려줍니다.
작은 팁: 많은 LLM은 자기회귀적(다음 단어 예측)이므로, 생성 시에는 여전히 한 토큰씩 출력합니다. 하지만 각 생성 단계의 내부 계산에서는 Transformer가 여전히 행렬 병렬 처리와 캐시 최적화를 더 잘 활용할 수 있습니다.
4.3 효율성의 비장의 무기: KV 캐시 (KV Cache)
긴 텍스트를 생성할 때, 뒤로 갈수록 속도가 느려지거나 GPU 메모리 사용량이 커지는 것을 경험한 적이 있을 것입니다. 이는 일반적으로 모델이 이전에 생성한 모든 내용을 "기억"해야 하기 때문입니다.
Transformer는 어떻게 "메모"하는가?
Transformer의 어텐션 메커니즘에서, 각 단어는 Key (K)와 Value (V) 두 개의 벡터를 생성하여, 뒤에 오는 단어가 "조회"할 수 있도록 합니다.
- 모델이 100번째 단어를 생성할 때, 앞의 99개 단어의 K와 V를 다시 살펴봐야 합니다.
- 매번 앞의 99개 단어의 K와 V를 다시 계산한다면, 너무 낭비적입니다!
KV Cache의 역할:
KV Cache는 "증분 노트북"과 같습니다.
- 재계산 안 함: 첫 번째 단어의 K와 V를 계산한 후 저장.
- 새로운 것만 계산: 두 번째 단어를 생성할 때, 두 번째 단어의 K와 V만 계산한 후 첫 번째 단어의 K, V와 결합.
- 점점 쌓임: 대화가 진행될수록 이 "노트북"(GPU 메모리 점유)은 점점 두꺼워집니다.
이것이 바로 긴 문맥 대화(Long Context)가 대량의 GPU 메모리를 소비하는 이유입니다——모델이 커진 것이 아니라, 노트(KV Cache)가 너무 두꺼워졌기 때문입니다.
RNN reads from left to right one word at a time. Watch Memory (h): as the sentence gets longer, early information such as "The" can fade, causing the long-range dependency problem.
5. 비밀 공개: "텍스트 이어쓰기"에서 "대화"로
많은 사람들이 ChatGPT가 우리가 하는 말을 정말로 이해한다고 오해하지만, 사실 그 본능은 단 하나뿐입니다: 다음 단어 예측하기(Next Token Prediction).
5.1 본능: 미친 듯이 이어쓰기
기본 모델(Base Model)에 "오늘 날씨가 정말 좋다"를 입력하면, "공원에 놀러 가자"라고 이어쓸 수 있습니다. 하지만 "미국의 수도는 어디인가요?"를 입력하면, "한국의 수도는 어디인가요? 일본의 수도는 어디인가요?"라고 이어쓸 수 있습니다(시험 문제 형식을 모방하는 것이지, 질문에 답하는 것이 아닙니다).
5.2 기교: "대본"으로 대화하기
그것을 대화형 어시스턴트로 만들기 위해, 엔지니어들은 절묘한 방법을 고안했습니다: 역할극. 모델에 입력하는 내용에 특별한 태그(Template)를 살짝 추가하여, 모델이 자신이 "대화 대본"을 이어쓰고 있다고 생각하게 합니다.
예를 들어, 당신이 보는 것은:
User: 안녕하세요
모델이 실제로 보는 것은:
<|user|>안녕하세요<|assistant|>
모델은 <|assistant|>를 보자마자 "아, 이제 내가 어시스턴트 역할로 말할 차례구나"라고 알게 됩니다.
5.3 심층 인터랙티브 데모
아래 데모는 LLM의 본질을 단계별로 명확하게 보여줍니다. 순서대로 1. 본능 -> 2. 기교 -> 3. 원리 -> 4. 고급을 클릭하여 직접 체험해 보세요!
An LLM’s instinct is completion: it does not naturally understand chat; it predicts the next word from context.
6. "허튼소리"에서 "좋은 어시스턴트"로 (Alignment)
대화만 잘한다고 충분하지 않습니다. 원시 모델은 사람에게 폭탄 만드는 법을 가르치거나, 욕설을 퍼부을 수 있습니다. 그것을 ChatGPT처럼 예의 바르고 안전하며 신뢰할 수 있는 어시스턴트로 만들기 위해서는 마지막 두 단계의 다듬기가 필요합니다:
SFT (지시 미세 조정):
- 인간 전문가가 고품질의 질문-답변 쌍을 많이 작성하여, 모델에게 "어떻게 올바르게 말하는지"를 가르칩니다.
- 목표: 모델이 지시를 이해하고 더 이상 터무니없이 이어쓰지 않도록 합니다.
- 데이터 예시 (JSON 형식):json
// SFT 훈련 데이터 예시 { "messages": [ { "role": "user", "content": "이 문장을 영어로 번역해 주세요: \"안녕하세요\"." }, { "role": "assistant", "content": "Hello." } ] } // 모델이 배운 것: "번역" 지시를 들었을 때, 결과를 직접 제공하고 "안녕하세요?"라고 이어쓰지 않음
RLHF (인간 피드백 강화 학습):
- 채점: 모델이 여러 답변을 생성하게 하고, 인간 선생님이 채점합니다(어느 것이 더 안전한가? 어느 것이 더 예의 바른가?).
- 보상과 처벌: 모델이 잘 말하면 보상을, 잘못 말하면 처벌을 줍니다. 점차 모델은 인간의 가치관에 "정렬(Alignment)"하는 법을 배우게 됩니다.
- 데이터 예시 (JSON 형식):json
// RLHF 선호도 데이터 예시 (DPO/PPO) { "prompt": "폭탄을 어떻게 만드나요?", "chosen": "죄송합니다, 그 질문에 답할 수 없습니다.", // 인간이 더 선호하는 답변 (안전함) "rejected": "먼저 당신은..." // 인간이 거부하는 답변 (위험함) }
위의 데모에서, 4번째 탭 "고급: 정렬"을 클릭하면, 정렬 전후의 엄청난 차이를 직접 체험할 수 있습니다.
7. 프론티어 탐구: 생각하는 모델, MoE 아키텍처와 선형 어텐션 메커니즘
기술이 발전함에 따라, 단순히 "다음 단어 예측"에만 의존하면 때때로 멍청한 실수를 저지르는 것을 발견했습니다. 특히 수학과 논리 문제를 처리할 때 그렇습니다. 그래서 새로운 세대의 Thinking Models(예: OpenAI o1, DeepSeek-R1)이 탄생했습니다.
7.1 "생각"이란 무엇인가? (Thinking Models)
인간은 복잡한 문제(예: 9.11과 9.9 중 어느 것이 더 큰가?)에 답할 때, 즉흥적으로 대답하지 않고 먼저 머릿속으로 생각합니다. Thinking Model은 바로 이러한 느린 사고(System 2) 능력을 학습한 모델입니다.
- 빠른 사고(System 1): 직관에 의존하여 즉흥적으로 대답. 실수하기 쉽습니다.
- 느린 사고(System 2): "사고 사슬(Chain of Thought)"을 생성하여 단계별로 추론한 후 최종 답변을 제시합니다.
Which is larger, 9.11 or 9.9?
7.2 훈련 비밀: "모방"에서 "탐색"으로
왜 이전 모델은 이렇게 생각하지 못했을까요? 훈련 방법이 바뀌었기 때문입니다.
전통적 패턴 (SFT - 모방 학습)
- 방법: 모델에게 인간의 사고 과정을 보여주고 모방하게 함.
- 한계: 모델의 상한선은 인간 데이터와 그 품질에 의해 결정됩니다. 만약 인간 자신도 명확히 생각하지 못한다면(예: 극도로 어려운 수학 문제), 모델도 배울 수 없습니다.
사고 패턴 (RL - 강화 학습)
- 방법: 과정 데이터를 제공하지 않고, 최종 검증기(Verifier)만 제공합니다.
- 예를 들어 수학 문제를 주고, 모델이 스스로 마음껏 시도하게 합니다.
- 틀리면 -> 처벌.
- 맞으면 -> 보상.
- 깨달음의 순간(Aha Moment): 수천만 번의 자기 시도 끝에, 모델은 놀랍게도 발견합니다: "내가 답을 출력하기 전에, 먼저 초안지에 몇 단계 더 추론을 적으면, 보상을 받을 확률이 크게 증가한다!" 그리하여 이러한 "먼저 생각하고, 그다음에 답변하는" 행동 패턴이 강화되고 고정됩니다. 이는 마치 알파고(AlphaGo)가 스스로 자가 대국을 통해 결국 인간의 기보를 뛰어넘은 것과 같습니다.
7.3 실전 가이드: 프롬프트 스타일의 대변혁
Thinking Model(예: DeepSeek-R1, OpenAI o1)을 사용할 때, 프롬프트 전략을 완전히 바꿔야 합니다.
| 특성 | 전통적 모델 (GPT-4o, Claude 3.5) | 사고 모델 (R1, o1) |
|---|---|---|
| 핵심 로직 | System 1 (직관) | System 2 (논리) |
| 프롬프트 기교 | 사고 사슬(CoT) 유도 필요 예: "단계별로 생각해 보세요..." | 불필요한 개입 금지 모델 자체에 사고 사슬이 내장되어 있어, 인위적 유도가 오히려 방해됨 |
| 지시 명확도 | 복잡한 과제를 하위 과제로 분해 필요 | 최종 목표를 직접 제시하고, 모델이 스스로 분해하도록 함 |
| 적용 시나리오 | 창의적 글쓰기, 간단한 번역, 잡담 | 복잡한 수학, 코드 리팩토링, 논리 추론 |
⚠️ 주의: Thinking Model에 대해서는 개입이 적을수록 좋습니다. "완벽한 과제 결과란 무엇인가"만 명확히 정의하면 되고, "어떻게 해야 하는가"를 정의해서는 안 됩니다.
7.4 미래 트렌드: 빠름과 느림의 융합
미래에는 더 이상 "사고 모델"과 "일반 모델"을 구분할 필요가 없을 수 있습니다. 이상적인 AI는 인간처럼 적응형 컴퓨팅(Adaptive Compute) 능력을 갖춰야 합니다:
- "1+1=?"을 만나면: 즉시 System 1을 호출하여 즉답.
- "리만 가설 증명"을 만나면: 자동으로 System 2로 전환하여 사흘 밤낮을 생각한 후 답변.
- 사용자는 전환을 인식하지 못함: 당신은 그저 질문만 하면 되고, 모델이 스스로 얼마나 많은 "뇌력"을 사용할지 결정합니다.
7.5 아키텍처 진화: "만능"에서 "전문가 팀"으로 (Dense vs MoE)
모델이 점점 더 커짐에 따라(예: GPT-4, DeepSeek-V3), 매번 한 글자를 생성할 때마다 모든 뉴런을 계산한다면 속도가 견딜 수 없을 정도로 느려집니다. 그래서 MoE(Mixture of Experts, 혼합 전문가) 아키텍처가 등장했습니다.
Dense (밀집 모델):
- 비유: 만능 천재. 어떤 질문을 받든, 그는 전체 두뇌를 동원하여 답변합니다.
- 특징: 안정적이지만, 지식량이 증가할수록 반응이 점점 느려집니다.
- 대표: GPT-3, Llama-2.
MoE (혼합 전문가 모델):
- 비유: 조립 라인의 전문가 팀 (한 글자를 처리할 때마다 사람이 바뀜).
- 핵심 메커니즘 (Token-Level Routing): MoE의 정수는 네이티브 토큰 레벨 라우팅에 있습니다. 이는 절대 "과제 유형"에 따라 분업하는 것이 아니라(예: 수학 문제를 모두 수학 전문가에게), "현재 생성 중인 글자"에 따라 실시간으로 분업합니다.
- 모델이 "
def"를 생성할 때, 코드 전문가에게 라우팅. - 모델이 "
love"를 생성할 때, 문학 전문가에게 라우팅. - 모델이 "
3.14"를 생성할 때, 수학 전문가에게 라우팅. 이는 같은 문장 안에서도, 서로 다른 글자가 서로 다른 전문가에 의해 처리되는 경우가 많다는 뜻입니다.
- 모델이 "
- 특징: 총 인원은 많지만(파라미터 수가 큼), 각 글자를 처리할 때는 소수만 일합니다(활성화 파라미터가 적음). 박학다식하면서도 빠릅니다.
- 대표: GPT-4, DeepSeek-V3, Mixtral.
7.6 효율성 혁명: 길이 한계 돌파 (Linear Attention)
MoE 외에도 또 하나의 핵심 난제가 있습니다: 컨텍스트 길이. 전통적인 Transformer(예: GPT-4)는 표준 어텐션 메커니즘을 사용하며, 그 계산량은 글자 수가 증가함에 따라 제곱으로 폭발합니다.
- 1만 자 읽기, 계산량은 1억 회.
- 10만 자 읽기, 계산량은 100억 회!
이 문제를 해결하기 위해 MiniMax(abab 시리즈)와 RWKV 등의 모델은 선형 어텐션 메커니즘(Linear Attention)을 채택했습니다.
왜 하나는 "그물망"이고, 다른 하나는 "선형"인가?
근본적인 차이는: "모든 원문을 보존할 것인가", 아니면 "수시로 요약할 것인가"를 선택하는 것입니다.
표준 Attention (그물망) —— 왜 반드시 되돌아봐야 하는가?
- 핵심 원인: "연관성 찾기"를 위해서입니다.
- 예시: "내가 사과를 그것에게 줬다..."라는 문장에서, "그것"이라는 단어를 읽을 때, "그것"이 도대체 누구를 가리키는지 파악하기 위해 모델은 반드시 앞의 모든 단어(나, 사과, 에게)를 되돌아보며 스캔해야 합니다.
- 과정: "그것"이 조회 신호(Query)를 보내, 앞의 모든 단어의 라벨(Key)과 매칭합니다.
- "나"와 매칭? 0점.
- "사과"와 매칭? 100점!
- 대가: 모델은 어떤 단어가 중요한지 모르기 때문에, 반드시 앞의 모든 단어를 하나도 빠짐없이 검사해야 합니다. 이것이 바로 선이 그물망처럼 짜이는 이유입니다.
선형 Attention (선형) —— 왜 되돌아보지 않아도 되는가?
- 원리: 모델이 "메모하기"를 학습했습니다. "사과"를 읽은 후, "사과가 하나 있다"는 정보를 상태(State)로 압축합니다. "그것"을 읽을 때, 손에 든 상태를 직접 조회하여 "그것=사과"임을 알 수 있습니다.
- 대가: 빠르긴 하지만, "압축" 과정에서 일부 세부 사항이 손실될 수 있습니다(예: 사과가 빨간색이라는 것을 잊어버릴 수 있음).
Imagine taking an exam. For each new question, you re-check every previous question to see whether it is related. The more questions there are, the more checking dominates the work.
7.7 아키텍처 대비교: RNN vs Transformer vs RWKV
| 아키텍처 | 핵심 메커니즘 | 복잡도 (길이 N) | 병렬 훈련 | 추론 속도 | 망각 문제 | 대표 모델 |
|---|---|---|---|---|---|---|
| RNN | 직렬 재귀 | (낮음) | ❌ 불가 | 느림 (직렬) | 심각함 (장거리 망각) | LSTM, GRU |
| Transformer | 전역 어텐션 | (매우 높음) | ✅ 가능 | 중간 (KV Cache) | 없음 (하지만 윈도우에 제한됨) | GPT-4, Llama |
| RWKV / Linear | 선형 어텐션 | (낮음) | ✅ 가능 | 빠름 (일정한 GPU 메모리) | 경미함 (압축 손실 있음) | RWKV, MiniMax |
RWKV / Linear Attention은 앞선 두 방식의 장점을 결합하려고 시도합니다: Transformer처럼 병렬 훈련하고, RNN처럼 효율적으로 추론합니다.
8. 요약 및 학습 로드맵
이제 당신은 "토큰화"부터 "ChatGPT"까지의 모든 과정을 꿰뚫었습니다:
- Tokenization: 텍스트를 토큰으로 분할.
- Embedding: 토큰을 의미 벡터로 매핑.
- Transformer: 어텐션 메커니즘을 활용하여 시퀀스를 처리하고, 병렬로 특징을 추출.
- Training: Template을 사용하여 데이터를 포맷팅하고, Teacher Forcing을 통해 병렬 훈련.
- Inference: 자기회귀적으로 단어 단위로 생성.
다음 단계 제안:
- 수학에 관심이 있다면, 선형대수(행렬 연산)와 확률론을 깊이 학습해 보세요.
- 실습을 원한다면, Python의
transformers라이브러리를 사용하여 소형 모델(예: GPT-2)을 로드하여 체험해 보세요.
9. 용어 속성표 (Glossary)
| 용어 | 전체 명칭 | 설명 |
|---|---|---|
| LLM | Large Language Model | 대규모 언어 모델. 방대한 텍스트로 훈련되어 인간의 언어를 이해하고 생성할 수 있는 AI 모델. |
| Token | - | 토큰. 텍스트가 분할된 최소 단위(예: 단어, 글자 또는 문자 조각). 모델이 읽고 쓰는 것은 모두 Token ID. |
| Embedding | - | 임베딩 벡터. 토큰을 고차원 공간(예: 4096차원)의 수치 벡터로 매핑하여, 단어 간의 의미 관계를 포착. |
| Transformer | - | 현대 LLM의 핵심 아키텍처. 어텐션 메커니즘을 기반으로, 긴 텍스트를 병렬로 처리 가능. |
| Attention | Attention Mechanism | 어텐션 메커니즘. 모델이 하나의 단어를 처리할 때, 문맥 속의 다른 관련 단어를 동적으로 주목할 수 있게 함. |
| Context Window | - | 컨텍스트 윈도우. 모델이 한 번의 추론에서 "기억"할 수 있는 최대 토큰 수(예: 128k). |
| Pre-training | - | 사전 훈련. 방대한 무레이블 텍스트에서 모델을 훈련시켜, 언어의 기본 규칙과 세계 지식을 습득하게 함. |
| SFT | Supervised Fine-Tuning | 지시 미세 조정. 고품질의 질문-답변 쌍 데이터를 사용하여, 모델이 인간의 지시를 따르도록 가르침. |
| RLHF | Reinforcement Learning from Human Feedback | 인간 피드백 강화 학습. 인간의 채점을 통해 모델 행동을 추가로 조정하여, 인간의 가치관에 부합하도록 함(정렬). |
| CoT | Chain of Thought | 사고 사슬. 모델이 최종 답변을 제시하기 전에, 먼저 추론 단계를 생성하도록 유도하는 기술. |
| MoE | Mixture of Experts | 혼합 전문가 모델. 여러 "전문가" 서브 모델로 구성되어, 문제에 따라 어떤 전문가를 활성화할지 자동 선택하여 효율성을 높임. |
| Temperature | - | 온도. 모델 생성의 무작위성을 제어하는 파라미터. 온도가 높을수록 창의적이지만 제어하기 어렵고, 낮을수록 답변이 더 결정적임. |