TL;DR
이 글은 RNN·LSTM의 직렬 처리 한계를 출발점으로 Transformer의 Attention, Residual connection, Pre-Norm, Multi Head Attention, RoPE, KV cache가 LLM의 학습과 추론을 어떻게 구성하는지 수식과 구현으로 연결합니다. 이어 Qwen2.5-Coder-7B-Instruct의 28개 Layer, Hidden size 3584, 4개 KV head 구조를 순수 NumPy와 Rust로 읽고 실행하는 과정을 제시하며, GQA가 KV 캐시를 줄이고 SwiGLU가 FFN을 구성하는 방식을 코드 수준에서 다룹니다. 후반부에는 MoE, YARN, MLA, Sliding window attention, Multi Token Prediction, QK normalization과 Logit softcapping을 통해 정확도·메모리·문맥 길이·추론 비용을 조정하는 현대적 변형을 이어 붙입니다. 핵심은 Transformer의 병렬 학습 능력과 Attention 기반 문맥 선택이 여전히 주요 LLM의 중심이며, 실제 서비스에서는 KV cache와 행렬 연산 효율이 성능을 좌우한다는 점입니다.
섹션별 상세
용어 해설
- 어텐션 메커니즘(Attention Mechanism)
- — 각 토큰이 Query로 다른 토큰의 Key와 관련도를 계산하고, Softmax로 얻은 가중치에 따라 Value를 합산하는 구조입니다. 토큰마다 필요한 문맥을 동적으로 선택하면서도 전체 시퀀스의 계산을 병렬화할 수 있어 Transformer와 현대 LLM의 핵심 연산으로 쓰입니다.
- KV 캐시(KV Cache)
- — Autoregressive decoding에서 이미 처리한 토큰의 Key와 Value를 저장해 다음 토큰 생성 때 재사용하는 메모리 구조입니다. 과거 토큰의 Query는 다시 필요하지 않으므로 K와 V만 보관하며, 반복적인 행렬 연산을 줄이는 대신 긴 문맥에서는 캐시 메모리 사용량이 병목이 됩니다.
- 회전 위치 임베딩(Rotary Position Embedding (RoPE))
- — 토큰의 위치 정보를 벡터 쌍의 회전으로 인코딩하는 방식입니다. Query와 Key에 위치별 회전을 적용하면 두 벡터의 내적에 절대 위치가 상대적 거리 차이로 반영됩니다. 여러 회전 주파수를 사용해 가까운 토큰과 먼 토큰의 관계를 함께 표현합니다.
- Grouped Query Attention(Grouped Query Attention (GQA))
- — 여러 Query head가 소수의 Key·Value head를 공유하는 Attention 변형입니다. 각 Query head의 질의 표현은 유지하면서 KV 캐시의 저장 단위를 줄여 추론 메모리를 절약합니다. 글에서는 Multi Query Attention보다 정확도 저하가 작고 KV head와 Query head의 비율에 따라 50%에서 90%까지 메모리를 줄일 수 있다고 설명합니다.
- Mixture of Experts(Mixture of Experts (MoE))
- — 하나의 큰 FFN을 여러 개의 작은 Expert로 나누고, Gating network가 토큰마다 일부 Expert만 선택하는 구조입니다. 선택된 Expert의 출력을 가중합하므로 전체 파라미터를 늘리면서 토큰당 계산량은 제한할 수 있습니다. 특정 Expert로 라우팅이 쏠리는 문제를 완화하려면 학습 중 보조 손실이 필요합니다.
- Multi-head Latent Attention(Multi-head Latent Attention (MLA))
- — Attention head마다 큰 K와 V를 저장하는 대신 각 레이어에서 저차원 KV 표현 하나를 캐시에 보관하는 방식입니다. Query에 head별 Up-projection을 흡수해 저차원 공간에서 Attention score를 계산하고, Value 변환도 같은 방식으로 재구성합니다. 글에서는 GQA보다 정확도와 메모리 효율이 모두 높으면서 속도는 유지된다는 경험적 결과를 전합니다.
기술
- Python
- Rust
- numpy
- rayon
- Qwen2.5-Coder-7B-Instruct
- HuggingFace Hub
- transformers
- safetensors
활용 사례
- LLM architecture 학습
- Qwen2.5-Coder-7B-Instruct 로컬 추론
- NumPy 기반 LLM 구현
- Rust 기반 병렬 추론 구현
- KV cache를 활용한 Autoregressive decoding
- 단일 GPU용 Inference engine 개발
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
