Post

Stanford CME295: Lecture 3 - LLMs & 추론 최적화

Stanford CME295: Lecture 3 - LLMs & 추론 최적화

강의 출처: Stanford CME295 - Transformers & LLMs (Autumn 2025)

  • 강사: Afshine & Shervine Amidi
  • 원본 영상: YouTube

강의 개요

이번 강의에서는 Large Language Model(LLM)의 정의와 구조, 토큰 생성 방법, 프롬프팅 기법, 그리고 추론 최적화 기술들을 다룹니다.


Part 1: Large Language Model (LLM)

1. LLM의 정의

Language Model이란? 토큰 시퀀스에 확률을 할당하는 모델

“Large”의 의미:

측면규모설명
모델 크기수십억 ~ 수천억 파라미터최소 1B (10억) 이상
훈련 데이터수천억 ~ 수조 토큰최대 수십 조 토큰
컴퓨팅대규모 GPU 클러스터 필요최근에는 소비자급 GPU 최적화 진행 중

중요: 현재 LLM 정의에서 BERT는 LLM이 아님 (텍스트를 생성하지 않으므로)

2. LLM의 기본 구조

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌─────────────────────────────┐
│       Decoder Only          │
│                             │
│ ┌───────────────────────┐   │
│ │ Masked Self-Attention │   │
│ └───────────┬───────────┘   │
│ ┌───────────▼───────────┐   │
│ │     Add & Norm        │   │
│ └───────────┬───────────┘   │
│ ┌───────────▼───────────┐   │
│ │  Feed-Forward Net     │   │
│ └───────────┬───────────┘   │
│ ┌───────────▼───────────┐   │
│ │     Add & Norm        │   │
│ └───────────────────────┘   │
│                             │
│          × N layers         │
└─────────────────────────────┘

대표적인 LLM들: GPT (OpenAI), LLaMA (Meta), Gemma (Google), DeepSeek, Mistral, Qwen


Part 2: Mixture of Experts (MoE)

1. MoE의 동기

문제 제기: 수천억 파라미터 모델에서 모든 파라미터가 항상 필요한가?

비유: 방에 수학자, 물리학자, 화학자, 역사학자가 있을 때, 수학 문제는 수학자에게만 물으면 됨

핵심 아이디어: 입력에 따라 일부 파라미터만 활성화

2. MoE의 구조

\[\hat{y} = \sum_{i=1}^{n} G(x)_i \cdot E_i(x)\]
  • $n$: Expert 수
  • $E_i$: i번째 Expert (네트워크)
  • $G$: Gate/Router (어떤 Expert를 사용할지 결정)

3. Dense MoE vs Sparse MoE

유형특징활성화 방식
Dense MoE모든 Expert 사용가중치로 중요도 조절 (0~1)
Sparse MoETop-K Expert만 사용K=1 또는 K=2가 일반적

Dense MoE vs Sparse MoE 개념

Dense MoE

모든 Expert를 사용하되, 가중치(0~1)로 중요도를 조절합니다. 즉, 모든 전문가의 의견을 다 듣되, 각 전문가에게 서로 다른 비중을 두어 종합하는 방식입니다.

\[\hat{y} = \sum_{i=1}^{n} G(x)_i \cdot E_i(x)\]

Sparse MoE

Top-K개의 Expert만 선택해서 사용합니다. 일반적으로 K=1 또는 K=2를 사용합니다. 가장 적합한 전문가 1~2명에게만 물어보는 방식이죠.

\[\hat{y} = \sum_{i \in \text{TopK}} G(x)_i \cdot E_i(x)\]

핵심 차이점:

구분Dense MoESparse MoE
활성화모든 ExpertTop-K Expert만
연산량(FLOPs)높음낮음
효율성낮음높음

Sparse MoE 공식:

\[\hat{y} = \sum_{i \in \text{TopK}} G(x)_i \cdot E_i(x)\]

4. Expert의 위치: FFN

왜 FFN에 MoE를 적용하는가?

