LLM 내부 구조에 관한 15부작 무료 시리즈를 작성했습니다 — 실제 수학, 실제 텐서 형상(Tensor Shapes), 실제 하드웨어 제약
요약
Gemma 4 12B를 사례로 토큰화부터 추론, 학습, 양자화까지 LLM의 전체 스택을 심층 분석하는 15부작 시리즈를 소개합니다. 수학적 원리와 실제 텐서 형상, 하드웨어 제약 사항을 다루며 모델의 내부 동작을 상세히 설명합니다.
핵심 포인트
- Gemma 4 12B 기반의 토큰화, 어텐션, 메모리 수학 등 LLM 전 과정 분석
- MHA, MQA, GQA, MLA 등 어텐션 메커니즘의 진화와 KV 캐시 원리
- LoRA, QLoRA, DPO 등 파인튜닝 기법의 수학적 작동 방식
- 양자화 포맷(GPTQ, AWQ, GGUF) 및 CUDA 커널의 메모리 병목 현상
오픈 소스 모델을 실행하면서 내부에서 실제로 어떤 일이 일어나고 있는지 이해하고 싶다면 — 저는 지난 몇 달 동안 토큰화(Tokenization)부터 프로덕션 서빙(Production Serving)까지 전체 스택을 다루는 15부작 시리즈를 작성하는 데 시간을 보냈습니다.
대부분의 기사는 실행 예시로서 Gemma 4 12B를 기반으로 합니다.
전체 시리즈: Generative AI in Depth
각 기사가 무엇을 다루는지, 그리고 왜 시간을 들일 가치가 있다고 생각하는지 소개합니다:
- 심층 토큰화 (Tokenisation in Depth): BPE, SentencePiece, 어휘 사전(Vocabulary) 설계. 왜 "토크나이저 불일치(Tokenizer mismatch)"가 파인튜닝(Fine-tunes)을 조용히 망가뜨리는지. 왜 Gemma 4의 262,144개 토큰 어휘 사전이 모델이 로드되기도 전에 약 2 GB의 VRAM을 소모하는지.
- LLM 추론 내부: 텍스트에서 토큰까지의 모든 계산: 전체 Gemma 4 12B 순전파(Forward pass) 과정을 통해 모든 텐서 형상(Tensor shape)을 추적합니다.
- 어텐션 메커니즘(Attention Mechanisms)과 KV 캐시(KV Cache): 기본 원리부터 MHA → MQA → GQA → MLA까지. DeepSeek의 Multi-Latent Attention이 어떻게 K/V를 저차원 잠재 공간(Low-rank latent space)으로 압축하는지 — 그리고 이것이 vLLM의 커널(Kernel) 선택에 무엇을 의미하는지.
- 메모리 수학: GPU에 무엇이 들어갈 수 있는가?: 모델 가중치(Weights) + KV 캐시 + 활성화(Activations) + 오버헤드(Overhead)에 대한 산술 계산. 모델을 다운로드하기 전에 모델이 들어갈 수 있는지 계산하는 방법. 왜 128K 컨텍스트에서의 KV 캐시가 모델 가중치 자체를 초과할 수 있는지.
- 학습(Training) vs 추론(Inference): 왜 동일한 모델의 학습 비용이 10배 더 비싼가: 그래디언트(Gradients), 옵티마이저 상태(Optimizer states), 활성화 체크포인팅(Activation checkpointing). 왜 Gemma 4 12B는 학습에는 약 200 GB가 필요하지만 실행에는 약 24 GB가 필요한지. Adam vs SGD vs 8-bit Adam의 구체적인 메모리 배수.
- 파인튜닝(Fine-Tuning) 및 적응(Adaptation): LoRA, QLoRA, RLHF, 그리고 DPO 심층 분석: LoRA가 수학적으로 어떻게 작동하는지 — 왜 12B 모델에서 랭크-16(Rank-16) 어댑터가 파라미터 수의 약 1%만 추가하는지. QLoRA의 이중 양자화(Double-quantization) 트릭. 왜 DPO는 보상 모델(Reward model) 없이 선호 쌍(Preference pairs)으로 직접 학습하는지.
- 지식 증류(Knowledge Distillation): 체급을 뛰어넘는 작은 모델 만들기: 오프라인(Offline) vs 온라인(Online) 증류. 왜 추론 흔적(Reasoning traces, Chain-of-thought distillation)이 로짓 매칭(Logit matching)만 하는 것보다 훨씬 더 잘 전달되는지.
학습에 진입하기 전 오답 추적(wrong-answer traces)을 필터링하는 실행 게이팅(execution-gating) 기술.
8. 양자화 입문 (Quantization Primer): 포맷, 아키텍처 민감도, 그리고 Gemma 4 사례 연구. GPTQ, AWQ, GGUF, FP8 및 KV 캐시 양자화 — Bartowski의 Gemma 4 GGUF 양자화 모델에서 추출한 실제 파일 크기 포함. 비트(bit)당 품질 손실을 계산하는 공식.
9. CUDA 커널 (CUDA Kernels) 및 FlashAttention: 메모리 대역폭(Memory Bandwidth)이 병목인 이유. 루프라인 모델 (roofline model), 연산 강도 (arithmetic intensity), 그리고 디코딩(decode)이 왜 메모리 제한적(memory-bound)인지 (B=1일 때 AI ≈ 1 FLOPs/byte). FlashAttention의 타일링(tiling)이 어떻게 HBM에서 $O(T^2)$ 어텐션 행렬을 완전히 제거하는지. Flash-Decoding — 왜 표준 FA2는 디코딩에 1개의 SM을 사용하지만 Flash-Decoding은 32개를 사용할 수 있는지. CUDA 그래프 캡처 (CUDA Graph Capture) 및 이것이 CPU 실행 오버헤드를 줄이는 이유.
10. 추측적 디코딩 (Speculative Decoding): 단계당 여러 토큰 생성하기. 초안 작성 후 검증 (Draft-then-verify). 왜 이것이 낮은 배치(low-batch) 추론 속도는 높이지만 높은 배치 크기에서는 처리량(throughput)을 감소시키는지 — 이 직관에 반하는 현상 뒤에 숨겨진 수학적 원리. EAGLE vs n-gram vs 초안 모델(draft model) vs DFlash 및 MLP 트레이드오프.
11. 전문가 혼합 (Mixture of Experts, MoE): 라우팅 (Routing), 희소 활성화 (Sparse Activation), 그리고 MoE가 대규모 모델에서 지배적인 이유. DeepSeek V3의 671B 모델이 토큰당 37B 파라미터만 활성화하는 방식. 라우터 붕괴 (Router collapse) 및 부하 분산 (load balancing). 왜 MoE 서빙에는 전문가 병렬성 (expert parallelism)이 필수적이며 텐서 병렬성 (tensor parallelism)과는 어떻게 다른지.
12. 컨텍스트 길이 확장 (Context Length Scaling): RoPE, YaRN, Ring Attention, 그리고 긴 컨텍스트의 비용. 왜 RoPE가 학습 길이를 넘어 외삽(extrapolate)할 수 있는지 (때때로). YaRN의 보간 (interpolation) 전략. 1M 컨텍스트의 메모리 및 연산 비용 — 그리고 왜 대부분의 "1M 컨텍스트" 모델들이 실제로는 그 길이에서 사용 불가능한지.
13. LLM 서빙 심층 분석: 배치 (Batching), 스케줄링 (Scheduling), 그리고 병렬성 (Parallelism). PagedAttention 내부 구조. 연속 배치 (Continuous batching) vs 정적 배치 (static batching). 접두사 캐싱 (Prefix caching) — 왜 이것이 에이전트 워크로드 (동일한 시스템 프롬프트, 다른 사용자 메시지) 비용을 극적으로 낮추는지. 청크형 프리필 (Chunked prefill) 및 이것이 헤드 오브 라인 블로킹 (head-of-line blocking)을 방지하는 이유.
14.
LLM 평가 심층 분석: 벤치마크 (Benchmarks), 오염 (Contamination), 그리고 실제로 중요한 것. 2026년에 MMLU 점수가 거의 의미 없는 이유. 훈련 데이터 오염 (Training data contamination) 및 이를 감지하는 방법. 실제 세계의 성능을 실제로 예측하는 벤치마크 — 그리고 특정 사용 사례에서는 왜 분위기 기반 평가 (vibes-based evals)가 리더보드보다 더 신뢰할 수 있는지.
15. 어떤 LLM 서빙 프레임워크 (Serving Framework)를 사용해야 하는가? llama.cpp, Ollama, vLLM, SGLang, TensorRT-LLM, TGI, LMDeploy, 그리고 mlx-lm — 처리량 (throughput), 지연 시간 (latency), 사용 편의성, 그리고 하드웨어 지원 측면에서의 비교. 다음 상황별 의사 결정 트리: 로컬 단일 사용자, 프로덕션 다중 사용자, 엣지/임베디드 (edge/embedded), 그리고 Apple Silicon.
또한 vLLM의 내부 구조를 더 깊게 파고드는 동반 vLLM 심층 분석 시리즈 (3부작)도 있습니다 — PagedAttention, 분리된 서빙 (disaggregated serving), 5가지 모든 병렬화 전략 (parallelism strategies), 그리고 60개 이상의 지원되는 아키텍처 (architectures).
모든 내용은 무료이며, 이메일 등록이나 유료 결제(paywall)가 필요하지 않습니다. 댓글로 질문해 주시면 기쁘게 답변해 드리겠습니다.
/u/Ok_Bug_2845 가 r/LocalLLaMA 에 게시함
[link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기