> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sifi.life/llms.txt
> Use this file to discover all available pages before exploring further.

# LLM 내부 작동 직관적 이해

[\< LLM 기초 목차로 돌아가기](overview)

***

이 섹션은 LLM에 대한 **전문가 수준의 직관** 을 전달합니다. 고객에게 LLM의 가능성과 한계를 설명할 때, 이 직관이 있으면 "마법처럼 보이는 것"을 합리적으로 설명할 수 있습니다.

## LLM은 "이해"하는 것이 아니라 "패턴 매칭"한다

20년간 AI 시스템을 만들면서 가장 자주 만나는 오해가 이것입니다: **"GPT가 내 질문을 이해했다."** 아닙니다. LLM은 이해하지 않습니다. **학습 데이터에서 본 패턴을 조합하는 것** 입니다.

"2+3은 얼마인가요?"라고 물으면 "5"라고 답합니다. LLM이 덧셈을 이해해서일까요? 아닙니다. 학습 데이터에 "2+3=5"라는 패턴이 수없이 등장했기 때문입니다. 증거를 보여드리겠습니다:

* `2+3` → `5` (정답 — 학습 데이터에 빈번)
* `23847+95123` → **종종 오답**(학습 데이터에 이 조합이 없거나 드물음)
* `3.7과 3.11 중 어느 것이 더 큰가?` → **GPT-4도 종종 "3.11"이라고 오답**(소수점 비교 패턴의 함정)

**패턴 매칭의 강점**:

* **창의적 조합**: 학습 데이터에서 본 다양한 패턴을 새로운 방식으로 조합합니다. 이것이 LLM의 "창의성"입니다.
* **유연한 일반화**: "이메일 초안을 써줘"라고 학습하지 않았어도, "이메일"의 패턴과 "초안 작성"의 패턴을 조합하여 수행합니다.
* **다국어 전이**: 영어로 학습한 추론 패턴이 한국어에서도 어느 정도 작동합니다.

**패턴 매칭의 약점**:

* **추론의 불안정성**: 같은 유형의 문제도 표현이 바뀌면 실패할 수 있습니다. "진짜 이해"가 아니기 때문입니다.
* **자신감 있는 오류**: 패턴이 "그럴듯하면" 틀려도 자신있게 출력합니다. 사실 검증 능력이 없습니다.
* **편향 복제**: 학습 데이터의 편향을 그대로 재현합니다.

## LLM의 "세계 모델" 논쟁

최근 AI 연구에서 가장 뜨거운 논쟁 중 하나입니다: **"LLM이 정말로 세계에 대한 내부 모델을 가지는가?"**

**흥미로운 증거 — Othello 실험 (Li et al., 2023)**:

연구자들이 오셀로(Othello) 보드게임의 수순 데이터만으로 GPT를 학습시켰습니다. 모델에게 보드 상태를 시각적으로 보여준 적이 없고, 단지 "E3, D4, C5, ..." 같은 수순 텍스트만 입력했습니다.

놀랍게도, 모델 내부의 뉴런을 분석하니 **보드의 2차원 상태가 내부적으로 표현** 되어 있었습니다. 텍스트만 봤는데 보드 모양을 "학습"한 것입니다.

이것은 LLM이 단순 패턴 매칭을 넘어, 데이터의 **잠재적 구조(latent structure)** 를 학습할 수 있다는 증거입니다. 하지만 이것을 "이해"라고 부를 수 있는지는 여전히 논쟁 중입니다.

> **참고**
> **실무적 시사점**: 이 논쟁의 결론이 뭐든, 실무적 접근법은 동일합니다. **"이해"를 기대하지 말고, "매칭 + 검증" 패턴으로 사용하세요.** LLM이 생성한 결과를 항상 외부 데이터로 검증하는 구조(RAG, Guardrails)를 기본으로 설계하는 것이 안전합니다.

## Scaling의 마법과 한계

