๐Ÿง  Accelerator

llama.cpp Backend ์ƒ์„ธ

๊ฐœ์š”

llama.cpp๋Š” Andrej Karpathy๊ฐ€ 2023๋…„ 3์›”์— ์‹œ์ž‘ํ•œ C/C++ ๊ธฐ๋ฐ˜ LLM ์ถ”๋ก  ์—”์ง„์œผ๋กœ, ํ˜„์žฌ GitHub์—์„œ 120K ์ด์ƒ์˜ ์Šคํƒ€๋ฅผ ๋ณด์œ ํ•œ ๊ฐ€์žฅ ๋Œ€์ค‘์ ์ธ ๋กœ์ปฌ LLM ์ถ”๋ก  ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ์ตœ์†Œํ•œ์˜ ์˜์กด์„ฑ์œผ๋กœ ๋‹ค์–‘ํ•œ ํ•˜๋“œ์›จ์–ด์—์„œ ์ตœ์ฒจ๋‹จ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋ฉฐ, ๊ฐœ์ธ์šฉ ๋…ธํŠธ๋ถ๋ถ€ํ„ฐ ํด๋Ÿฌ์Šคํ„ฐ ์„œ๋ฒ„๊นŒ์ง€ ๊ด‘๋ฒ”์œ„ํ•œ ๋ฐฐํฌ ํ™˜๊ฒฝ์„ ์ง€์›ํ•œ๋‹ค.

ํ•ต์‹ฌ ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ GGML(Georgi Gerganov Machine Learning)์€ ํ…์„œ ์—ฐ์‚ฐ์„ ์œ„ํ•œ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, llama.cpp์˜ ๋ชจ๋“  ๋ฐฑ์—”๋“œ ์—ฐ์‚ฐ์„ ๋‹ด๋‹นํ•œ๋‹ค. llama.cpp๋Š” ์ด GGML ์œ„์— ๊ตฌ์ถ•๋˜์–ด ๋ชจ๋ธ ๋กœ๋”ฉ, ํ† ํฐํ™”, ์ถ”๋ก  ํŒŒ์ดํ”„๋ผ์ธ, ์„œ๋ฒ„ ๋“ฑ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋…๋ฆฝ ์‹คํ–‰ํ˜•(standalone) C/C++ ๊ตฌํ˜„์œผ๋กœ Python์ด๋‚˜ ๋‹ค๋ฅธ ๋Ÿฐํƒ€์ž„ ์˜์กด์„ฑ์ด ์—†์–ด ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ๋ถ€ํ„ฐ ์„œ๋ฒ„๊นŒ์ง€ ํญ๋„“์€ ํ”Œ๋žซํผ์—์„œ ํ™œ์šฉ๋œ๋‹ค.

ํ•ต์‹ฌ ๊ฐœ๋…

llama.cpp ์•„ํ‚คํ…์ฒ˜

llama.cpp Architecture

llama.cpp๋Š” ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค:

๊ณ„์ธต ๊ตฌ์„ฑ ์š”์†Œ ์—ญํ• 
๋„๊ตฌ ๊ณ„์ธต llama-cli, llama-server, llama-bench, llama-perplexity, llama-simple ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, CLI/HTTP ์„œ๋ฒ„, ๋ฒค์น˜๋งˆํฌ, perplexity ์ธก์ •
์ถ”๋ก  ๊ณ„์ธต libllama ๋ชจ๋ธ ๋กœ๋”ฉ, ํ† ํฌ๋‚˜์ด์ €, KV ์บ์‹œ, ์ถ”๋ก  ๋ฃจํ”„
ํ…์„œ ์—ฐ์‚ฐ ๊ณ„์ธต GGML ํ…์„œ ์—ฐ์‚ฐ, ์–‘์žํ™”, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
ํ•˜๋“œ์›จ์–ด ๋ฐฑ์—”๋“œ Metal, CUDA, HIP, Vulkan, SYCL ๋“ฑ ํ”Œ๋žซํผ๋ณ„ ๊ฐ€์†ํ™” (15๊ฐœ ์ด์ƒ)

GGUF ํŒŒ์ผ ํ˜•์‹