레이어파라미터 규모이유
FFN$O(d_{model} \times d_{ff} \times 2)$$d_{ff}$가 매우 큼 (수천~만)
Attention$O(d_{model} \times d_k \times 4)$$d_k$가 상대적으로 작음 (수백)

5. Routing Collapse 문제

문제: 일부 Expert만 계속 선택되고 나머지는 사용되지 않음

해결책: Load Balancing Loss

\[L_{aux} = \alpha \cdot n \cdot \sum_{i=1}^{n} f_i \cdot P_i\]
  • $f_i$: Expert i로 라우팅된 토큰 비율
  • $P_i$: Expert i의 평균 라우팅 확률

MoE의 장점:

  • 모델 용량(capacity) 증가 가능
  • Active 파라미터는 유지하면서 전체 파라미터 확장
  • Sample Efficient (같은 성능을 더 빠르게 달성)

Part 3: 토큰 생성 (Token Generation)

1. 출력 확률 분포

1
2
3
4
5
6
7
Input: "A cute teddy bear is"
Output Distribution:
  - "reading":  0.15
  - "fluffy":   0.12
  - "sleeping": 0.10
  - "airplane": 0.001
  ...

2. Greedy Decoding

가장 높은 확률의 토큰 선택

문제점: 다양성 부족, 지역 최적(Local Optimal)

K개의 가장 유망한 경로 유지

시퀀스 확률 계산:

\[\log P(\text{sequence}) = \sum_{t} \log P(w_t | w_1, ..., w_{t-1})\]

사용 사례: 기계 번역처럼 정확성이 중요한 경우

4. Sampling 방법 (가장 많이 사용)

4.1 Top-K Sampling

상위 K개 토큰에서만 샘플링

4.2 Top-P Sampling (Nucleus Sampling)

누적 확률이 P를 초과할 때까지의 토큰에서 샘플링

5. Temperature

\[P(w_i) = \frac{\exp(x_i / T)}{\sum_j \exp(x_j / T)}\]
Temperature분포 형태출력 특성
T → 0Spiky (뾰족)가장 높은 확률 토큰만 선택, 결정론적
T = 1원래 분포모델이 학습한 분포 그대로
T → ∞Uniform (균등)모든 토큰 동등한 확률, 매우 창의적/무작위

수학적 증명:

$T \to 0$ 일 때, $k$가 최대 logit의 인덱스라면:

\[P(w_k) = \frac{1}{1 + \sum_{j \neq k} \exp((x_j - x_k)/T)} \to 1\]

logit이란?

Logit이란?

Logit은 신경망의 마지막 층에서 softmax를 적용하기 전의 원시(raw) 출력값입니다.

LLM에서의 흐름:

1
입력 텍스트 → Decoder 층들 → 마지막 Linear 층 → [logits] → Softmax → [확률 분포]

예시:

1
2
3
4
5
6
7
8
9
10
11
입력: "A cute teddy bear is"

Logits (원시 점수):        Softmax 적용 후 (확률):

| "fluffy"   |  3.2 |     | "fluffy"   | 0.15  |
| "sleeping" |  2.8 | →   | "sleeping" | 0.10  |
| "cute"     |  2.5 |     | "cute"     | 0.08  |
| "airplane" | -1.0 |     | "airplane" | 0.001 |
| ...        |  ... |     | ...        | ...   |

     (합 ≠ 1)                  (합 = 1)

핵심 특징:

Logit확률 (Softmax 후)
범위 제한 없음 (-∞ ~ +∞)0~1 사이
합이 1이 아님합이 정확히 1
상대적 점수실제 확률

Temperature는 바로 이 logit을 softmax에 넣기 전에 나눠주는 값입니다:

\[P(w_i) = \frac{\exp(x_i / T)}{\sum_j \exp(x_j / T)}\]

여기서 $x_i$가 logit입니다.

Temperature 증명 상세

Temperature 수학적 증명 설명

1. 왜 $x_j - x_k < 0$ 인가?

핵심은 $k$의 정의에 있습니다.

“$k$가 최대 logit의 인덱스”

즉, $x_k$는 모든 logit 중에서 가장 큰 값입니다.

예시:

1
2
3
logits = [2.0, 5.0, 1.0, 3.0]
                ↑
           x_k = 5.0 (최댓값, k=1)

따라서 $j \neq k$인 다른 모든 logit은 $x_k$보다 작습니다:

  • $x_0 - x_k = 2.0 - 5.0 = -3.0 < 0$
  • $x_2 - x_k = 1.0 - 5.0 = -4.0 < 0$
  • $x_3 - x_k = 3.0 - 5.0 = -2.0 < 0$

최댓값에서 빼니까 항상 음수가 됩니다.


2. 왜 $P(w_k) \to 1$ 인가?

수식을 다시 보면:

\[P(w_k) = \frac{1}{1 + \sum_{j \neq k} \exp\left(\frac{x_j - x_k}{T}\right)}\]

단계별로 따라가 봅시다:

단계내용
$x_j - x_k < 0$ (음수)
$T \to 0^+$ (0에 가까운 양수)
$\frac{\text{음수}}{\text{매우 작은 양수}} = -\infty$
$\exp(-\infty) = 0$

예시로 계산:

1
2
3
4
5
x_j - x_k = -3.0 이라면:

T = 1.0  →  (-3)/1 = -3      →  exp(-3) ≈ 0.05
T = 0.1  →  (-3)/0.1 = -30   →  exp(-30) ≈ 0.000000000001
T = 0.01 →  (-3)/0.01 = -300 → exp(-300) ≈ 0

결론:

\[\sum_{j \neq k} \exp\left(\frac{x_j - x_k}{T}\right) \to 0\]

따라서:

\[P(w_k) = \frac{1}{1 + 0} = 1\]

직관적 해석

Temperature가 0에 가까워지면, softmax가 “winner-take-all” 방식이 됩니다. 가장 높은 logit을 가진 토큰이 확률 1을 독차지하고, 나머지는 모두 0이 됩니다. 그래서 결정론적(deterministic)이라고 하는 것입니다.

6. Guided Decoding (구조화된 출력)

JSON 등 특정 포맷 강제. 생성 중 유효하지 않은 토큰 필터링.

관련 기술: Finite State Machine (FSM), Context-Free Grammar


Part 4: 프롬프팅 (Prompting)

1. Context Length (문맥 길이)

모델이 한 번에 처리할 수 있는 토큰 수. 현대 LLM은 수만 ~ 수백만 토큰.

Context Rot 현상: 문맥 길이가 길어질수록 정보 검색 능력 저하. “Needle in a Haystack” 테스트로 측정.

2. 프롬프트 구조

구성 요소설명예시
Context상황 설정“You are ChatGPT, 날짜는 2024년 10월 10일…”
Instructions수행할 작업“다음 텍스트를 요약해주세요”
Input실제 입력 데이터요약할 문서 내용
Constraints제약 조건“JSON 형식으로 출력”, “안전 지침”

3. In-Context Learning (ICL)

가중치 업데이트 없이 프롬프트만으로 학습

Zero-Shot: 예시 없이 지시만 제공

Few-Shot: 몇 가지 예시를 함께 제공

측면Zero-ShotFew-Shot
일반적 성능낮음높음
토큰 사용량적음많음
준비 비용낮음높음 (예시 수집 필요)

4. Chain of Thought (CoT)

답변 전에 추론 과정을 출력하도록 유도

1
2
3
4
5
6
7
8
9
일반 방식:
  Q: 테디베어는 몇 살인가요?
  A: 5살

CoT 방식:
  Q: 테디베어는 몇 살인가요?
  A: 테디베어는 2019년에 만들어졌고, 현재는 2024년입니다.
     따라서 2024 - 2019 = 5살입니다.
     답: 5살

장점: 성능 향상, 디버깅 용이, 해석 가능성

단점: 더 많은 토큰 생성 → 추론 시간/비용 증가

5. Self-Consistency

  1. 같은 질문에 대해 여러 번 샘플링
  2. 각 답변에서 최종 답 추출
  3. 다수결 투표로 최종 답 결정

병렬 처리 가능, 산술/수학 문제에서 효과적


Part 5: 추론 최적화 (Inference Optimization)

