- Ollama: ๊ฐ์ฅ ๊ฐํธํ ์ค์น, ์ด๋ณด์์๊ฒ ์ต์
- MLX: Apple Silicon์์ ๊ฐ์ฅ ๋น ๋ฆ(15~25% ๋น ๋ฆ)
- llama.cpp: ๊ฐ์ฅ ๋ง์ ๋ชจ๋ธ ํฌ๋งท, ํฌ๋ก์ค ํ๋ซํผ
- ๋๋ถ๋ถ์ ์ฌ์ฉ์: Ollama๋ก ์์ํ๊ณ , ์๋๊ฐ ํ์ํ๋ฉด MLX๋ก ์ ํํ์ญ์์ค
1:1 ๋น๊ต
| ๊ธฐ๋ฅ | Ollama | MLX | llama.cpp |
|---|---|---|---|
| ์ค์น ์๊ฐ | 2๋ถ | 5๋ถ | 10๋ถ |
| Metal GPU | ์๋ | ๋ค์ดํฐ๋ธ | ์ง์๋จ |
| ๋ชจ๋ธ ํฌ๋งท | GGUF | MLX ํฌ๋งท | GGUF |
| API | REST (localhost:11434) | Python ๋ค์ดํฐ๋ธ | CLI + HTTP |
| ์๋ (8B Q4) | 45~50 tok/s | 55~65 tok/s | 45~55 tok/s |
| ์๋ (70B Q4) | 12~16 tok/s | 18~22 tok/s | 14~18 tok/s |
| ํ์ธํ๋ | ์์ | ์์ (LoRA) | ์์ |
| ์ต์ ์ฉ๋ | ์ด๋ณด์, API | ML ๊ฐ๋ฐ์ | ํฌ๋ก์ค ํ๋ซํผ |
Apple Silicon์์ Ollama
- ๋จ์ผ ๋ช ๋ น ์ค์น: `brew install ollama`
- Metal GPU ์๋ ํ์ฑํ โ ๋ณ๋ ์ค์ ๋ถํ์
- ํตํฉ์ ์ํ REST API (๋ชจ๋ ์ธ์ด์์ ์ฌ์ฉ ๊ฐ๋ฅ)
- ๋ชจ๋ธ ๊ด๋ฆฌ: `ollama pull`, `ollama list`, `ollama rm`
- ์ ํ์ฌํญ: ํ์ธํ๋ ๋ถ๊ฐ, ์ฌ์ฉ์ ์ ์ ์์ํ ๋ถ๊ฐ
- ์ ํ์ฌํญ: GGUF ์ค๋ฒํค๋๋ก ์ธํด MLX๋ณด๋ค ์ฝ๊ฐ ๋๋ฆผ
- ์ต์ ์ฉ๋: ์ด๋ณด์, API ์ฌ์ฉ์, Whisper ํตํฉ
Ollama ์ง์ ๋ชจ๋ธ (100๊ฐ ์ด์ ํ๋ ์ด์ )
- Llama 3.3 (1B, 3B, 8B, 70B, 405B)
- Mistral Small, Mixtral 8x22B/22B
- Qwen3 (0.5B~72B)
- Phi-3, Phi-4
- Gemma 2 (2B, 9B, 27B)
- DeepSeek Coder V2
- ๋น์ : Llama 3.2 Vision, LLaVA
- ์๋ฒ ๋ฉ: nomic-embed-text, mxbai-embed-large
MLX โ Apple ๋ค์ดํฐ๋ธ ํ๋ ์์ํฌ
- Apple Silicon์ ์ํด Apple์ด ์ง์ ๊ฐ๋ฐ
- NumPy ์ ์ฌ Python API: `import mlx.core as mx`
- ์ง์ฐ ํ๊ฐ(Lazy evaluation) + ํตํฉ ๋ฉ๋ชจ๋ฆฌ = ์ต์ ํ์ฉ๋ฅ
- MLX-LM: LLM ์ถ๋ก ๋ฐ ํ์ธํ๋ ์ ์ฉ ํจํค์ง
- Apple Silicon์์ ๊ฐ์ฅ ๋น ๋ฅธ ์ถ๋ก (Ollama๋ณด๋ค 10~25% ๋น ๋ฆ)
- Mac์์ ์ง์ LoRA ๋ฐ QLoRA ํ์ธํ๋ ์ง์
- ์ ํ์ฌํญ: MLX ํฌ๋งท ๋ชจ๋ธ๋ง ์ง์(๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์ ํ์ฅ ์ค)
- ์ ํ์ฌํญ: macOS ์ ์ฉ โ ์ฝ๋ ์ด์ ๋ถ๊ฐ
- ์ต์ ์ฉ๋: ML ๊ฐ๋ฐ์, ์ต๊ณ ์๋, ํ์ธํ๋
MLX ์ง์ ๋ชจ๋ธ (HuggingFace์ mlx-community)
- ๋ชจ๋ ์ฃผ์ LLM (Llama, Mistral, Qwen, Gemma, Phi)
- ์์ํ ๋ฒ์ (Q3, Q4, Q5, Q6, Q8)
- ๋น์ ๋ชจ๋ธ: Llama 3.2 Vision, LLaVA, Qwen2-VL
- ์ฐธ๊ณ : MLX ํฌ๋งท์ผ๋ก ๋ณํ ํ์(์ปค๋ฎค๋ํฐ์์ ๋๋ถ๋ถ ๋ณํ ์ ๊ณต)
Apple Silicon์์ llama.cpp
- ํฌ๋ก์ค ํ๋ซํผ C/C++ โ Mac, Linux, Windows์์ ๋์ผํ ๋ฐ์ด๋๋ฆฌ ์คํ
- ๋น๋ ํ๋๊ทธ๋ก Metal ์ง์: `make LLAMA_METAL=1`
- GGUF ํฌ๋งท: ๊ฐ์ฅ ํฐ ๋ชจ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์๋ฒ ๋ชจ๋: `./llama-server -m model.gguf` โ REST API ์ ๊ณต
- ๋์ผ ์์ฑ์์ Whisper.cpp โ Metal STT ์ง์
- ์ ํ์ฌํญ: ์์ค์์ ๋น๋ ํ์(์ํด๋ฆญ ์ค์น ์์)
- ์ ํ์ฌํญ: MLX๋ณด๋ค ๋๋ฆฌ๊ณ , Ollama์ ๋น์ทํ ์๋
- ์ต์ ์ฉ๋: ํฌ๋ก์ค ํ๋ซํผ ํ๋ก์ ํธ, ์ต๋ ๋ชจ๋ธ ํฌ๋งท ์ง์
llama.cpp ์ง์ ๋ชจ๋ธ (๋ชจ๋ GGUF)
- HuggingFace์ ๋ชจ๋ GGUF ํ์ผ ์ฌ์ฉ ๊ฐ๋ฅ (10,000๊ฐ ์ด์)
- ํ์ธํ๋ ๋ฐ ์ปค์คํ ๋ชจ๋ธ์ ๊ฐ์ฅ ํฐ ์ํ๊ณ
- ์ค๋ฆฌ์ง๋/์คํ์ ๋ชจ๋ธ์ด ๊ฐ์ฅ ๋จผ์ ๋ฑ์ฅ
- ์ฃผ๋ฅ ๋ชจ๋ธ(Llama, Mistral, Qwen)์ ์ธ ํ๋ ์์ํฌ ๋ชจ๋ ์ง์ํฉ๋๋ค. ํฌ๊ทํ๊ฑฐ๋ ์คํ์ ์ธ ๋ชจ๋ธ์ ์ํ๊ณ ๊ท๋ชจ์์ llama.cpp๊ฐ ์ฐ์ธํฉ๋๋ค.
์ค์น ๋น๊ต: Llama 3.3 8B ์คํ์ ์ํ ์ฝ๋ 5์ค
Ollama (๋ช ๋ น์ด 2๊ฐ):
```bash
brew install ollama
ollama run llama3.1:8b "Hello, world"
```
MLX (Python 4์ค):
```python
from mlx_lm import load, generate
model, tokenizer = load("mlx-community/Llama-3.1-8B-Instruct-4bit")
response = generate(model, tokenizer, prompt="Hello, world", max_tokens=100)
print(response)
```
llama.cpp (๋ช ๋ น์ด 5๊ฐ):
```bash
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make LLAMA_METAL=1
wget https://huggingface.co/ggml-org/models/resolve/main/llama-3.1-8b-q4.gguf
./main -m llama-3.1-8b-q4.gguf -p "Hello, world"
```
๋ฒค์น๋งํฌ: ๋์ผ ๋ชจ๋ธ, ์ธ ํ๋ ์์ํฌ, M5 Pro 64GB
| ๋ชจ๋ธ | Ollama tok/s | MLX tok/s | llama.cpp tok/s |
|---|---|---|---|
| Llama 3.3 8B Q4 | 48 | 62 | 52 |
| Llama 3.3 8B Q8 | 38 | 48 | 40 |
| Llama 3.3 70B Q4 | 10 | 14 | 11 |
| Mistral Small Q4 | 52 | 66 | 55 |
| Phi-4 Q4 | 58 | 72 | 60 |
MLX๋ ๋ค์ดํฐ๋ธ Metal ์ต์ ํ๋ก ์ธํด 15~25% ๋น ๋ฆ ๋๋ค. ์ด๊ธฐ ๋ฒค์น๋งํฌ์ด๋ฉฐ ํ๋ ์์ํฌ ๊ฐ์ ์ด ์์๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋: ๋์ผ ๋ชจ๋ธ, ์ธ ํ๋ ์์ํฌ (M5 Pro 64GB)
| ๋ชจ๋ธ | Ollama RAM | MLX RAM | llama.cpp RAM |
|---|---|---|---|
| Llama 3.3 8B Q4 | 5.2 GB | 4.8 GB | 5.0 GB |
| Llama 3.3 70B Q4 | 43 GB | 41 GB | 42 GB |
| Mistral Small Q4 | 4.6 GB | 4.3 GB | 4.4 GB |
MLX๋ ํตํฉ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ก ์ธํด ๋์ผ ๋ชจ๋ธ์์ Ollama๋ณด๋ค 5~10% ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋น ๋ฏํ ํ๊ฒฝ(16GB, 36GB)์์๋ ์ด ์ฐจ์ด๊ฐ ๋ชจ๋ธ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋์ง ์ค์์ผ๋ก ๋์ด๊ฐ๋์ง๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
์์ฌ๊ฒฐ์ ๋งคํธ๋ฆญ์ค: ์ธ์ ๋ฌด์์ ์ฌ์ฉํ ๊น
- 1๋ง ์์ํ๋ ๊ฒฝ์ฐ
Why it matters: Ollama โ 2๋ถ ์ค์น, ์ฆ์ ์๋ํฉ๋๋ค. - 2Python ์ฑ ๊ฐ๋ฐ ์
Why it matters: MLX โ ๋ค์ดํฐ๋ธ Python, ์ต๊ณ ์๋. - 3REST API๊ฐ ํ์ํ ๊ฒฝ์ฐ
Why it matters: Ollama โ ๋ด์ฅ API ์๋ฒ ์ ๊ณต. - 4Mac์์ ํ์ธํ๋ ์
Why it matters: MLX โ LoRA ์ง์์ด ์๋ ์ ์ผํ ์ต์ . - 5ํฌ๋ก์ค ํ๋ซํผ ํ๋ก์ ํธ
Why it matters: llama.cpp โ Mac + Linux + Windows์์ ๋์ผํ ์ฝ๋ ์คํ. - 6
- 7์ต๊ณ ์๋๊ฐ ํ์ํ ๊ฒฝ์ฐ
Why it matters: MLX โ ๋์๋ณด๋ค 15~25% ๋น ๋ฆ. - 8ํฌ๊ท ๋ชจ๋ธ ์ฌ์ฉ ์
Why it matters: llama.cpp โ ๊ฐ์ฅ ํฐ GGUF ๋ชจ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
๊ฐ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ง ๋ง์์ผ ํ ๋
Ollama๋ฅผ ์ฌ์ฉํ์ง ๋ง์์ผ ํ ๊ฒฝ์ฐ:
โข ํ์ธํ๋์ด ํ์ํ ๊ฒฝ์ฐ (๋ฏธ์ง์)
โข ๋ง์ง๋ง ํ ๋ฐฉ์ธ์ ์๋๊น์ง ํ์ํ ๊ฒฝ์ฐ (MLX๋ณด๋ค 15~25% ๋๋ฆผ)
โข ์์ ํ ์ฌ์ฉ์ ์ ์ ์์ํ๊ฐ ํ์ํ ๊ฒฝ์ฐ (์ ํ๋ ์ ์ด)
MLX๋ฅผ ์ฌ์ฉํ์ง ๋ง์์ผ ํ ๊ฒฝ์ฐ:
โข ํฌ๋ก์ค ํ๋ซํผ ๋ฐฐํฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ (macOS ์ ์ฉ)
โข Python์ ์ต์ํ์ง ์์ ๊ฒฝ์ฐ
โข ๊ธฐ๋ณธ REST API๊ฐ ํ์ํ ๊ฒฝ์ฐ (๋ณ๋ ๋ํ ํ์)
โข ํ๋ก๋์ ์์ ๋น์ ๋ชจ๋ธ์ด ํ์ํ ๊ฒฝ์ฐ (๋ ์ ์ ์ ํ์ง)
llama.cpp๋ฅผ ์ฌ์ฉํ์ง ๋ง์์ผ ํ ๊ฒฝ์ฐ:
โข ์ํด๋ฆญ ๊ฒฝํ์ ์ํ๋ ๊ฒฝ์ฐ (๋น๋ ํ์)
โข ํ์ธํ๋์ด ํ์ํ ๊ฒฝ์ฐ (๋ฏธ์ง์)
โข ์ง์ ๋ชจ๋ธ ๋ค์ด๋ก๋๋ฅผ ๊ด๋ฆฌํ๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ
์ฌ๋ฌ ํ๋ ์์ํฌ๋ฅผ ๋์์ ์ฌ์ฉํ ์ ์์ต๋๊น?
์ โ ์ถฉ๋ํ์ง ์์ต๋๋ค. ์ธ ๊ฐ์ง ๋ชจ๋ ์ค์นํ์ญ์์ค. ์ผ๋ฐ์ ์ธ ํจํด: ์ผ์ ์ฌ์ฉ์๋ Ollama, ์๋๊ฐ ์ค์ํ ์์ ์๋ MLX, Ollama/MLX์ ์๋ ๋ชจ๋ธ์๋ llama.cpp. ์ธ ๊ฐ์ง ๋ชจ๋ ๋์ผํ ๊ธฐ๋ฐ ๋ชจ๋ธ์ ๊ณต์ ํฉ๋๋ค(ํฌ๋งท๋ง ๋ค๋ฆ).
์ด๋ ํ๋ ์์ํฌ๊ฐ ๊ฐ์ฅ ๋น ๋ฆ ๋๊น?
MLX์ด๋ฉฐ, Apple Silicon์์ Ollama๋ณด๋ค 15~25% ๋น ๋ฆ ๋๋ค. llama.cpp๋ Ollama์ ๋น์ทํ ์์ค์ ๋๋ค. ์๋ ์ฐจ์ด๋ ๋ํ ๋ชจ๋ธ(70B ์ด์)์์๋ง ์ฒด๊ฐ๋๋ฉฐ, 8B ๋ชจ๋ธ์์๋ ์ธ ๊ฐ์ง ๋ชจ๋ ์ถฉ๋ถํ ๋น ๋ฆ ๋๋ค.
๋์ค์ ํ๋ ์์ํฌ๋ฅผ ๋ฐ๊ฟ ์ ์์ต๋๊น?
์. ์ค๋ Ollama๋ฅผ ์ค์นํ๊ณ ๋ด์ผ MLX๋ก ์ ํํ ์ ์์ต๋๋ค. ๋ชจ๋ธ์ ํธํ๋ฉ๋๋ค(ํฌ๋งท๋ง ๋ค๋ฆ). ์ข ์์ฑ์ด ์์ต๋๋ค.
MLX๋ Python ์ ์ฉ์ ๋๊น?
MLX๋ Python ๋ค์ดํฐ๋ธ API๋ฅผ ๊ฐ๊ณ ์์ง๋ง, subprocess๋ HTTP ์๋ฒ ๋ํผ๋ฅผ ํตํด ๋ค๋ฅธ ์ธ์ด์์๋ ํธ์ถํ ์ ์์ต๋๋ค. Python์์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
Ollama์ GUI๊ฐ ์์ต๋๊น?
Ollama ์์ฒด๋ CLI ์ ์ฉ์ ๋๋ค. ์ฑํ ์ธํฐํ์ด์ค๋ฅผ ์ํด Open-WebUI ๊ฐ์ ์คํ์์ค ํ๋ก ํธ์๋๋ฅผ ์ฌ์ฉํ์ญ์์ค.
Ollama์ MLX๋ฅผ ๋์์ ์คํํ ์ ์์ต๋๊น?
์. ์๋ก ๋ณ๋์ ๋ชจ๋ธ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉฐ ์ถฉ๋ํ์ง ์์ต๋๋ค. ๋ง์ ๊ฐ๋ฐ์๋ค์ด API ์ ๊ทผ์ ์ํด Ollama๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋ ์๋น์ค๋ก ์คํํ๋ฉด์ Python ๋ ธํธ๋ถ ์คํ์๋ MLX๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ถฉ๋ถํ ํตํฉ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ค๋ฉด ๋ ํ๋ ์์ํฌ๊ฐ ๋์์ ๋ฉ๋ชจ๋ฆฌ์ ๋์ผํ ๋ชจ๋ธ์ ์ฌ๋ ค๋ ์๋ ์์ต๋๋ค.
MLX๋ Intel Mac์์ ์๋ํฉ๋๊น?
์๋๋๋ค. MLX๋ Apple Silicon(M1 ์ด์) ์ ์ฉ์ผ๋ก ์ ์๋์์ต๋๋ค. Intel Mac ์ฌ์ฉ์๋ Ollama ๋๋ llama.cpp๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ ๊ฐ์ง ๋ชจ๋ Intel์์ ์๋ํ์ง๋ง Metal GPU ๊ฐ์ ์์ด๋ Apple Silicon๋ณด๋ค ํจ์ฌ ๋๋ฆฝ๋๋ค.
๋น์ ๋ชจ๋ธ ์ง์์ด ๊ฐ์ฅ ์ข์ ํ๋ ์์ํฌ๋ ์ด๋ ๊ฒ์ ๋๊น?
Ollama๊ฐ `ollama run llama3.2-vision`์ ํตํด ๊ฐ์ฅ ๊น๋ํ ๋น์ ๋ชจ๋ธ ํตํฉ์ ์ ๊ณตํฉ๋๋ค. MLX๋ ๋น์ ๋ชจ๋ธ์ ์ง์ํ์ง๋ง ์ค์ ์ด ๋ ํ์ํฉ๋๋ค. llama.cpp๋ ๋น์ ์ ์ง์ํ์ง๋ง ๋ณ๋์ llava ์คํ ํ์ผ์ ์ฌ์ฉํฉ๋๋ค. ๋ฉํฐ๋ชจ๋ฌ ์์ ์๋ Ollama๋ก ์์ํ์ญ์์ค.
ํ๋ ์์ํฌ ๋ฒ์ ๋ฐ ์ต์ ์ฑ
โข Ollama: ๋ฒ์ 0.5.x๋ก ํ ์คํธ (2026๋ 5์ ๊ธฐ์ค ์ต์ )
โข MLX: mlx-lm 0.21๋ก ํ ์คํธ
โข llama.cpp: 2026๋ 5์ ๋น๋๋ก ํ ์คํธ
โข ๋ง์ง๋ง ๊ฒ์ฆ: 2026-05-15
โข ํ๋ ์์ํฌ ์ฑ๋ฅ์ ๋งค๋ฌ ๊ฐ์ ๋ฉ๋๋ค โ ์ต์ ์์น๋ฅผ ์ํด ๋ถ๊ธฐ๋ณ๋ก ๋ค์ ๋ฒค์น๋งํฌํ์ญ์์ค