GGUF(GGML Unified File Format)๋Š” llama.cpp์˜ ๋ชจ๋ธ ์ €์žฅ ํ‘œ์ค€ ํ˜•์‹์ด๋‹ค. ๋‹จ์ผ ํŒŒ์ผ ๋ฐฐํฌ, mmap ํ˜ธํ™˜์„ฑ, ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ํŠน์ง•์œผ๋กœ ํ•œ๋‹ค.

ํŠน์ง• ์„ค๋ช…
๋‹จ์ผ ํŒŒ์ผ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ํฌํ•จ
ํ™•์žฅ์„ฑ ํ‚ค-๊ฐ’ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ์ƒˆ๋กœ์šด ์ •๋ณด ์ถ”๊ฐ€ ์‹œ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ ์œ ์ง€
mmap ์ง€์› ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘์„ ํ†ตํ•œ ๋น ๋ฅธ ๋กœ๋”ฉ
์–‘์žํ™” ํ˜•์‹ Q2_K๋ถ€ํ„ฐ F16๊นŒ์ง€ 20๊ฐœ ์ด์ƒ์˜ ์–‘์žํ™” ์Šคํ‚ด ์ง€์›

GGUF ํŒŒ์ผ ๋ช…๋ช… ๊ทœ์น™: [<Sidecar>]<BaseName><SizeLabel><FineTune><Version><Encoding><Type><Shard>.gguf

  • Sidecar: mmproj(๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ํ”„๋กœ์ ํ„ฐ), mTP(๋ฉ€ํ‹ฐํ† ํฐ ์˜ˆ์ธก) ๋“ฑ ๋ณด์กฐ ๋ชจ๋“ˆ
  • BaseName: ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜ ์ด๋ฆ„
  • SizeLabel: ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜ (์˜ˆ: 8B, 70B, 8x7B)
  • Encoding: ์–‘์žํ™” ์Šคํ‚ด (Q4_0, Q4_K_M, F16 ๋“ฑ)

์–‘์žํ™” ์‹œ์Šคํ…œ

llama.cpp๋Š” 1.5๋น„ํŠธ๋ถ€ํ„ฐ 8๋น„ํŠธ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ์ •์ˆ˜ ์–‘์žํ™”๋ฅผ ์ง€์›ํ•˜์—ฌ ์ถ”๋ก  ์†๋„์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ์ ํ™”ํ•œ๋‹ค:

์–‘์žํ™” ์œ ํ˜• ๋น„ํŠธ ์ˆ˜ ํŠน์ง• ์‚ฌ์šฉ ์‚ฌ๋ก€
IQ1_S/M 1.5๋น„ํŠธ ๊ทนํ•œ ์••์ถ• ๋ฉ”๋ชจ๋ฆฌ ์ œ์•ฝ ์—ฃ์ง€ ๋””๋ฐ”์ด์Šค
IQ2_XXS/XS/S 2๋น„ํŠธ ๊ณ ๋ฐ€๋„ ์–‘์žํ™” ๋Œ€ํ˜• ๋ชจ๋ธ ๊ฒฝ๋Ÿ‰ํ™”
Q3_K_S/M/L 3๋น„ํŠธ K-์–‘์žํ™” ์‹œ๋ฆฌ์ฆˆ ๋ฐธ๋Ÿฐ์Šค ์ตœ์ ํ™”
Q4_0/Q4_K_S/M 4๋น„ํŠธ ๊ฐ€์žฅ ๋ณดํŽธ์  ๋ฒ”์šฉ ์‚ฌ์šฉ
Q5_0/Q5_K_S/M 5๋น„ํŠธ ๋†’์€ ์ •๋ฐ€๋„ ํ’ˆ์งˆ ์šฐ์„ 
Q6_K 6๋น„ํŠธ ๊ฑฐ์˜ ๋ฌด์†์‹ค ๊ณ ํ’ˆ์งˆ ์ถ”๋ก 
Q8_0 8๋น„ํŠธ ๊ณ ์ •๋ฐ€ ์ •๋ฐ€๋„ ํ•„์ˆ˜
F16/BF16 16๋น„ํŠธ ๋ถ€๋™์†Œ์ˆ˜์  ๊ฐœ๋ฐœ/๋””๋ฒ„๊น…
MXFP4 4๋น„ํŠธ MXFP4 ๋ธ”๋ก ํ˜•์‹ NVIDIA ํ•˜๋“œ์›จ์–ด ๊ฐ€์†

