Key Takeaways
- ๋ก๊น /๋๋ฒ๊น ๋นํ์ฑํ (์ฌ์): ์ฝ 10% ์๋ ํฅ์.
- Q4 ์์ํ ์ฌ์ฉ (์ฌ์): ๋์ผํ ์๋, ๋ ์ ์ VRAM.
- ๋ฐฐ์น ํฌ๊ธฐ ์ต์ ํ (์ค๊ฐ): ๋ฐฐ์น ์ฒ๋ฆฌ ์ 2~3๋ฐฐ ์๋ ํฅ์.
- Ollama ๋์ vLLM ์ฌ์ฉ (์ด๋ ค์): ๋์ ์์ฒญ ์ 2~5๋ฐฐ ์๋ ํฅ์.
- GPU ๋ฉ๋ชจ๋ฆฌ ํ์ฉ๋ฅ 90% ์ด์ (์ค๊ฐ): 15~20% ์๋ ํฅ์.
- ๋ชจ๋ ๊ธฐ๋ฒ ์กฐํฉ ์: ์ด ์ฝ 2~3๋ฐฐ ์๋ ํฅ์.
GPU ๋ฉ๋ชจ๋ฆฌ ํ์ฉ๋ฅ ์ด ์๋์ ๋ฏธ์น๋ ์ํฅ
๋๋ถ๋ถ์ ๋๊ตฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก GPU VRAM์ 70~80%๋ง ์ฌ์ฉํ์ฌ ๋๋จธ์ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ํด ์ํ๋ก ๋ฐฉ์นํฉ๋๋ค. 90~95%๋ก ๋๋ฆฌ๋ฉด ์์ง์ด ๋ ๋ง์ KV ์บ์๋ฅผ ๋ฏธ๋ฆฌ ํ ๋นํ ์ ์์ด 15~20% ์๋ ํฅ์์ด ๊ฐ๋ฅํฉ๋๋ค:
# vLLM: increase GPU memory utilization
vllm serve meta-llama/Llama-2-7b-hf \
--gpu-memory-utilization 0.95
# Ollama: environment variable
export OLLAMA_GPU_THRESHOLD=0.95 # Use 95% of GPU
ollama run llama3.2:3b
# LM Studio: Settings โ GPU acceleration slider (move to 100%)์ฒ๋ฆฌ๋์ ๊ทน๋ํํ๋ ๋ฐฐ์น ํฌ๊ธฐ
๋ฐฐ์น ์ฒ๋ฆฌ(๋ณต์ ํ๋กฌํํธ)์ ๊ฒฝ์ฐ, ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ 1์์ 32๋ก ๋๋ฆฌ๋ฉด ์ฒ๋ฆฌ๋์ด 2~4๋ฐฐ ํฅ์๋ฉ๋๋ค.
๋จ์ผ ์์ฒญ = ์ ํ๋ ํ์ดํ๋ผ์ธ ํ์ฉ. 32๊ฐ ์์ฒญ ๋ฐฐ์น = 2~4๋ฐฐ ์ฒ๋ฆฌ๋.
ํธ๋ ์ด๋์คํ: ๊ฐ๋ณ ์์ฒญ๋น ์ง์ฐ ์๊ฐ์ด ๋์์ง๋๋ค(๋ฐฐ์น ์๋ฃ๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํจ).
| Batch Size | Throughput | Latency/Request | Use Case |
|---|---|---|---|
| 1 (๋จ์ผ) | 50 tokens/sec | ์ต์ | ์ค์๊ฐ ์ฑํ |
| 8 | 120 tokens/sec | ํ์ฉ ๊ฐ๋ฅ | ๊ฒฝ๋ ๋์์ฑ |
| 32 | 200 tokens/sec | ๋์ | ๋ฐฐ์น API |
| 64+ | 250+ tokens/sec | ๋งค์ฐ ๋์ | ์คํ๋ผ์ธ ๋ฐฐ์น |
๊ฐ์ฅ ๋น ๋ฅธ ์ถ๋ก ์์ง: vLLM vs Ollama vs llama.cpp
vLLM: ๋์ ์์ฒญ ์ฒ๋ฆฌ ์ Ollama๋ณด๋ค 5~10๋ฐฐ ๋น ๋ฆ โ ๋ค์์ ์ฌ์ฉ์์๊ฒ ์๋น์คํ๋ ํ๋ก๋์ API์ ์ ํฉ.
llama.cpp: ์๋น์์ฉ ํ๋์จ์ด์์ ๋จ์ผ ์์ฒญ ์ฒ๋ฆฌ๊ฐ ๊ฐ์ฅ ๋น ๋ฆ โ ๊ฐ์ธ ๋ก์ปฌ ํ๊ฒฝ์ ์ ํฉ.
Ollama: ๋จ์ผ ์ฌ์ฉ์ ํ๊ฒฝ์์ ์ต๊ณ ์ ๊ฐ๋ฐ์ ๊ฒฝํ ์ ๊ณต; ๋จ์ผ ์์ฒญ์์ llama.cpp์ ๋น์ทํ ์ฑ๋ฅ.
Text-Generation-WebUI: ๊ฐ์ฅ ๋๋ฆฌ์ง๋ง ๊ธฐ๋ฅ์ด ๊ฐ์ฅ ๋ง์ โ ์คํ์ฉ์๋ง ์ ํฉํ๋ฉฐ ํ๋ก๋์ ์๋ ๋ถ์ ํฉ.
์์ํ๊ฐ ์ค์ ๋ก ์ถ๋ก ์๋๋ฅผ ๋์ด๋๊ฐ?
์ต์ GPU(RTX 40 ์๋ฆฌ์ฆ)์์ Q4์ Q5๋ FP16๊ณผ ๋์ผํ ์๋๋ก ์คํ๋ฉ๋๋ค โ ์๋๊ฐ ์๋ VRAM ์ ๊ฐ์ ์ํด ์์ํํ์ญ์์ค.
์์ํ์ ๊ฐ์ ์ ์ธ ์๋ ์ด์ :
- ๋ ์์ ๋ชจ๋ธ ํ์ผ = ๋์คํฌ์์ ๋ ๋น ๋ฅธ ์ฝ๋ ์คํํธ ๋ก๋ฉ
- ์ค์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ = ๊ตฌํ ๋๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ํ๋ ํ๋์จ์ด์์ ์ฝ 10~15% ๋ ๋น ๋ฆ
์์ํ๋ ์ฃผ๋ก VRAM ์ ๊ฐ์ ์ํ ๊ฒ์ด๋ฉฐ ์์ ํ ํฐ ์ฒ๋ฆฌ๋ ํฅ์์ ์ํ ๊ฒ์ด ์๋๋๋ค.
ํ์ค์ ์ผ๋ก ๊ธฐ๋ํ ์ ์๋ ์๋ ํฅ์
์์: RTX 4090์์ 7B ๋ชจ๋ธ ์ต์ ํ โ ๋จ๊ณ๋ณ:
| Change | Speed | Cumulative Gain |
|---|---|---|
| ๊ธฐ๋ณธ Ollama (๊ธฐ์ค) | 120 tok/sec | โ |
| ๋๋ฒ๊ทธ ๋ก๊น ๋นํ์ฑํ | 132 tok/sec | +10% |
| GPU ๋ฉ๋ชจ๋ฆฌ โ 95% | 150 tok/sec | +25% ํฉ๊ณ |
| vLLM์ผ๋ก ์ ํ (๋ฐฐ์น) | 300 tok/sec (๋ฐฐ์น) | +2.5ร (๋ฐฐ์น) |
| ๋ชจ๋ ์ต์ ํ ์ ์ฉ | 300 tok/sec | +2.5ร ์ฒ๋ฆฌ๋ |
ํํ ์๋ ์ต์ ํ ์ค์
- GPU ๋ฉ๋ชจ๋ฆฌ๋ฅผ 100%๋ก ์ค์ . ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ถฉ๋ ์ํ์ด ์์ต๋๋ค. ์์ ํ ์ต๋๊ฐ์ 90~95%์ ๋๋ค.
- ์๋๋ฅผ ์ํด ๋ฐฐ์น ํฌ๊ธฐ ๋ฎ์ถ๊ธฐ. ๋ฐฐ์น ํฌ๊ธฐ๋ ๋จ์ผ ์์ฒญ ์ง์ฐ ์๊ฐ์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ์ฒ๋ฆฌ๋์๋ง ๋์์ด ๋ฉ๋๋ค.
- ์๋๋ฅผ ์ํด ๊ณผ๋ํ ์์ํ. Q4๋ FP16๊ณผ ์๋๊ฐ ๊ฑฐ์ ๋์ผํฉ๋๋ค. ์๋๊ฐ ์๋ VRAM์ ์ํด ์์ํํ์ญ์์ค.
- ๋ฐฐํฌ ๋์ค ์ถ๋ก ์์ง ๋ณ๊ฒฝ. Ollama โ vLLM โ llama.cpp ์ ํ์ ๋ฒ๊ทธ๋ฅผ ์ ๋ฐํฉ๋๋ค. ํ๋๋ฅผ ์ ํํ์ฌ ์ต์ ํํ์ญ์์ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
๋ก์ปฌ LLM ์ถ๋ก ์๋๋ฅผ ๋์ด๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ๋จ์ผ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
๋์ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ์ํด Ollama์์ vLLM์ผ๋ก ์ ํํ๋ฉด ๊ฐ์ฅ ํฐ ๋จ์ผ ์๋ ํฅ์์ ์ป์ ์ ์์ต๋๋ค โ ๋ฐฐ์น ์ฒ๋ฆฌ ์ 5~10๋ฐฐ ์ฒ๋ฆฌ๋ ํฅ์. ๋จ์ผ ์์ฒญ์ ๊ฒฝ์ฐ, GPU ๋ฉ๋ชจ๋ฆฌ ํ์ฉ๋ฅ ์ 70%์์ 90~95%๋ก ๋์ด๋ฉด 15~20% ์๋ ํฅ์์ด ๊ฐ๋ฅํฉ๋๋ค. ๋๋ฒ๊ทธ ๋ก๊น ๋นํ์ฑํ๋ก ์ถ๊ฐ 10%๋ฅผ ์ป์ ์ ์์ต๋๋ค.
๋ฐฐ์น ์ฒ๋ฆฌ๊ฐ ๋จ์ผ ์์ฒญ ์ง์ฐ ์๊ฐ์ ๊ฐ์ ํฉ๋๊น?
์๋๋๋ค โ ๋ฐฐ์น ํฌ๊ธฐ๋ ์ฒ๋ฆฌ๋(๋ชจ๋ ์์ฒญ์ ๊ฑธ์น ์ด๋น ์ด ํ ํฐ ์)์ ์ํฅ์ ๋ฏธ์น๋ฉฐ ๋จ์ผ ์์ฒญ ์ง์ฐ ์๊ฐ์๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ํ ์์ฒญ์ ์ง์ฐ ์๊ฐ์ ์ค์ด๋ ค๋ฉด GPU ๋ฉ๋ชจ๋ฆฌ ํ์ฉ๋ฅ ์ ์ต์ ํํ๊ณ ๋ ๋น ๋ฅธ ์์ง(vLLM ๋๋ llama.cpp)์ ์ฌ์ฉํ์ญ์์ค. ๋ฐฐ์น ํฌ๊ธฐ๊ฐ ํด์๋ก ์์ฒญ๋น ๋๊ธฐ ์๊ฐ์ด ๋์ด๋ฉ๋๋ค.
vLLM์ Ollama๋ณด๋ค ์ผ๋ง๋ ๋น ๋ฆ ๋๊น?
๋จ์ผ ์์ฒญ์ ๊ฒฝ์ฐ vLLM๊ณผ Ollama๋ ๋น์ทํ ์ฑ๋ฅ์ ๋ณด์ ๋๋ค(RTX 4090์์ 7B ๋ชจ๋ธ๋ก ์ฝ 120~150 tok/sec). ๋์ ์์ฒญ์ ๊ฒฝ์ฐ vLLM์ ์ฐ์ ๋ฐฐ์น ์ฒ๋ฆฌ์ PagedAttention ๋๋ถ์ 5~10๋ฐฐ ๋น ๋ฆ ๋๋ค. ๊ฐ์ธ/๋จ์ผ ์ฌ์ฉ์ ํ๊ฒฝ์๋ Ollama๋ฅผ, ๋ค์์ ์ฌ์ฉ์์๊ฒ ์๋น์คํ๋ API์๋ vLLM์ผ๋ก ์ ํํ์ญ์์ค.
์์ํ๊ฐ ์ถ๋ก ์๋๋ฅผ ๋์ ๋๊น?
์์ํ์ ์ฃผ์ ์ด์ ์ ์๋๊ฐ ์๋ VRAM ์ ๊ฐ์ ๋๋ค. ์ต์ NVIDIA GPU(RTX 40 ์๋ฆฌ์ฆ)์์ Q4์ Q5๋ FP16๊ณผ ๋์ผํ ์๋๋ก ์คํ๋ฉ๋๋ค. ๊ฐ์ ์ ์ธ ์๋ ์ด์ : ๋ ์์ Q4 ๋ชจ๋ธ์ ๋์คํฌ์์ ๋ ๋น ๋ฅด๊ฒ ๋ก๋๋๋ฉฐ ๋์ผํ VRAM ๋ด์์ ์ฝ๊ฐ ๋ ํฐ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
์ต๋ ์๋๋ฅผ ์ํด GPU ๋ฉ๋ชจ๋ฆฌ ํ์ฉ๋ฅ ์ ์ด๋ป๊ฒ ์ค์ ํด์ผ ํฉ๋๊น?
vLLM์์ GPU ๋ฉ๋ชจ๋ฆฌ ํ์ฉ๋ฅ ์ 90~95%๋ก ์ค์ ํ์ญ์์ค(`--gpu-memory-utilization 0.92`). ์ด๋ ๊ฒ ํ๋ฉด ์์ง์ด KV ์บ์๋ฅผ ์ํด ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ํ ๋นํ์ฌ ์ฒ๋ฆฌ๋์ด ํฅ์๋ฉ๋๋ค. 100%๋ ํผํ์ญ์์ค โ ์์ฑ์ด ์์ธก์ ์ด๊ณผํ ๋ OOM ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค. 5~10%์ ์์ ๋ง์ง์ ํ์์ ๋๋ค.
์ฒซ ๋ฒ์งธ ํ๋กฌํํธ ์ดํ ๋ก์ปฌ LLM์ด ์ ๋๋ ค์ง๋๊น?
์ฒซ ๋ฒ์งธ ํ๋กฌํํธ๋ ๋ชจ๋ธ์ VRAM์ ๋ก๋ํฉ๋๋ค(์ฝ๋ ์คํํธ). ์ด ๊ณผ์ ์ด 10~30์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ์ดํ ํ๋กฌํํธ๋ ์ ์๋ ฅ์ผ๋ก ์คํ๋ฉ๋๋ค. ์ธ์ ์ฌ์ด์ ์๋ฒ๋ฅผ ์ฌ์์ํ์ง ๋ง์ญ์์ค. Ollama์ ๊ฒฝ์ฐ ๋นํ์ฑ ํ ๋ชจ๋ธ ์ธ๋ก๋ฉ์ ๋ฐฉ์งํ๋ ค๋ฉด OLLAMA_KEEP_ALIVE=24h๋ฅผ ์ค์ ํ์ญ์์ค.
CPU ์ ์ฉ ์ถ๋ก ์ ์๋ฏธ ์๊ฒ ๊ฐ์ํ ์ ์์ต๋๊น?
์ ํ์ ์ธ ํฅ์์ด ๊ฐ๋ฅํฉ๋๋ค: llama.cpp์์ -t ํ๋๊ทธ๋ก ์ค๋ ๋ ์๋ฅผ ๋ฌผ๋ฆฌ์ ์ฝ์ด ์(๋ ผ๋ฆฌ์ ์ฝ์ด ์ ์๋)๋ก ์ค์ ํ๊ณ , AVX2/AVX-512 ๋ช ๋ น์ด ์ธํธ๋ฅผ ํ์ฑํํ๋ฉฐ, Q4_K_M ์์ํ๋ฅผ ์ฌ์ฉํ์ญ์์ค. ์ต์ i9์์ ํ์ค์ ์ธ ์ํ์ ์ 8~12 tok/sec์ ๋๋ค. ๋ํํ ์ฑํ ์์ ํ์ฉ ๊ฐ๋ฅํ ์ง์ฐ ์๊ฐ์ ๋ฌ์ฑํ๋ ค๋ฉด GPU ํ๋์จ์ด๊ฐ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋๋ค.
์ปจํ ์คํธ ๊ธธ์ด๊ฐ ์ถ๋ก ์๋์ ์ด๋ค ์ํฅ์ ๋ฏธ์นฉ๋๊น?
์ดํ ์ ๋ฉ์ปค๋์ฆ์ด ์ปจํ ์คํธ ๊ธธ์ด์ ๋ํด ์ด์ฐจ์ ์ผ๋ก ํ์ฅ๋๊ธฐ ๋๋ฌธ์ ์ปจํ ์คํธ ์ฐฝ์ด ๊ธธ์๋ก ์ถ๋ก ์ด ๋๋ ค์ง๋๋ค. 4K ์ปจํ ์คํธ ํ๋กฌํํธ๋ 1K ํ๋กฌํํธ๋ณด๋ค ์ฝ 4๋ฐฐ ๋ ๋๋ฆฌ๊ฒ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์์คํ ํ๋กฌํํธ๋ 500 ํ ํฐ ๋ฏธ๋ง์ผ๋ก ์ ์งํ๊ณ ์๋๋ฅผ ์ ์งํ๋ ค๋ฉด ๊ธด ๋ํ์ ์ปจํ ์คํธ ์์ฝ์ ์ฌ์ฉํ์ญ์์ค.
PagedAttention์ด๋ ๋ฌด์์ด๋ฉฐ ์ vLLM์ ์๋๋ฅผ ๋์ ๋๊น?
PagedAttention์ vLLM์ KV ์บ์ ๊ด๋ฆฌ ์์คํ ์ ๋๋ค. ์์ฒญ๋น ๊ณ ์ ๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ๋ฏธ๋ฆฌ ํ ๋นํ๋ ๋์ OS์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ฒ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ํ์ด์งํฉ๋๋ค. ์ด๋ฅผ ํตํด VRAM ๋จํธํ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ ๋ง์ ๋์ ์์ฒญ์ ํ์ฉํ๋ฉฐ GPU ํ์ฉ๋ฅ ์ ์ฝ 55%(๊ธฐ๋ณธ)์์ 90% ์ด์์ผ๋ก ํฅ์์ํต๋๋ค.
GGUF์ safetensors ๋ชจ๋ธ ํ์ ๊ฐ์ ์๋ ์ฐจ์ด๊ฐ ์์ต๋๊น?
์์ต๋๋ค. GGUF(llama.cpp ๋ฐ Ollama์์ ์ฌ์ฉ)๋ ๋ด์ฅ ์์ํ๋ฅผ ํตํ CPU/์๋น์์ฉ GPU ์ถ๋ก ์ ์ต์ ํ๋์ด ์์ต๋๋ค. Safetensors(vLLM ๋ฐ HuggingFace์์ ์ฌ์ฉ)๋ ์ ์ ๋ฐ๋ GPU ์ถ๋ก ์ ๋ ๋น ๋ฆ ๋๋ค. FP16์ ์คํํ๋ RTX 40 ์๋ฆฌ์ฆ GPU์์ safetensors + vLLM์ ์ผ๋ฐ์ ์ผ๋ก GGUF + Ollama๋ณด๋ค 10~20% ๋ ๋น ๋ฆ ๋๋ค.
์ถ์ฒ
- vLLM Optimization Guide -- docs.vllm.ai/en/dev_guide/performance_tuning.html
- Ollama Performance Tips -- github.com/ollama/ollama/blob/main/docs/troubleshooting.md