최적화 기법 분류

분류특징목표
Exact (정확)동일한 결과 보장중복 제거, 메모리 관리
Approximate (근사)약간의 정확도 손실 허용아키텍처 변경, 토큰 예측 가속

Exact 기법

1. KV Cache

이전 토큰의 Key, Value를 캐싱하여 재사용

1
2
3
4
5
토큰 생성 시퀀스: "A" → "cute" → "teddy" → "bear" → "is"

"is" 생성 시:
  - Query: "is"의 Q만 새로 계산
  - Key/Value: "A", "cute", "teddy", "bear"는 캐시에서 재사용

2. Group Query Attention (GQA)

K와 V를 그룹으로 공유하여 KV Cache 절감

3. PagedAttention (vLLM)

문제: KV Cache의 메모리 낭비 (Internal Fragmentation)

1
2
3
4
5
6
7
8
9
기존 방식:
  Request 1: [████████████░░░░░░░░] (실제 12, 예약 20)
  Request 2: [██████░░░░░░░░░░░░░░] (실제 6, 예약 20)

PagedAttention:
  고정 크기 블록(예: 16 토큰)으로 분할
  Request 1: [Block A][Block B][Block C]
  Request 2: [Block D][Block E]
  → 필요한 만큼만 블록 할당

Approximate 기법

1. Multi-Latent Attention (MLA)

출처: DeepSeek 논문

토큰 표현을 저차원 공간으로 압축, K와 V가 압축 표현을 공유

1
2
기존: Token → [K₁, K₂, ..., Kₕ], [V₁, V₂, ..., Vₕ] (H × 2개 저장)
MLA:  Token → [Compressed] → K, V 복원 (1개만 저장)

2. Speculative Decoding

작은 모델로 초안 생성 → 큰 모델로 검증

1
2
3
4
Step 1: Draft Model (작은 LLM)로 K개 토큰 빠르게 생성
Step 2: Target Model (큰 LLM)에 모든 토큰을 한 번에 입력 → 확률 분포 계산
Step 3: 검증 (Acceptance/Rejection)
Step 4: 첫 거절 지점부터 재생성

왜 효과적인가?

  • 추론은 Memory Bound (메모리가 병목)
  • 한 번에 여러 토큰 처리해도 비용 비슷

3. Multi-Token Prediction

Draft Model을 별도로 두지 않고 같은 모델 내에 통합

1
2
3
Decoder Output → Head 1 (Main) → 다음 토큰 1
              → Head 2 (Draft) → 다음 토큰 2
              → Head 3 (Draft) → 다음 토큰 3

핵심 요약

토큰 생성 전략

방법특징사용 사례
Greedy최고 확률 선택거의 사용 안 함
Beam SearchK개 경로 유지기계 번역
Sampling + Top-K/P확률적 샘플링대부분의 LLM

Temperature

\[P(w_i) = \frac{\exp(x_i / T)}{\sum_j \exp(x_j / T)}\]

추론 최적화

기법유형핵심
KV CacheExactK, V 재사용
GQAExactK, V 공유
PagedAttentionExact블록 단위 메모리 관리
MLAApprox저차원 압축 공유
Speculative DecodingApprox작은 모델로 초안
Multi-Token PredictionApprox여러 토큰 동시 예측

용어 정리

용어의미
LLMLarge Language Model
MoEMixture of Experts
FLOPsFloating Point Operations
KV CacheKey-Value Cache
GQAGroup Query Attention
MLAMulti-Latent Attention
CoTChain of Thought
ICLIn-Context Learning

추천 자료

  1. “Switch Transformers” (2022) - MoE 스케일링
  2. “vLLM: PagedAttention” (2023) - 효율적 추론
  3. “Chain-of-Thought Prompting” (2022) - CoT 원본 논문
  4. “Self-Consistency” (2023) - 다수결 추론
  5. “Speculative Decoding” (2023) - 가속 추론
  6. “DeepSeek-V2” - Multi-Latent Attention

*Stanford CME295: Transformers & LLMsAutumn 2025Lecture 3 정리*
This post is licensed under CC BY 4.0 by the author.