๋™์ž‘ ์›๋ฆฌ

1๋‹จ๊ณ„: ๋ชจ๋ธ ๋ณ€ํ™˜ ๋ฐ ๋กœ๋”ฉ

Hugging Face ๋ชจ๋ธ์„ GGUF ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  llama.cpp๊ฐ€ ๋กœ๋”ฉํ•˜๋Š” ๊ณผ์ •:

# Hugging Face ๋ชจ๋ธ โ†’ GGUF ๋ณ€ํ™˜
python convert_hf_to_gguf.py model_dir --outfile model.gguf

# ์–‘์žํ™” (์„ ํƒ)
./llama-quantize model.gguf model-q4_k_m.gguf Q4_K_M

# Hugging Face์—์„œ ์ง์ ‘ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์‹คํ–‰
llama-cli -hf ggml-org/gemma-3-1b-it-GGUF
llama-server -hf ggml-org/gemma-3-1b-it-GGUF

๋ณ€ํ™˜ ๊ณผ์ •์—์„œ GGUF๋Š” ๋‹ค์Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ๋‹ค:
- general.architecture: ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜ (llama, qwen, mistral ๋“ฑ)
- general.quantization_version: ์–‘์žํ™” ํฌ๋งท ๋ฒ„์ „
- general.alignment: ํŒŒ์ผ ์ •๋ ฌ (๊ธฐ๋ณธ 32๋ฐ”์ดํŠธ)
- ์•„ํ‚คํ…์ฒ˜๋ณ„ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ (attention head ์ˆ˜, ๋ ˆ์ด์–ด ์ˆ˜ ๋“ฑ)
- ํ† ํฌ๋‚˜์ด์ € ์ •๋ณด (vocab, merges, special tokens)

2๋‹จ๊ณ„: ์ถ”๋ก  ์‹คํ–‰

llama-cli -m model.gguf -p "์•ˆ๋…•ํ•˜์„ธ์š”"
llama-server -m model.gguf --port 8080

์ถ”๋ก  ๊ณผ์ •์—์„œ GGML์€ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นœ๋‹ค:

  1. ํ† ํฐํ™”: ์ž…๋ ฅ ํ…์ŠคํŠธ๋ฅผ ํ† ํฐ ์‹œํ€€์Šค๋กœ ๋ณ€ํ™˜
  2. ์ž„๋ฒ ๋”ฉ: ํ† ํฐ ID๋ฅผ ๊ณ ์ฐจ์› ๋ฒกํ„ฐ๋กœ ๋งคํ•‘
  3. ํฌ์›Œ๋“œ ํŒจ์Šค: ํŠธ๋žœ์Šคํฌ๋จธ ๋ ˆ์ด์–ด ์ˆœ์ฐจ ์‹คํ–‰
  4. KV ์บ์‹œ ๊ด€๋ฆฌ: ์ด์ „ ํ† ํฐ์˜ Key/Value ์ €์žฅ ๋ฐ ์žฌ์‚ฌ์šฉ
  5. ๋””์ฝ”๋”ฉ: ๋‹ค์Œ ํ† ํฐ ํ™•๋ฅ  ๋ถ„ํฌ์—์„œ ์ƒ˜ํ”Œ๋ง
  6. ๋ฐํ† ํฌ๋‚˜์ด์ฆˆ: ํ† ํฐ์„ ํ…์ŠคํŠธ๋กœ ๋ณต์›

CPU+GPU ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ถ”๋ก 

๋ชจ๋ธ์ด GPU VRAM๋ณด๋‹ค ํด ๊ฒฝ์šฐ, llama.cpp๋Š” ๋ ˆ์ด์–ด๋ฅผ CPU์™€ GPU์— ๋ถ„์‚ฐํ•˜์—ฌ ๋ถ€๋ถ„์  ๊ฐ€์†ํ™”๋ฅผ ์ œ๊ณตํ•œ๋‹ค:

# GPU ๋ ˆ์ด์–ด ์ˆ˜ ์ง€์ • (์˜ˆ: 35๊ฐœ ๋ ˆ์ด์–ด ์ค‘ 20๊ฐœ๋ฅผ GPU์— ์˜คํ”„๋กœ๋“œ)
llama-cli -m model.gguf -ngl 20

# ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ ์‹œ ์ž๋™ ๋ถ„ํ• 
llama-cli -m model.gguf -ngl 99 --override-tensor

๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ

์ง€์› ํ•˜๋“œ์›จ์–ด ๋ฐฑ์—”๋“œ

๋ฐฑ์—”๋“œ ๋Œ€์ƒ ํ•˜๋“œ์›จ์–ด ๋นŒ๋“œ ํ”Œ๋ž˜๊ทธ ํŠน์ง•
Metal Apple Silicon ๊ธฐ๋ณธ ํ™œ์„ฑํ™” ARM NEON, Accelerate ํ”„๋ ˆ์ž„์›Œํฌ ํ†ตํ•ฉ
CUDA NVIDIA GPU -DGGML_CUDA=ON cuBLAS, ์ปค์Šคํ…€ CUDA ์ปค๋„
HIP AMD GPU -DGGML_HIP=ON ROCm ๊ธฐ๋ฐ˜, MI ์‹œ๋ฆฌ์ฆˆ ์ง€์›
Vulkan ๋ฒ”์šฉ GPU -DGGML_VULKAN=ON ๊ต์ฐจ ํ”Œ๋žซํผ, ์‹คํ—˜์ 
SYCL Intel GPU -DGGML_SYCL=ON oneAPI ๊ธฐ๋ฐ˜, Arc GPU ์ง€์›
MUSA Moore Threads GPU -DGGML_MUSA=ON MTT S80/S4000 ์ง€์›
CANN Ascend NPU -DGGML_CANN=ON ํ™”์›จ์ด Atlas ์‹œ๋ฆฌ์ฆˆ
OpenCL Adreno GPU -DGGML_OPENCL=ON ๋ชจ๋ฐ”์ผ/์ž„๋ฒ ๋””๋“œ
BLIS ๋ฒ”์šฉ CPU -DGGML_BLIS=ON Intel BLAS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
ZenDNN AMD CPU -DGGML_ZENNN=ON AMD ์ตœ์ ํ™” ์ปค๋„
WebGPU ๋ธŒ๋ผ์šฐ์ € WASM ๊ธฐ๋ฐ˜ ๋ธŒ๋ผ์šฐ์ € ๋‚ด ์ถ”๋ก 
RPC ๋ถ„์‚ฐ ์‹œ์Šคํ…œ -DGGML_RPC=ON ๋„คํŠธ์›Œํฌ ํ†ตํ•œ ๋ถ„์‚ฐ ์ถ”๋ก 
OpenVINO Intel CPU/GPU/NPU ์ง„ํ–‰ ์ค‘ Intel ํ•˜๋“œ์›จ์–ด ์ตœ์ ํ™”
IBM zDNN IBM Z & LinuxONE ๋‚ด์žฅ IBM ๋ฉ”์ธํ”„๋ ˆ์ž„
Hexagon Snapdragon ์ง„ํ–‰ ์ค‘ Qualcomm DSP
VirtGPU ๊ฐ€์ƒ GPU -DGGML_VIRTGPU=ON ๊ฐ€์ƒํ™” ํ™˜๊ฒฝ

๋ฐฑ์—”๋“œ ์„ ํƒ ๊ธฐ์ค€

๊ธฐ์ค€ Metal CUDA HIP Vulkan SYCL
์„ฑ๋Šฅ ์ตœ์  ์ตœ๊ณ  ์šฐ์ˆ˜ ๋ณดํ†ต ์šฐ์ˆ˜
ํ˜ธํ™˜์„ฑ Apple๋งŒ NVIDIA๋งŒ AMD๋งŒ ๋ฒ”์šฉ Intel
์•ˆ์ •์„ฑ ์•ˆ์ • ์•ˆ์ • ์•ˆ์ • ์‹คํ—˜์  ์•ˆ์ •
ํ™œ์„ฑํ™” ์ž๋™ ๋นŒ๋“œ ์‹œ ๋นŒ๋“œ ์‹œ ๋นŒ๋“œ ์‹œ ๋นŒ๋“œ ์‹œ