모델 파라미터를 10배 늘리면 갑자기 새로운 능력이 나타나는 현상이 있습니다. 이것을 **Phase Transition(상전이)** 이라고 부릅니다. 물을 가열하면 99도까지는 액체인데, 100도에서 갑자기 기체가 되는 것과 비슷합니다.

GPT-2(1.5B) → GPT-3(175B)의 도약이 대표적입니다. GPT-2는 그럴듯한 텍스트를 이어쓰는 정도였지만, GPT-3는 갑자기 번역, 코드 생성, 수학 문제 풀이를 시작했습니다. 파라미터가 100배 늘어나자 **질적으로 다른 능력** 이 나타난 것입니다.

**하지만 무한히 스케일하면 무한히 좋아지는가?**

**Chinchilla 법칙 (Hoffmann et al., 2022)** 이 이 질문에 답합니다. 핵심 발견:

> **모델 크기만 키우는 것은 비용이 높은이다. 모델 크기와 학습 데이터를 균형 있게 늘려야 한다.**

구체적으로, 모델 파라미터를 2배로 늘리면 학습 데이터도 2배로 늘려야 최적입니다. Chinchilla(70B)가 당시 3배 큰 Gopher(280B)를 능가한 이유가 바로 이것입니다 — 같은 컴퓨팅 예산을 모델 크기가 아닌 데이터에 더 많이 투자했습니다.

| 접근법              | 모델 크기 | 학습 데이터  | 결과                          |
| ---------------- | ----- | ------- | --------------------------- |
| Gopher (비용이 높은)  | 280B  | 300B 토큰 | 큰 모델, 적은 데이터                |
| Chinchilla (효율적) | 70B   | 1.4T 토큰 | 작은 모델, 많은 데이터 → **더 높은 성능** |

> **주의**
> **고객에게 전달할 핵심 메시지**: "가장 큰 모델 = 가장 좋은 모델"이 아닙니다. 고품질 데이터, 효율적 아키텍처(MoE), 정교한 학습 전략이 모델 크기보다 중요한 경우가 많습니다. Llama 3 8B가 이전 세대 Llama 2 70B에 근접하는 성능을 보인 것이 이를 증명합니다.

## 비유 모음: 전문가가 고객에게 설명할 때 쓰는 비유 5가지

20년간 기술 고객과 소통하면서 검증된 비유들입니다. 상황에 맞게 사용하세요.

**1. 도서관 사서 비유**(LLM의 지식과 한계)

> "LLM은 수백만 권의 책을 읽은 도서관 사서와 같습니다. 질문하면 기억에 의존하여 답하지만, 새로 출판된 책은 모르고, 기억이 섞여 존재하지 않는 내용을 말하기도 합니다. RAG는 이 사서에게 관련 책을 직접 건네주고 '이 책을 보고 답하세요'라고 하는 것입니다."

**2. 앵무새 비유**(패턴 매칭의 본질)

> "LLM은 수백만 대화를 들은 극도로 영리한 앵무새입니다. 대화의 패턴을 놀라울 정도로 정확하게 재현하지만, 자신이 말하는 내용의 '의미'를 이해하는 것은 아닙니다. 하지만 이 앵무새가 워낙 많은 대화를 들었기 때문에, 대부분의 상황에서 적절한 답변을 할 수 있습니다."

**3. 자동완성 on steroids 비유**(기술적 원리)

> "스마트폰의 자동완성 기능을 아시죠? '오늘 점심'을 입력하면 '뭐 먹을까'를 제안하는 것. LLM은 이것의 수십억 배 강력한 버전입니다. 단어 하나가 아니라 문단, 코드, 논문까지 '자동완성'합니다. 원리는 같습니다 — '다음에 올 가장 그럴듯한 것을 예측'하는 것."

**4. 외국어 학습자 비유**(패턴 일반화)

> "중국에서 5년 살면서 중국어를 배웠는데, 한 번도 들어보지 못한 새로운 문장을 말할 수 있죠? 문법 규칙을 외운 것이 아니라, 수많은 대화의 패턴이 내면화된 겁니다. LLM도 마찬가지입니다 — 언어 규칙을 프로그래밍한 것이 아니라, 패턴이 내면화된 것입니다."

