ํต์ฌ ์์
- ์ฐ๊ฒฐ๋ ๊ธฐ๊ธฐ์์ ๋ชจ๋ ๋ค์ด๋ก๋ํ์ญ์์ค: Ollama ๋ฐ์ด๋๋ฆฌ, ๋ชจ๋ธ GGUF, ํ ํฌ๋์ด์ ์ค์ , RAG ์์กด์ฑ ํ์ผ
- USB SSD, ๋ด๋ถ ๋คํธ์ํฌ ๊ณต์ , ๋๋ ์์ด๊ฐญ ๋ ธํธ๋ถ์ผ๋ก ์ ์กํ์ญ์์ค. ํด๋ผ์ฐ๋ ๋๊ธฐํ์ ์์กดํ์ง ๋ง์ญ์์ค
OLLAMA_MODELSํ๊ฒฝ ๋ณ์๋ฅผ ์คํ๋ผ์ธ ๋ชจ๋ธ ๋๋ ํฐ๋ฆฌ๋ก ์ค์ ํ์ญ์์ค- Qwen3 14B Q4_K_M(9.5 GB)์ด ์คํ๋ผ์ธ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๊ถ์ฅ๋ฉ๋๋ค. 16 GB ํตํฉ ๋ฉ๋ชจ๋ฆฌ์์ ์คํ ๊ฐ๋ฅํฉ๋๋ค
- NAS ์ฉ๋ ๊ณํ: 7B ๋ชจ๋ธ๋น 20 GB, 14B ๋ชจ๋ธ๋น 50 GB, 32B ๋ชจ๋ธ๋น 100 GB(Q4_K_M ๊ธฐ์ค)
- ๋ฐ์ดํฐ ์ปดํ๋ผ์ด์ธ์ค: ๋ก์ปฌ ์ถ๋ก ์ ๋ชจ๋ธ ์ถ์ฒ์ ๋ฌด๊ดํ๊ฒ ๋ฐ์ดํฐ ๋ ์ง๋์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํฉ๋๋ค
์ฌ์ ์ฒดํฌ๋ฆฌ์คํธ โ ์ฐ๊ฒฐ ํด์ ์ ๋ค์ด๋ก๋
์์ด๊ฐญ ํ๊ฒฝ์ผ๋ก ์ ํํ๊ธฐ ์ ์ ์ฐ๊ฒฐ๋ ๊ธฐ๊ธฐ์์ ๊ฐ ํญ๋ชฉ์ ํ์ธํ์ญ์์ค.
- 1Ollama ๋ฐ์ด๋๋ฆฌ โ ์ด์ ์ฒด์ (Linux x86_64, macOS arm64, Windows)์ ๋ง๋ ๋ฒ์ ์ ollama.com์์ ๋ค์ด๋ก๋ํ์ญ์์ค. โฅ0.3.0 ๋ฒ์ ์ ๊ถ์ฅํฉ๋๋ค.
- 2๋ชจ๋ธ GGUF ํ์ผ โ ์ฐ๊ฒฐ๋ ๊ธฐ๊ธฐ์์
ollama pull qwen2.5:14b-instruct-q4_K_M์ ์คํํ์ญ์์ค. ๋ชจ๋ธ์~/.ollama/models/์ ์บ์๋ฉ๋๋ค. - 3ํ ํฌ๋์ด์ + ์ฑํ ํ ํ๋ฆฟ โ Ollama ์ฌ์ฉ ์ ๋ชจ๋ธ ๋งค๋ํ์คํธ์ ํจ๊ป ํฌํจ๋๋ฏ๋ก ๋ณ๋ ๋ค์ด๋ก๋๊ฐ ํ์ํ์ง ์์ต๋๋ค.
- 4llama.cpp ๋ฐ์ด๋๋ฆฌ (llama.cpp ์ฌ์ฉ ์) โ github.com/ggerganov/llama.cpp/releases์์ ์ฌ์ ์ปดํ์ผ๋ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ค์ด๋ก๋ํ์ญ์์ค.
- 5์๋ฒ ๋ฉ ๋ชจ๋ธ (์คํ๋ผ์ธ RAG์ฉ) โ
ollama pull nomic-embed-text๋๋mxbai-embed-large - 6๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ์ด๋๋ฆฌ (์คํ๋ผ์ธ RAG์ฉ) โ Chroma standalone, Qdrant ๋ฐ์ด๋๋ฆฌ ๋๋ SQLite+sqlite-vss(Python ์ค์น ๋ถํ์)
- 7Python ํ ํ์ผ (Python ๋๊ตฌ ์ฌ์ฉ ์) โ
pip download --no-deps๋ก.whlํ์ผ์ ๋ค์ด๋ก๋ํ์ฌ ์ ์กํ์ญ์์ค. - 8๊ฒ์ฆ ํด์ โ ๊ฐ GGUF ํ์ผ์
sha256sum์ ์คํํ์ฌ ์ ์ก ์ ์์ ์ฌ๋ถ๋ฅผ ํ์ธํ์ญ์์ค.
์ฐ๊ฒฐ๋ ๊ธฐ๊ธฐ์์ ์คํํ ๋ค์ด๋ก๋ ๋ช ๋ น์ด
์ ์ก ์ ์ ์ธํฐ๋ท์ด ์ฐ๊ฒฐ๋ ๊ธฐ๊ธฐ์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ๋ชจ๋ ์คํํ์ญ์์ค. ๋ชจ๋ธ ํ๊ทธ๋ ํ์์ ๋ฐ๋ผ ๋ณ๊ฒฝํ์ญ์์ค.
ollama pull qwen2.5:14b-instruct-q4_K_Mโ 9.5 GB, ๊ถ์ฅ ๊ธฐ๋ณธ๊ฐollama pull qwen2.5:7b-instruct-q4_K_Mโ 5.5 GB, VRAM์ด ์ ์ ๊ธฐ๊ธฐ์ฉollama pull nomic-embed-textโ 274 MB, ์คํ๋ผ์ธ RAG ์๋ฒ ๋ฉ์ฉollama pull deepseek-r1:7bโ 5.5 GB, ์ํยท์ถ๋ก ์ค์ฌ ์ฌ์ฉ ์ฌ๋ก์ฉ- ๋ชจ๋ธ ํ์ผ ์์น: Linux/macOS๋
~/.ollama/models/, Windows๋%USERPROFILE%\.ollama\models - llama.cpp ์ฌ์ฉ ์: HuggingFace์์ GGUF๋ฅผ ์ง์ ๋ค์ด๋ก๋ํ๊ณ ์ ์ก ์ SHA256์ ๊ฒ์ฆํ์ญ์์ค
Ollama ์์ด๊ฐญ ์ํฌํ๋ก
ํ์ผ์ ์คํ๋ผ์ธ ๊ธฐ๊ธฐ๋ก ์ ์กํ ํ ๋ค์ ์ ์ฐจ๋ฅผ ๋ฐ๋ฅด์ญ์์ค.
- 1์ฐ๊ฒฐ๋ ๊ธฐ๊ธฐ์
~/.ollama/๋๋ ํฐ๋ฆฌ ์ ์ฒด๋ฅผ ์คํ๋ผ์ธ ํธ์คํธ์ ๋์ผ ๊ฒฝ๋ก๋ก ๋ณต์ฌํ์ญ์์ค. - 2Ollama ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ค์นํ์ญ์์ค:
chmod +x ollama && sudo mv ollama /usr/local/bin/ - 3๋ชจ๋ธ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ค์ ํ์ญ์์ค:
export OLLAMA_MODELS=/์คํ๋ผ์ธ/ollama/models ๊ฒฝ๋ก - 4์๋ฒ๋ฅผ ์์ํ์ญ์์ค:
ollama serveโ ๋ก๊ทธ์์ ๋คํธ์ํฌ ํธ์ถ ์์ด ์์๋๋์ง ํ์ธํ์ญ์์ค. - 5์คํ๋ผ์ธ ํ ์คํธ:
ollama run qwen2.5:14bโ ์ธ๋ถ URL ์ ์ ์์ด ์ฆ์ ์๋ตํด์ผ ํฉ๋๋ค. - 6LAN ์ ์์ ์ํ ์ ์ฒด ์ธํฐํ์ด์ค ๋ฐ์ธ๋ฉ:
OLLAMA_HOST=0.0.0.0:11434 ollama serve
llama.cpp ์์ด๊ฐญ ์ํฌํ๋ก
llama.cpp๋ ๋ฐ์ด๋๋ฆฌ์ GGUF ํ์ผ๋ง ์์ผ๋ฉด ์์ ํ ๋ ๋ฆฝ ์คํ๋ฉ๋๋ค. ๋ฐํ์ ์์กด์ฑ์ด ์์ต๋๋ค.
- ์ฌ์ ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌ์ GGUF ํ์ผ์ ์คํ๋ผ์ธ ๊ธฐ๊ธฐ๋ก ์ ์กํ์ญ์์ค.
- ์คํ:
./llama-server -m ./qwen2.5-14b-instruct-q4_K_M.gguf --port 8080 --no-mmapํ๋๊ทธ๋ ๋คํธ์ํฌ ๊ณต์ ์์ ์คํ ์ ๋ฉ๋ชจ๋ฆฌ ๋งต I/O๋ฅผ ๋นํ์ฑํํฉ๋๋ค.- NVIDIA GPU์์ ๋ ์ด์ด ์คํ๋ก๋:
--n-gpu-layers 35, Apple Silicon์์ ์ ์ฒด ์คํ๋ก๋:--n-gpu-layers -1 - OpenAI ํธํ API๋
http://localhost:8080/v1์์ ์ ๊ณต๋ฉ๋๋ค. ๋ชจ๋ OpenAI SDK์ ํธํ๋ฉ๋๋ค.
์คํ๋ผ์ธ ๋ชจ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํ NAS ์ฉ๋ ๊ณํ
์๊ท๋ชจ ํ์ ๋ชจ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ํ ํฌ๊ธฐ์ ๋ชจ๋ธ 3~6๊ฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ตฌ๋งค ์ ์ ์คํ ๋ฆฌ์ง๋ฅผ ๊ณํํ์ญ์์ค.
- ๋ชจ๋ธ ์คํ ๋ฆฌ์ง ๊ถ์ฅ NAS: Synology DS923+, 4 TB ๋๋ผ์ด๋ธ 4๊ฐ RAID 5 ๊ตฌ์ฑ(์ฌ์ฉ ๊ฐ๋ฅ ์ฉ๋ ์ฝ 12 TB)
- ๋ชจ๋ธ 2~3๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ต์๊ฐ: 2 TB SSD(๋จ์ผ ๊ธฐ๊ธฐ ๋ฐฐํฌ๋ ํด๋์ฉ ๋๋ผ์ด๋ธ๋ก ์ถฉ๋ถ)
- NFS๋ฅผ ํตํด NAS๋ฅผ ์ถ๋ก ์๋ฒ์ ๋ง์ดํธํ๊ณ
OLLAMA_MODELS๋ฅผ NFS ๊ฒฝ๋ก๋ก ์ค์ ํ์ญ์์ค
| ๋ชจ๋ธ | Q4_K_M ํฌ๊ธฐ | Q8_0 ํฌ๊ธฐ | ํ์ VRAM |
|---|---|---|---|
| Qwen3 7B | 5.5 GB | 8.5 GB | 8 GB |
| Qwen3 14B | 9.5 GB | 15 GB | 12 GB |
| Qwen3 32B | 20.5 GB | 34 GB | 24 GB |
| Qwen3 72B | 46 GB | 75 GB | 48 GB |
| nomic-embed-text | 0.27 GB | 0.5 GB | 1 GB |
๋ฐ์ดํฐ ๋ ์ง๋์ ์ปดํ๋ผ์ด์ธ์ค
๋ง์ ์กฐ์ง์ด ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๋ก์ปฌ์์ ์ฒ๋ฆฌยท๋ณด๊ดํ๋๋ก ์๊ตฌํ๋ ๊ท์ ์ ์ค์ํด์ผ ํฉ๋๋ค. ๋ก์ปฌ ์ถ๋ก ์ ์ด๋ฌํ ์๋ฌด ์ดํ์ ํฌ๊ฒ ๋จ์ํํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ ์ง๋์: ๋ก์ปฌ ์ถ๋ก ์ ๋ชจ๋ธ ์ถ์ฒ์ ๋ฌด๊ดํ๊ฒ ๋ฐ์ดํฐ๊ฐ ์์ฒด ํ๋์จ์ด ๋ฐ์ผ๋ก ๋๊ฐ์ง ์์์ ๋ณด์ฅํฉ๋๋ค. ์ด๋ ๋๋ถ๋ถ์ ์ ์ข ๋ณ ๋ฐ์ดํฐ ๋ ์ง๋์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํฉ๋๋ค.
- ๋ชจ๋ธ ์ถ์ฒ: ๋ชจ๋ธ ๊ณต๊ธ์ ์ฒด์ ๋ฒ์ ์ ๋ฌธ์ํํ๋ฉด ๋ด๋ถ ์ปดํ๋ผ์ด์ธ์ค ๊ฐ์ฌ๊ฐ ์ฉ์ดํด์ง๋๋ค. Qwen3(Alibaba), DeepSeek(DeepSeek AI)์ ๊ด๋ฆฌ ์ฐ์์ฑ์ด ๋ฌธ์ํ๋ ๋ชจ๋ธ์ ์์ ๋๋ค.
- ๊ณต๊ฐ ์๋น์คํ AI: ๋ฐฐํฌ๊ฐ ์ธ๋ถ ์ฌ์ฉ์์๊ฒ ์ ๊ทผ ๊ฐ๋ฅํ ๊ฒฝ์ฐ(์์ ๋ด๋ถ์ฉ์ด ์๋ ๊ฒฝ์ฐ), ํด๋น ๊ดํ ๊ถ์์ ์ ์ฉ๋๋ ํต์ง ์๋ฌด๋ฅผ ํ์ธํ์ญ์์ค. ์ง์๋ง ์ฌ์ฉํ๋ ๋ด๋ถยท์คํ๋ผ์ธ ๋ฐฐํฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฉ ๋ฒ์ ๋ฐ์ ๋๋ค.
- ๋คํธ์ํฌ ๊ฒฉ๋ฆฌ ๊ฒ์ฆ:
iptables๋๋ ๋ฐฉํ๋ฒฝ ๊ท์น์ ์ฌ์ฉํ์ฌ ์ถ๋ก ์๋ฒ์์ ์ธ๋ถ ์ฐ๊ฒฐ์ด ์์์ ํ์ธํ๊ณ ์ปดํ๋ผ์ด์ธ์ค ๊ธฐ๋ก์ผ๋ก ๋ฌธ์ํํ์ญ์์ค. - ๊ฐ์ฌ ๋ก๊ทธ: Ollama๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋กฌํํธ-์๋ต ์์ ๊ธฐ๋กํ์ง ์์ต๋๋ค. ๋ด๋ถ ๋ฐ์ดํฐ ๊ฑฐ๋ฒ๋์ค ์ ์ฑ ์ ๋ฐ๋ผ ๋ฏธ๋ค์จ์ด๋ฅผ ์ถ๊ฐํ์ญ์์ค. ๋ก๊ทธ๋ ํญ์ ๋ก์ปฌ์ ์ ์ฅํ๊ณ ํด๋ผ์ฐ๋๋ก ์ ์กํ์ง ๋ง์ญ์์ค.
์คํ๋ผ์ธ RAG ์ค์
์์ ์คํ๋ผ์ธ ๊ฒ์ ์ฆ๊ฐ ์์ฑ(RAG)์๋ ๋ก์ปฌ LLM + ๋ก์ปฌ ์๋ฒ ๋ฉ ๋ชจ๋ธ + ๋ก์ปฌ ๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํ์ํฉ๋๋ค.
- 1์๋ฒ ๋ฉ ๋ชจ๋ธ: ์ฐ๊ฒฐ๋ ๊ธฐ๊ธฐ์์
ollama pull nomic-embed-text๋ฅผ ์คํํ์ญ์์ค. Ollama ๋ชจ๋ธ ๋๋ ํฐ๋ฆฌ์ ๋๋จธ์ง ํ์ผ๊ณผ ํจ๊ป ์ ์กํ์ญ์์ค. - 2๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค: Chroma๋ ๋จ๋ ๋ฐ์ด๋๋ฆฌ๋ก ์คํ ๊ฐ๋ฅํฉ๋๋ค(Python ๋ถํ์). ๋๋ Qdrant ๋ฐ์ด๋๋ฆฌ๋
sqlite-vssํ์ฅ์ด ํฌํจ๋ SQLite๋ฅผ ์ฌ์ฉํ์ญ์์ค. - 3๋ฌธ์ ์์ง: LangChain ๋๋ LlamaIndex๋ฅผ ์คํ๋ผ์ธ ์ํ๋ก ์ฌ์ฉํ์ญ์์ค(์ฐ๊ฒฐ ํด์ ์ ์ ํ ํ์ผ์ ์ค์นํ์ญ์์ค). ๋ฌธ์ ๋ก๋๋ฅผ ๋ก์ปฌ ํ์ผ๋ก ์ง์ ํ๊ณ ์น ํฌ๋กค๋ง์ ํ์ง ๋ง์ญ์์ค.
- 4์ฟผ๋ฆฌ ํ๋ฆ: ๋ฌธ์ โ ๋ก์ปฌ nomic-embed-text ์๋ฒ ๋ฉ โ ๋ก์ปฌ ๋ฒกํฐ DB์์ ์์ k๊ฐ ์ฒญํฌ ๊ฒ์ โ ๋ก์ปฌ Qwen3์ผ๋ก ์ ๋ฌ โ ์๋ต. ์ธ๋ถ ํธ์ถ ์์.
- 5ํ ์คํธ: ์ ์ฒด RAG ์ฟผ๋ฆฌ ์ฌ์ดํด ๋์
tcpdump -i any -n port 443์ผ๋ก HTTPS ํธ๋ํฝ์ด ์๋์ง ํ์ธํ์ญ์์ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
Ollama๋ ์คํ๋ผ์ธ ์คํ ์ ๋คํธ์ํฌ ํธ์ถ์ ํฉ๋๊น?
๊ธฐ๋ณธ์ ์ผ๋ก Ollama๋ ๋ก์ปฌ์ ์บ์๋ ๋ชจ๋ธ์ ์๋นํ ๋ ๋คํธ์ํฌ ํธ์ถ์ ํ์ง ์์ต๋๋ค. ollama.com์ ๋ชจ๋ธ ๋ค์ด๋ก๋ ๋๋ ์
๋ฐ์ดํธ ์์๋ง ์ ์ํฉ๋๋ค. ๋ก์ปฌ ์บ์์ ํจ๊ป OLLAMA_MODELS๋ฅผ ์ค์ ํ๊ณ ollama serve๋ฅผ ์คํํ๋ฉด ์ธ๋ถ ์ฐ๊ฒฐ์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
NAS ๋ง์ดํธ ๊ฒฝ๋ก์์ Qwen3 72B๋ฅผ ์คํํ ์ ์์ต๋๊น?
๊ฐ๋ฅํฉ๋๋ค. ๋ค๋ง ๋ชจ๋ธ ๋ก๋ ์ NFS ์ง์ฐ์ผ๋ก ์ธํด ๋ก๋ฉ ์๊ฐ์ด 10~30์ด ๋ ์์๋ฉ๋๋ค. ๋ก๋ ์๋ฃ ํ ์ถ๋ก ์ฑ๋ฅ์ ์คํ ๋ฆฌ์ง ์๋๊ฐ ์๋ GPU/CPU์ VRAM์๋ง ์์กดํฉ๋๋ค.
์คํ๋ผ์ธ์์ ํ๊ตญ์ด๋ฅผ ์ ์ฒ๋ฆฌํ๋ ๊ฐ์ฅ ์์ ๋ชจ๋ธ์ ๋ฌด์์ ๋๊น?
Qwen3 7B Q4_K_M(VRAM 5.5 GB)์ ๋๋ค. ํ๊ตญ์ด๋ฅผ ๋ค์ดํฐ๋ธ ํ ํฌ๋์ด์ ๋ก ์ฒ๋ฆฌํ๋ฉฐ, RTX 3060์์ 50~80 tok/s๋ก ์ผ๊ด๋ ์๋ต์ ์์ฑํฉ๋๋ค.
๋ด๋ถ ์คํ๋ผ์ธ ๋ฐฐํฌ์ ๊ท์ ๋ณด์ ํ๊ฐ๊ฐ ํ์ํฉ๋๊น?
์ผ๋ฐ์ ์ผ๋ก ํ์ํ์ง ์์ต๋๋ค. ๋๋ถ๋ถ์ AI ๊ท์ ๋ ๊ณต๊ฐ ์๋น์ค์ ์ ์ฉ๋ฉ๋๋ค. ์ง์๋ง ์ฌ์ฉํ๋ ๋ด๋ถ ๋ฐฐํฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฉ ๋ฒ์ ๋ฐ์ ๋๋ค. ๊ตฌ์ฒด์ ์ธ ์ํฉ์ ๋ํด์๋ ์ปดํ๋ผ์ด์ธ์ค ์ ๋ฌธ๊ฐ์๊ฒ ๋ฌธ์ํ์ญ์์ค.
llama.cpp๋ ์์คํ ์์กด์ฑ ์์ด ์คํ ๊ฐ๋ฅํฉ๋๊น?
Linux์์๋ ์ฌ์ ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌ๊ฐ GLIBC 2.28 ์ด์์ ํ์๋ก ํฉ๋๋ค(Ubuntu 20.04 ์ด์์๋ ํ์ค ํฌํจ). macOS arm64์์๋ ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ ๋ฆฝ ์คํ๋ฉ๋๋ค. Windows CUDA ๋น๋๋ CUDA ๋ฐํ์ DLL์ด ํ์ํฉ๋๋ค.
์์ด๊ฐญ ํ๊ฒฝ์์ ๋ชจ๋ธ์ ์ด๋ป๊ฒ ์ ๋ฐ์ดํธํฉ๋๊น?
์ฐ๊ฒฐ๋ ๊ธฐ๊ธฐ์์ ์ ๋ฐ์ดํธ๋ GGUF๋ฅผ ๋ค์ด๋ก๋ํ๊ณ SHA256 ํด์๋ฅผ ๊ฒ์ฆํ ํ USB/SSD๋ก ์ ์กํ์ฌ ๋ชจ๋ธ ๋๋ ํฐ๋ฆฌ์ ๊ธฐ์กด GGUF๋ฅผ ๊ต์ฒดํ์ญ์์ค. Ollama ์๋ฒ๋ฅผ ์ฌ์์ํ์ฌ ์ ํ์ผ์ ์ธ์์ํค์ญ์์ค.