๋ฉ€ํ‹ฐ GPU ์ง€์›

llama.cpp๋Š” ์—ฌ๋Ÿฌ GPU๋ฅผ ํ™œ์šฉํ•œ ๋ณ‘๋ ฌ ์ถ”๋ก ์„ ์ง€์›ํ•œ๋‹ค:

# 2๊ฐœ GPU ์‚ฌ์šฉ (GPU 0๊ณผ GPU 1์— ๋ถ„์‚ฐ)
CUDA_VISIBLE_DEVICES=0,1 ./llama-server -m model.gguf -ngl 99 -ts 0.5,0.5

# GPU ๊ฐ„ ํ…์„œ ๋ถ„ํ•  ๋น„์œจ ์ง€์ •
./llama-server -m model.gguf -ngl 99 -ts 0.7,0.3

๋ฉ€ํ‹ฐ GPU ์‹œ ๊ตฌํ˜„ ๋ฐฉ์‹:
- ํ…์„œ ๋ถ„ํ• : ํ•˜๋‚˜์˜ ํ…์„œ๋ฅผ ์—ฌ๋Ÿฌ GPU์— ๋ถ„์‚ฐ
- ๋ ˆ์ด์–ด ๋ถ„ํ• : ํŠธ๋žœ์Šคํฌ๋จธ ๋ ˆ์ด์–ด๋ฅผ GPU๋ณ„๋กœ ๋ถ„๋ฐฐ
- ํŒŒ์ดํ”„๋ผ์ธ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ: ๋ ˆ์ด์–ด ๊ฐ„ ํŒŒ์ดํ”„๋ผ์ธ ํ˜•์‹ ๋ณ‘๋ ฌ ์‹คํ–‰

๋น„๊ต/๋ถ„์„

๊ธฐ์กด ์ถ”๋ก  ์—”์ง„ ๋น„๊ต

ํŠน์ง• llama.cpp vLLM TensorRT-LLM Ollama
์–ธ์–ด C/C++ Python C++/Python Go
๋ฐฐํฌ ํ˜•ํƒœ ๋…๋ฆฝ ์‹คํ–‰ํ˜• ์„œ๋ฒ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ž˜ํผ
์–‘์žํ™” ๋„“์€ ๋ฒ”์œ„ (1.5~8๋น„ํŠธ) ์ œํ•œ์  FP8 ์ค‘์‹ฌ llama.cpp ๊ธฐ๋ฐ˜
ํ•˜๋“œ์›จ์–ด CPU+GPU, 15+ ๋ฐฑ์—”๋“œ GPU ์ค‘์‹ฌ NVIDIA ์ „์šฉ CPU+GPU
๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ ์šฐ์ˆ˜ (mmap, ์˜คํ”„๋กœ๋“œ) PagedAttention ๋†’์€ VRAM ์‚ฌ์šฉ llama.cpp ๊ธฐ๋ฐ˜
์„œ๋น™ ๊ธฐ๋Šฅ ๊ธฐ๋ณธ ์„œ๋ฒ„ ํฌํ•จ ํ”„๋กœ๋•์…˜๊ธ‰ ํ”„๋กœ๋•์…˜๊ธ‰ ๊ฐ„ํŽธ ์„œ๋น™
์ง„์ž… ์žฅ๋ฒฝ ๋‚ฎ์Œ ์ค‘๊ฐ„ ๋†’์Œ ๋งค์šฐ ๋‚ฎ์Œ

์–‘์žํ™” ์Šคํ‚ด ๋น„๊ต