**5. 꿈꾸는 기계 비유**(Hallucination)

> "꿈을 꿀 때, 우리 뇌는 경험의 조각들을 그럴듯하게 조합합니다. 꿈에서 본 것이 현실과 완전히 일치하지 않지만, 꿈속에서는 완벽하게 자연스럽죠. LLM의 Hallucination도 이와 같습니다. 학습 데이터의 조각들을 조합하여 그럴듯하지만 사실이 아닌 내용을 생성합니다."

***

## Transformer 내부 한눈에

LLM의 핵심 아키텍처인 Transformer의 내부 구조를 이해하면, 모델의 강점과 한계를 더 정확히 설명할 수 있습니다.

### Self-Attention 계산 과정

Self-Attention은 "이 단어가 문장 내 다른 단어들과 얼마나 관련 있는가?"를 계산하는 메커니즘입니다.

1. 입력 토큰 벡터에서 **Q(Query), K(Key), V(Value)** 세 개의 벡터를 생성합니다
2. **Q와 K의 내적(dot product)** 으로 각 토큰 쌍의 관련도(attention score)를 계산합니다
3. Softmax로 정규화하여 **attention weight** 를 얻습니다
4. **V에 가중합** 을 적용하여 최종 출력을 생성합니다

```
Attention(Q, K, V) = softmax(Q × K^T / √d_k) × V

여기서:
- Q: "나는 무엇을 찾고 있는가?" (Query)
- K: "나는 어떤 정보를 가지고 있는가?" (Key)
- V: "내가 실제로 전달할 정보" (Value)
- d_k: Key 벡터의 차원 수 (스케일링 팩터)
```

**예시**: "서울의 인구는 약 950만 명이다"에서 "인구"라는 토큰이 처리될 때:

* "서울"과 높은 attention → 어떤 도시의 인구인지 파악
* "950만"과 높은 attention → 구체적 수치와 연결
* "약"과 중간 attention → 정확도 표현 참조

### Multi-Head Attention의 역할

하나의 Attention Head는 하나의 **관계 패턴** 만 학습합니다. 다양한 관계를 동시에 포착하기 위해 **여러 개의 Head를 병렬로** 운영합니다.

| Head   | 학습하는 관계 패턴 예시             |
| ------ | ------------------------- |
| Head 1 | 주어-동사 관계 ("학생이 → 공부한다")   |
| Head 2 | 수식어-피수식어 관계 ("빨간 → 사과")   |
| Head 3 | 대명사-선행사 관계 ("그녀는 → 김 교수") |
| Head 4 | 숫자-단위 관계 ("950만 → 명")     |
| ...    | ...                       |

GPT-4 수준의 모델은 **96\~128개의 Head** 를 사용하여 풍부한 언어 관계를 병렬로 포착합니다.

### Layer 구조: 추상화의 계층

Transformer는 수십\~수백 개의 동일한 **Layer(블록)** 를 쌓은 구조입니다. 각 Layer는 **Self-Attention + Feed-Forward Network** 로 구성됩니다.

| Layer 위치              | 학습하는 정보                  | 비유                   |
| --------------------- | ------------------------ | -------------------- |
| **초기 Layer (1\~10)**  | 표면적 패턴: 문법, 구문 구조, 단어 형태 | 문장을 읽고 문법을 파악하는 단계   |
| **중간 Layer (11\~50)** | 의미적 관계: 개체 관계, 인과 관계, 주제 | 내용을 이해하고 관계를 파악하는 단계 |
| **후기 Layer (51\~96)** | 고수준 추론: 맥락 종합, 답변 생성 전략  | 종합하여 결론을 도출하는 단계     |

***

## 토큰화 상세

### 토큰화(Tokenization)란?

LLM은 텍스트를 직접 처리하지 않습니다. 먼저 텍스트를 **토큰(token)** 이라는 하위 단위로 분할하고, 각 토큰을 숫자 ID로 변환합니다.

### 주요 토크나이저 비교