์Šคํ‚ด ๋ฉ”๋ชจ๋ฆฌ ์ ˆ๊ฐ ์†๋„ ํ–ฅ์ƒ ํ’ˆ์งˆ ์ €ํ•˜ ์ ํ•ฉ ์šฉ๋„
Q4_0 ~75% ๋งค์šฐ ๋น ๋ฆ„ ๋ณดํ†ต ๋ฐ์Šคํฌํ†ฑ ์ถ”๋ก 
Q4_K_M ~75% ๋น ๋ฆ„ ์ ์Œ ๋ฒ”์šฉ ์ถ”๋ก 
Q5_K_M ~69% ๋น ๋ฆ„ ๋งค์šฐ ์ ์Œ ํ’ˆ์งˆ ์šฐ์„ 
Q8_0 ~50% ๋ณดํ†ต ๊ฑฐ์˜ ์—†์Œ ์ •๋ฐ€๋„ ํ•„์ˆ˜
IQ2_XS ~87% ๋ณดํ†ต ํผ ์—ฃ์ง€ ๋””๋ฐ”์ด์Šค
F16 0% ๋А๋ฆผ ์—†์Œ ๊ฐœ๋ฐœ/๊ฒ€์ฆ

์žฅ๋‹จ์ 

์žฅ์ 

  • ๊ทน๋„์˜ ๋ฒ”์šฉ์„ฑ: C/C++ ์ˆœ์ˆ˜ ๊ตฌํ˜„์œผ๋กœ ํ”Œ๋žซํผ ๋…๋ฆฝ์  ๋ฐฐํฌ ๊ฐ€๋Šฅ
  • ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ: mmap, CPU+GPU ํ•˜์ด๋ธŒ๋ฆฌ๋“œ, ๋‹ค์–‘ํ•œ ์–‘์žํ™”๋กœ ์ œํ•œ๋œ ํ•˜๋“œ์›จ์–ด์—์„œ๋„ ๋Œ€ํ˜• ๋ชจ๋ธ ์‹คํ–‰
  • ํ’๋ถ€ํ•œ ์ƒํƒœ๊ณ„: Python, Go, Rust, Java ๋“ฑ 20๊ฐœ ์ด์ƒ์˜ ์–ธ์–ด ๋ฐ”์ธ๋”ฉ๊ณผ ์ˆ˜์‹ญ ๊ฐœ์˜ UI ํ”„๋กœ์ ํŠธ
  • ์ตœ์ ํ™”๋œ ์„ฑ๋Šฅ: Apple Silicon ARM NEON, x86 AVX/AMX, NVIDIA ์ปค์Šคํ…€ ์ปค๋„ ๋“ฑ ํ•˜๋“œ์›จ์–ด๋ณ„ ์ตœ์ ํ™”
  • ๋น ๋ฅธ ํ˜์‹ : ํ™œ๋ฐœํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜์™€ ๊ธฐ๋Šฅ์ด ์‹ ์†ํ•˜๊ฒŒ ์ง€์›
  • OpenAI ํ˜ธํ™˜ API: llama-server๋กœ ๊ธฐ์กด API ํด๋ผ์ด์–ธํŠธ์™€ ํ˜ธํ™˜๋˜๋Š” HTTP ์„œ๋ฒ„ ์ œ๊ณต

๋‹จ์ 

  • ๋‹จ์ผ ๋…ธ๋“œ ์ œํ•œ: ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ€ํ‹ฐ ๋…ธ๋“œ ๋ถ„์‚ฐ ์ถ”๋ก ์„ ์ง€์›ํ•˜์ง€ ์•Š์Œ (RPC ๋ฐฑ์—”๋“œ๋กœ ์‹คํ—˜์  ์ง€์›)
  • ํ”„๋กœ๋•์…˜ ์„œ๋น™ ํ•œ๊ณ„: vLLM/TensorRT-LLM ๋Œ€๋น„ ๋ฐฐ์น˜ ์ตœ์ ํ™”, ๋™์  ์Šค์ผ€์ค„๋ง ๊ธฐ๋Šฅ ๋ถ€์กฑ
  • ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ œํ•œ: ํ…์ŠคํŠธ ์ค‘์‹ฌ์ด๋ฉฐ ๋น„์ „/์˜ค๋””์˜ค ๋ชจ๋ธ ์ง€์›์ด ์ƒ๋Œ€์ ์œผ๋กœ ์ œํ•œ์  (์ตœ๊ทผ LLaVA, Qwen2-VL ๋“ฑ ์ง€์› ํ™•๋Œ€)
  • ์ปดํŒŒ์ผ ์˜์กด์„ฑ: ํ•˜๋“œ์›จ์–ด๋ณ„ ๋ฐฑ์—”๋“œ ํ™œ์„ฑํ™”๋ฅผ ์œ„ํ•œ ๋นŒ๋“œ ์„ค์ • ํ•„์š”
  • ๋””๋ฒ„๊น… ์–ด๋ ค์›€: C/C++ ๊ตฌํ˜„์œผ๋กœ Python ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ ๋Œ€๋น„ ๋””๋ฒ„๊น…์ด ๋ณต์žก

๊ด€๋ จ ๊ธฐ์ˆ 

์ฐธ๊ณ  ๋ฌธํ—Œ ๋ฐ ํ‘œ์ค€

์ž๋ฃŒ ์„ค๋ช… ๋งํฌ
GGML ์ €์žฅ์†Œ ํ…์„œ ์—ฐ์‚ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ https://github.com/ggml-org/ggml
GGUF ์ŠคํŽ™ ๋ชจ๋ธ ํŒŒ์ผ ํ˜•์‹ ํ‘œ์ค€ https://github.com/ggml-org/ggml/blob/master/docs/gguf.md
llama.cpp ์ €์žฅ์†Œ ๋ฉ”์ธ ์ถ”๋ก  ์—”์ง„ https://github.com/ggml-org/llama.cpp
Ollama llama.cpp ๊ธฐ๋ฐ˜ ๋ž˜ํผ https://github.com/ollama/ollama
llama-cpp-python Python ๋ฐ”์ธ๋”ฉ https://github.com/abetlen/llama-cpp-python
GGUF ํŽธ์ง‘๊ธฐ ๋ธŒ๋ผ์šฐ์ €์—์„œ GGUF ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŽธ์ง‘ https://huggingface.co/spaces/CISCai/gguf-editor
GGUF-my-repo Hugging Face์—์„œ GGUF ๋ณ€ํ™˜/์–‘์žํ™” https://huggingface.co/spaces/ggml-org/gguf-my-repo

๊ด€๋ จ ๋ฌธ์„œ

ํ•ต์‹ฌ ์ •๋ฆฌ

llama.cpp๋Š” C/C++ ์ˆœ์ˆ˜ ๊ตฌํ˜„์œผ๋กœ 15๊ฐœ ์ด์ƒ์˜ ํ•˜๋“œ์›จ์–ด ๋ฐฑ์—”๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฒ”์šฉ LLM ์ถ”๋ก  ์—”์ง„์ด๋‹ค. GGUF ํŒŒ์ผ ํ˜•์‹๊ณผ 1.5๋น„ํŠธ~8๋น„ํŠธ ์–‘์žํ™”๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ•˜๋ฉฐ, CPU+GPU ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ถ”๋ก ์œผ๋กœ VRAM์ด ๋ถ€์กฑํ•œ ํ™˜๊ฒฝ์—์„œ๋„ ๋Œ€ํ˜• ๋ชจ๋ธ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. Python ์˜์กด์„ฑ์ด ์—†๋Š” ๋…๋ฆฝ ์‹คํ–‰ํ˜• ๊ตฌ์กฐ์™€ OpenAI ํ˜ธํ™˜ API ์„œ๋ฒ„๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋กœ์ปฌ AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์˜ ์ง„์ž… ์žฅ๋ฒฝ์„ ํฌ๊ฒŒ ๋‚ฎ์ถ”์—ˆ๋‹ค. ํ™œ๋ฐœํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ํ’๋ถ€ํ•œ ์ƒํƒœ๊ณ„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ง€์†์ ์œผ๋กœ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, Ollama, LM Studio ๋“ฑ ์—ฌ๋Ÿฌ ํ”„๋กœ๋•์…˜ ๋„๊ตฌ์˜ ํ•ต์‹ฌ ์ถ”๋ก  ๋ฐฑ์—”๋“œ๋กœ ์ฑ„ํƒ๋˜๊ณ  ์žˆ๋‹ค.