| 토크나이저                        | 사용 모델         | 어휘 크기       | 특징                                |
| ---------------------------- | ------------- | ----------- | --------------------------------- |
| **BPE (Byte Pair Encoding)** | GPT 시리즈       | ~~50K~~100K | 빈도 기반 병합. 가장 보편적                  |
| **SentencePiece**            | Llama, T5     | ~~32K~~128K | 언어 무관(language-agnostic). 공백도 토큰화 |
| **tiktoken (cl100k\_base)**  | GPT-4, GPT-4o | 100K        | OpenAI 자체 구현. BPE 기반              |
| **Anthropic Tokenizer**      | Claude 시리즈    | \~100K+     | 자체 구현. 다국어 효율성 강화                 |

### 한국어 토큰화: 같은 문장, 다른 토큰 수

한국어는 **교착어** 특성상, 조사/어미가 결합되어 토큰 수가 많아지는 경향이 있습니다.

```
입력 문장: "데이터브릭스는 통합 데이터 분석 플랫폼입니다"

GPT-4 (cl100k_base):
  ["데이터", "브릭", "스는", " 통합", " 데이터", " 분석", " 플랫폼", "입니다"]
  → 8 토큰

Llama 3 (SentencePiece):
  ["▁데이터", "브", "릭", "스는", "▁통합", "▁데이터", "▁분석", "▁플랫", "폼", "입니다"]
  → 10 토큰

Claude (Anthropic):
  ["데이터브릭스는", " 통합", " 데이터", " 분석", " 플랫폼입니다"]
  → 5 토큰 (한국어 최적화가 상대적으로 우수)
```

```
영어 동일 의미: "Databricks is a unified data analytics platform"

GPT-4: ["Data", "bricks", " is", " a", " unified", " data", " analytics", " platform"]
→ 8 토큰

Llama 3: ["▁Data", "bricks", "▁is", "▁a", "▁unified", "▁data", "▁analytics", "▁platform"]
→ 8 토큰
```

> **주의**
> **비용 영향**: 한국어는 영어 대비 **1.5\~3배 많은 토큰** 을 소비합니다. 같은 의미를 전달하는 데 더 많은 토큰이 필요하므로, API 비용이 그만큼 증가합니다. 프롬프트를 간결하게 작성하거나, 한국어 최적화된 토크나이저를 사용하는 모델을 선택하면 비용을 절감할 수 있습니다.

***

## KV-Cache: 왜 장문 추론이 느린가

### KV-Cache란?

LLM이 토큰을 하나씩 생성할 때, 이전에 계산한 **Key와 Value 벡터를 캐시에 저장** 하여 재사용합니다. 이것이 KV-Cache입니다.

```
"서울의 인구는" → [K1,V1], [K2,V2], [K3,V3], [K4,V4]

다음 토큰 "약" 생성 시:
- K1~K4는 이미 계산됨 → 캐시에서 재사용
- "약"에 대한 K5, V5만 새로 계산
- Attention: Q5 × [K1,K2,K3,K4,K5]^T
```

### KV-Cache의 메모리 문제

| 항목                     | Llama 3.3 70B (128K 컨텍스트) |
| ---------------------- | ------------------------- |
| **모델 가중치**             | \~140GB (FP16)            |
| **KV-Cache (128K 토큰)** | \~80GB                    |
| **총 GPU 메모리 필요**       | \~220GB                   |

컨텍스트가 길어질수록 KV-Cache가 **선형으로** 증가합니다. 1M 토큰 컨텍스트를 사용하면 KV-Cache만 수백 GB에 달합니다.

### PagedAttention (vLLM)의 혁신

기존 KV-Cache는 각 요청마다 **연속 메모리 블록** 을 할당합니다. 이 방식은 메모리 단편화와 낭비를 유발합니다.

**vLLM의 PagedAttention** 은 OS의 가상 메모리(Virtual Memory) 개념을 차용합니다:

* KV-Cache를 **고정 크기 페이지(block)** 로 분할
* 비연속 메모리에 저장 가능 → **메모리 단편화 해결**
* 필요할 때만 새 페이지 할당 → **메모리 낭비 최소화**
* 동일한 프롬프트의 KV-Cache를 여러 요청이 **공유** 가능

| 항목                   | 기존 방식         | PagedAttention (vLLM) |
| -------------------- | ------------- | --------------------- |
| **메모리 효율**           | 60\~70% (단편화) | 95%+                  |
| **처리량 (throughput)** | 기준            | 2\~4배 향상              |
| **배치 크기**            | 메모리 제한으로 작음   | 대폭 증가                 |

> **참고**
> **Databricks 연결**: Databricks의 Foundation Model API와 Model Serving은 내부적으로 vLLM 기반의 최적화된 추론 엔진을 사용하여, 이러한 KV-Cache 최적화가 자동으로 적용됩니다.

***

## 추론 시간 컴퓨팅 (Inference-Time Compute)

전통적인 LLM은 입력 → 출력을 한 번에 생성합니다. 반면 OpenAI o1/o3, DeepSeek R1 같은 **추론 모델(Reasoning Model)** 은 답변 전에 **"생각하는 시간"** 을 가집니다.

| 방식                              | 토큰 생성 패턴                     | 장점          | 단점         |
| ------------------------------- | ---------------------------- | ----------- | ---------- |
| **전통적 (GPT-4o, Claude Sonnet)** | 입력 → 바로 출력                   | 빠름, 비용 낮음   | 복잡한 추론에 약함 |
| **추론 모델 (o1, R1)**              | 입력 → \[thinking tokens] → 출력 | 수학/코딩/논리 강화 | 느림, 비용 높음  |

추론 모델은 **더 많은 토큰(=더 많은 연산)을 생성** 하여 답의 정확도를 높입니다. "시험 시간에 더 오래 고민하면 더 정확한 답을 낸다"는 직관과 같습니다.

> 추론 모델의 상세한 작동 원리와 활용법은 [추론 모델 (Reasoning Models)](../reasoning) 페이지를 참고하세요.

***

## 양자화 (Quantization)

양자화는 모델의 **가중치 정밀도를 낮추어** GPU 메모리 사용량과 추론 비용을 줄이는 기법입니다.

### 양자화 수준별 비교

| 정밀도             | 비트 수   | 메모리 (70B 모델) | 정확도 영향    | 사용 사례             |
| --------------- | ------ | ------------ | --------- | ----------------- |
| **FP32**        | 32-bit | \~280GB      | 기준 (100%) | 학습 시 사용           |
| **FP16/BF16**   | 16-bit | \~140GB      | \~99.9%   | 표준 추론             |
| **INT8**        | 8-bit  | \~70GB       | \~99.5%   | 비용 효율 추론          |
| **INT4 (GPTQ)** | 4-bit  | \~35GB       | \~98%     | 단일 GPU 추론         |
| **INT4 (AWQ)**  | 4-bit  | \~35GB       | \~98.5%   | GPTQ보다 활성화 기반 최적화 |

### GPTQ vs AWQ

| 기법       | 원리                                        | 장점               | 단점            |
| -------- | ----------------------------------------- | ---------------- | ------------- |
| **GPTQ** | 레이어별 최적 양자화 계수 계산 (Hessian 기반)            | 높은 압축률, 빠른 추론    | 양자화 시간이 오래 걸림 |
| **AWQ**  | **활성화(Activation) 분포** 를 고려하여 중요한 가중치를 보호 | GPTQ보다 정확도 유지 우수 | 약간 더 복잡한 구현   |

> **참고**
> **실무 가이드**: 대부분의 프로덕션 환경에서는 **INT8** 양자화가 정확도-비용 균형의 최적점입니다. INT4는 데모, PoC, 또는 비용이 극도로 제한된 환경에서 사용합니다. Databricks Model Serving은 내부적으로 양자화 최적화를 자동 적용하므로, 직접 양자화할 필요 없이 Foundation Model API를 사용하면 됩니다.

***

[\< 이전: LLM 학습 과정](training) | [다음: Hallucination >](hallucination)
