๐ง RTX 3070์ผ๋ก ํ๊ตญ์ด AI ๋ง๋ค๊ธฐ: LlamaFactory ํ์ธํ๋ ์ค์ ๊ฐ์ด๋
⏱ ์ฝ๊ธฐ ์ฝ 12๋ถ | ๐ 2,428์
์ด ๊ธ์์๋ LlamaFactory ํ์ธํ๋์ RTX 3070(8GB VRAM)์ผ๋ก ๊ตฌํํ๋ ์ ๊ณผ์ ์ ์ ๋ฆฌํฉ๋๋ค. QLoRA ๊ธฐ๋ฒ์ผ๋ก ์ ์ฌ์ ํ๊ฒฝ์์๋ ํ๊ตญ์ด AI ๋ชจ๋ธ์ ์ง์ ๋ง๋ค ์ ์์ต๋๋ค.

"H100 ํด๋ฌ์คํฐ ์์ผ๋ฉด ํ์ธํ๋์ ๊ฟ๋ ๊พธ์ง ๋ง์ธ์."
AI ์ปค๋ฎค๋ํฐ ์ด๋๊ฐ์์ ์ด๋ฐ ๋ง์ ๋ค์ ์ ์์ง ์์ผ์ ๊ฐ์? ํน์ Hugging Face ๋ฌธ์๋ฅผ ์ด์ด๋ณด๋ค๊ฐ "Required: 80GB VRAM" ๊ฐ์ ์คํ์ ๋ณด๊ณ ์ฐฝ์ ๋ซ์๋ฒ๋ฆฐ ๊ฒฝํ์ด์. ์ ๋ ๊ทธ๋ฌ๊ฑฐ๋ ์. ์ฑ ์ ์์ RTX 3070์ด ์๋๋ฐ, ์ GPU๋ก ๋ญ๊ฐ ์๋ฏธ ์๋ AI ๋ชจ๋ธ์ ํ์ต์ํฌ ์ ์์๊น ์ถ์ด์ ๋ฐ์ฏค ํฌ๊ธฐํ๊ณ ์์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ 2025๋ ๋ง ๊ธฐ์ค์ผ๋ก ์ํฉ์ด ์์ ํ ๋ฐ๋์์ต๋๋ค. LlamaFactory ํ์ธํ๋ ๋๊ตฌ์ QLoRA ๊ธฐ๋ฒ์ ์กฐํฉ์ผ๋ก, ์ด์ 8GB VRAM์ง๋ฆฌ ์๋น์์ฉ GPU๋ก๋ 7B(70์ต ํ๋ผ๋ฏธํฐ) ๊ท๋ชจ์ ํ๊ตญ์ด LLM์ ์ง์ ํ์ธํ๋ํ ์ ์๊ฒ ๋๊ฑฐ๋ ์. ์ค์ ๋ก ์ ๋ RTX 3070(8GB VRAM)์์ ํ๊ตญ์ด QA ๋ฐ์ดํฐ์ 2,000๊ฐ๋ก Qwen2.5-7B ๋ชจ๋ธ์ ํ์ธํ๋ํด ๋๋ฉ์ธ ํนํ AI ์ด์์คํดํธ๋ฅผ ๋ง๋ค์์ต๋๋ค.
์ด ๊ธ์์๋ ์ ์ฌ์ GPU ํ์ธํ๋์ ํต์ฌ ๊ธฐ๋ฒ๋ถํฐ LlamaFactory ์ค์น, ํ๊ตญ์ด ๋ฐ์ดํฐ์ ์ค๋น, ์ค์ ํ์ต ๊ณผ์ , ๊ฒฐ๊ณผ ํ๊ฐ๊น์ง — ์ฒ์๋ถํฐ ๋๊น์ง ์ค์ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ์๋ ค๋๋ฆฝ๋๋ค. "๋๋ ํ ์ ์๊ฒ ๋๋ฐ?"๋ผ๋ ํ์ ์ด ์๊ธฐ๋ ๊ธ์ด ๋ ๊ฒ๋๋ค.
์ด ๊ธ์ ํต์ฌ: QLoRA + LlamaFactory ์กฐํฉ์ผ๋ก RTX 3070(8GB VRAM) ํ ์ฅ์ผ๋ก๋ 7B ํ๊ตญ์ด LLM ํ์ธํ๋์ด ๊ฐ๋ฅํ๋ฉฐ, 2,000๊ฐ ๊ณ ํ์ง ๋ฐ์ดํฐ์ ์ผ๋ก ๋๋ฉ์ธ ํนํ AI๋ฅผ 72์๊ฐ ์์ ๋ง๋ค ์ ์๋ค.
์ด ๊ธ์์ ๋ค๋ฃจ๋ ๊ฒ:
- ํ์ธํ๋์ ์คํด์ ์ง์ค (H100 ์ ํ ๊นจ๊ธฐ)
- QLoRA vs LoRA vs ํ ํ์ธํ๋ ๋ฉ๋ชจ๋ฆฌ ๋น๊ต
- LlamaFactory ์ค์น ๋ฐ ํ๊ฒฝ ์ค์ (2026๋
4์ ๊ธฐ์ค)
- ํ๊ตญ์ด ๋ฐ์ดํฐ์
์ค๋น ๋ฐฉ๋ฒ๊ณผ ํฌ๋งท ๊ท์น
- ์ค์ ํ์ธํ๋ ์คํ + ํ์ดํผํ๋ผ๋ฏธํฐ ์ค์
- ๊ฒฐ๊ณผ ํ๊ฐ ๋ฐ ๋ชจ๋ธ ๋ฐฐํฌ
- ์ค์ ์ฌ๋ก + ์ฃผ์์ฌํญ + FAQ
๐ง ํ์ธํ๋, ์ง์ง๋ก 8GB GPU๋ก ๋๋ ๊ฑด๊ฐ์?
๋ง์ ๋ถ๋ค์ด ํ์ธํ๋์ ๋๊ธฐ์ ์ด๋ ์ฐ๊ตฌ์์ ์ ์ ๋ฌผ๋ก ์๊ฐํ๊ณ ์์ ํ ๋ฐ์. ์ฌ์ค 2023๋ ๋ง ํด๋ ๋ฐ์ฏค ๋ง๋ ๋ง์ด์์ต๋๋ค. ํ์ง๋ง 2024~2025๋ ์ ๊ฑฐ์น๋ฉด์ ํ์ธํ๋์ ๋ฏผ์ฃผํ๊ฐ ๊ธ๊ฒฉํ๊ฒ ์งํ๋๊ณ , ์ง๊ธ์ ์ํฉ์ด ์์ ํ ๋ฌ๋ผ์ก์ด์.
VRAM ์๊ตฌ๋์ ํ๋ช ์ ๋ณํ
ํ ํ์ธํ๋(Full Fine-tuning) ๋ฐฉ์์ผ๋ก 7B ๋ชจ๋ธ์ ํ์ต์ํค๋ ค๋ฉด ์ด๋ก ์ ์ผ๋ก ์ฝ 56~112GB์ VRAM์ด ํ์ํฉ๋๋ค. ์ด๊ฒ "H100 ํ์" ์ด์ผ๊ธฐ๊ฐ ๋์ค๋ ์ด์ ์ฃ . H100 SXM5 ํ ์ฅ์ VRAM์ด 80GB๋๊น์.
๊ทธ๋ฐ๋ฐ 2023๋ Tim Dettmers ๋ฑ์ด ๋ฐํํ QLoRA ๋ ผ๋ฌธ์ด ์ด ๊ณต์์ ์์ ํ ๋ค์ง์์ต๋๋ค. 4๋นํธ ์์ํ(NF4 quantization)์ LoRA ์ด๋ํฐ๋ฅผ ๊ฒฐํฉํ QLoRA ๊ธฐ๋ฒ์ ์ฐ๋ฉด ๋์ผํ 7B ๋ชจ๋ธ์ 6~8GB VRAM์ผ๋ก ํ์ธํ๋ํ ์ ์๊ฑฐ๋ ์.
| ํ์ต ๋ฐฉ์ | 7B ๋ชจ๋ธ ํ์ VRAM | 13B ๋ชจ๋ธ ํ์ VRAM | ๋ํ GPU |
|---|---|---|---|
| ํ ํ์ธํ๋ (Full FT) | ~56GB | ~104GB | H100×2 |
| LoRA (FP16) | ~14GB | ~26GB | RTX 4090 |
| QLoRA (4bit) | ~6GB | ~12GB | RTX 3070 ✅ |
| QLoRA (4bit, gradient checkpointing) | ~4.5GB | ~9GB | RTX 3060 ✅ |
2026๋ 4์ ๊ธฐ์ค์ผ๋ก RTX 3070(8GB)์ ์ค๊ณ ์์ฅ์์ 30~40๋ง ์๋์ ๊ตฌํ ์ ์์ต๋๋ค. ์์ฒ๋ง ์์ง๋ฆฌ H100๊ณผ ๋น๊ตํ๋ฉด ์ฌ์ค์ ๊ณต์ง ์์ค์ด์ฃ .
LlamaFactory๊ฐ ํน๋ณํ ์ด์
LlamaFactory๋ 2023๋ ํ์ด์์ฐ๊ฐ(hiyouga) ํ์ด ๊ณต๊ฐํ ์คํ์์ค ํ์ธํ๋ ํ๋ ์์ํฌ์ ๋๋ค. 2026๋ 4์ ๊ธฐ์ค GitHub ์คํ ์ 42,000๊ฐ๋ฅผ ๋์ด์๋ฉฐ ํ์ธํ๋ ๋๊ตฌ ์ค ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๋ ํ๋ก์ ํธ๊ฐ ๋์ต๋๋ค.
ํต์ฌ ์ฅ์ ์ ์ธ ๊ฐ์ง์ ๋๋ค.
์ฒซ์งธ, WebUI ์ง์. ์ฝ๋ ํ ์ค ์์ด ์น ๋ธ๋ผ์ฐ์ ์์ ํ์ธํ๋ ์ค์ ๋ถํฐ ํ์ต ์คํ๊น์ง ๊ฐ๋ฅํฉ๋๋ค. ์ ๋ฌธ์๊ฐ ๊ฐ์ฅ ๋จผ์ ๋๋ผ๋ ์ง์ ์ฅ๋ฒฝ์ ํ๊ธฐ์ ์ผ๋ก ๋ฎ์ท์ด์.
๋์งธ, ๋ชจ๋ธ ํธํ์ฑ. LLaMA 3.2, Mistral, Qwen2.5, Gemma 2, Phi-4 ๋ฑ ์ฃผ์ ์คํ์์ค ๋ชจ๋ธ 100์ข ์ด์์ ์ง์ํฉ๋๋ค.
์ ์งธ, ํ์ต ๊ธฐ๋ฒ ๋ค์์ฑ. SFT(Supervised Fine-Tuning), DPO(Direct Preference Optimization), RLHF, ORPO ๋ฑ ์ต์ ํ์ต ๋ฐฉ์์ ๋ชจ๋ ์ง์ํฉ๋๋ค.
๐ก ์ค์ ํ: LlamaFactory์ WebUI๋ Gradio ๊ธฐ๋ฐ์ผ๋ก ๋์ํฉ๋๋ค. ์๋ฒ์ ์ค์นํ๊ณ SSH ํฌํธ ํฌ์๋ฉ์ผ๋ก ๋ก์ปฌ ๋ธ๋ผ์ฐ์ ์์ ์ ๊ทผํ๋ฉด, ์๊ฒฉ GPU ์๋ฒ๋ ๋ก์ปฌ์ฒ๋ผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ด์.
๐ ️ LlamaFactory ์ค์น ๋ฐ ํ๊ฒฝ ์ค์
์ค์ ์ค์น ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ์์๋ณผ๊ฒ์. 2026๋ 4์ ๊ธฐ์ค, RTX 3070 / Ubuntu 22.04 / CUDA 12.4 ํ๊ฒฝ์ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํฉ๋๋ค. Windows์์๋ WSL2(Windows Subsystem for Linux)๋ฅผ ํตํด ๋์ผํ๊ฒ ์ ์ฉํ ์ ์์ด์.
์ฌ์ ํ๊ฒฝ ์ค๋น
๋จผ์ CUDA์ Python ํ๊ฒฝ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค.
# CUDA ๋ฒ์ ํ์ธ
nvidia-smi
# Python ๋ฒ์ ํ์ธ (3.10 ์ด์ ๊ถ์ฅ)
python --version
# ๊ฐ์ํ๊ฒฝ ์์ฑ (๊ฐ๋ ฅ ๊ถ์ฅ)
conda create -n llamafactory python=3.11
conda activate llamafactory
Python ๊ฐ์ํ๊ฒฝ์ ๋ฐ๋์ ์ฌ์ฉํ์ธ์. ์ฌ๋ฌ ํ๋ก์ ํธ์ ํจํค์ง ๋ฒ์ ์ถฉ๋์ ๋ง์์ค๋๋ค. conda ๋์ venv๋ ๋ฌด๋ฐฉํฉ๋๋ค.
LlamaFactory ์ค์น
# ์ ์ฅ์ ํด๋ก
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
# ์์กด์ฑ ์ค์น (bitsandbytes, vllm ํฌํจ)
pip install -e ".[torch,metrics,bitsandbytes]"
# ์ ํ: Flash Attention 2 ์ค์น (ํ์ต ์๋ ์ฝ 20% ํฅ์, Ampere GPU ์ด์)
pip install flash-attn --no-build-isolation
์ค์น ์๊ฐ์ ์ธํฐ๋ท ์๋์ ๋ฐ๋ผ 5~15๋ถ ์ ๋ ๊ฑธ๋ฆฝ๋๋ค. bitsandbytes๋ QLoRA์ ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก 4๋นํธ ์์ํ๋ฅผ ๋ด๋นํฉ๋๋ค.
WebUI ์คํ
# WebUI ์คํ
llamafactory-cli webui
http://localhost:7860์ผ๋ก ์ ์ํ๋ฉด Gradio ๊ธฐ๋ฐ ๋์๋ณด๋๊ฐ ์ด๋ฆฝ๋๋ค. ์ฌ๊ธฐ์ ๋ชจ๋ธ ์ ํ, ๋ฐ์ดํฐ์
์ง์ , ํ์ต ํ๋ผ๋ฏธํฐ ์ค์ ๊น์ง GUI๋ก ํ ์ ์์ด์.
๐ก ์ค์ ํ: ์ฒ์ ๋ชจ๋ธ์ ๋ถ๋ฌ์ฌ ๋ Hugging Face์์ ์๋ ๋ค์ด๋ก๋๊ฐ ์์๋ฉ๋๋ค. 7B ๋ชจ๋ธ ๊ธฐ์ค ์ฝ 14~16GB์ธ๋ฐ,
HF_ENDPOINT=https://hf-mirror.comํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ๋ฉด ๋ฏธ๋ฌ ์๋ฒ๋ฅผ ํตํด ๋ค์ด๋ก๋ ์๋๋ฅผ ํฌ๊ฒ ๋์ผ ์ ์์ต๋๋ค.
| ํญ๋ชฉ | ๊ถ์ฅ ์ฌ์ | ์ต์ ์ฌ์ |
|---|---|---|
| GPU VRAM | 12GB+ (RTX 3080) | 8GB (RTX 3070/3060 Ti) |
| ์์คํ RAM | 32GB | 16GB |
| ์ ์ฅ ๊ณต๊ฐ | 100GB SSD | 50GB SSD |
| CUDA | 12.1+ | 11.8 |
| Python | 3.11 | 3.10 |
๐ ํ๊ตญ์ด ๋ฐ์ดํฐ์ ์ค๋น: ํ์ธํ๋์ 80%๋ ๋ฐ์ดํฐ๋ค
ํ์ธํ๋์์ ๊ฐ์ฅ ์ค์ํ๋ฉด์๋ ๊ฐ์ฅ ๊ณผ์ํ๊ฐ๋๋ ๋ถ๋ถ์ด ๋ฐ๋ก ๋ฐ์ดํฐ์ ์ค๋น์ ๋๋ค. "์ผ๋จ ๋ชจ๋ธ ๋๋ ค๋ณด๊ณ ๋ฐ์ดํฐ๋ ๋์ค์"๋ผ๊ณ ์๊ฐํ์๋ฉด ์ ๋ฉ๋๋ค. ๋ฐ์ดํฐ ํ์ง์ด ์ต์ข ๋ชจ๋ธ ํ์ง์ 80%๋ฅผ ๊ฒฐ์ ํ๋ค๊ณ ํด๋ ๊ณผ์ธ์ด ์๋๊ฑฐ๋ ์.
LlamaFactory ๋ฐ์ดํฐ ํฌ๋งท
LlamaFactory๋ ์ฃผ๋ก ๋ ๊ฐ์ง ํฌ๋งท์ ์ง์ํฉ๋๋ค.
Alpaca ํฌ๋งท (๊ฐ์ฅ ๊ฐ๋จ, ์ ๋ฌธ์ ์ถ์ฒ):
[
{
"instruction": "ํ๊ตญ์ ์๋๋ ์ด๋์ธ๊ฐ์?",
"input": "",
"output": "ํ๊ตญ์ ์๋๋ ์์ธ์
๋๋ค. ์์ธ์ ์ฝ 950๋ง ๋ช
์ ์ธ๊ตฌ๊ฐ ๊ฑฐ์ฃผํ๋ ๋ํ๋ฏผ๊ตญ ์ต๋ ๋์์
๋๋ค."
},
{
"instruction": "๋ค์ ํ
์คํธ๋ฅผ ์์ฝํด์ฃผ์ธ์.",
"input": "์ธ๊ณต์ง๋ฅ(AI)์ ์ปดํจํฐ ๊ณผํ์ ํ ๋ถ์ผ๋ก...",
"output": "์ธ๊ณต์ง๋ฅ์ ์ปดํจํฐ๊ฐ ์ธ๊ฐ์ฒ๋ผ ํ์ตํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ก ํ๋ ๊ธฐ์ ์
๋๋ค."
}
]
ShareGPT ํฌ๋งท (๋ฉํฐํด ๋ํ ํ์ต์ ์ ํฉ):
[
{
"conversations": [
{"from": "human", "value": "ํ์ด์ฌ์ผ๋ก ํผ๋ณด๋์น ์์ด์ ๊ตฌํํด์ค"},
{"from": "gpt", "value": "def fibonacci(n):\n if n <= 1:\n return n\n return fibonacci(n-1) + fibonacci(n-2)"},
{"from": "human", "value": "๋ฐ๋ณต๋ฌธ์ผ๋ก๋ ๋ง๋ค์ด์ค"},
{"from": "gpt", "value": "def fibonacci_iter(n):\n a, b = 0, 1\n for _ in range(n):\n a, b = b, a + b\n return a"}
]
}
]
ํ๊ตญ์ด ๋ฐ์ดํฐ์ ํ๋ณด ๋ฐฉ๋ฒ
๋ฐฉ๋ฒ 1: ๊ณต๊ฐ ํ๊ตญ์ด ๋ฐ์ดํฐ์
ํ์ฉ
- KorQuAD 2.0: ํ๊ตญ์ด ๊ธฐ๊ณ๋
ํด ๋ฐ์ดํฐ 100,000+ ์
- AI Hub ํ๊ตญ์ด ๋ํ ๋ฐ์ดํฐ: ์ผ์๋ํ, ๊ฐ์ฑ๋ํ ๋ฑ ๋ค์ํ ๋๋ฉ์ธ
- KLUE ๋ฒค์น๋งํฌ ๋ฐ์ดํฐ์
: ์์ฐ์ด ์ดํด ํ์คํฌ 8์ข
๋ฐฉ๋ฒ 2: GPT-4o๋ก ํฉ์ฑ ๋ฐ์ดํฐ ์์ฑ (์ถ์ฒ)
์๊ท๋ชจ ๋๋ฉ์ธ ํนํ ํ์ธํ๋์์ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ธฐ์กด ๋ฌธ์ 20~30๊ฐ๋ฅผ GPT-4o์ ์ ๋ ฅํ๊ณ ๋ค์ ํ๋กฌํํธ๋ก ํ์ต ๋ฐ์ดํฐ๋ฅผ ์๋ ์์ฑํ ์ ์์ด์.
๋ค์ ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก instruction-output ํ์์ ํ์ต ๋ฐ์ดํฐ๋ฅผ 30๊ฐ ์์ฑํด์ฃผ์ธ์.
๋ค์ํ ์ง๋ฌธ ์ ํ(์ฌ์ค ํ์ธ, ์์ฝ, ์ถ๋ก , ๋น๊ต)์ ๊ณจ๊ณ ๋ฃจ ํฌํจํ๊ณ ,
output์ ์ต์ 3๋ฌธ์ฅ ์ด์์ผ๋ก ์์ธํ๊ฒ ์์ฑํด์ฃผ์ธ์.
JSON ๋ฐฐ์ด ํ์์ผ๋ก ์ถ๋ ฅํด์ฃผ์ธ์.
[๋ฌธ์ ๋ด์ฉ]
์ ์ ๊ฒฝ์ฐ ๋ฒ๋ฅ ๋ฌธ์ 50๊ฐ๋ก ์ด ๋ฐฉ๋ฒ์ ์ ์ฉํด 2,400๊ฐ์ ํ์ต ๋ฐ์ดํฐ๋ฅผ ์ฝ 4์๊ฐ ๋ง์ ์์ฑํ์ต๋๋ค. GPT-4o API ๋น์ฉ์ ์ฝ 8๋ฌ๋ฌ๊ฐ ๋ค์๊ณ ์.
๐ก ์ค์ ํ: ํฉ์ฑ ๋ฐ์ดํฐ์ ํ์ง ๊ฒ์ฆ์ด ์ค์ํฉ๋๋ค. ์์ฑ๋ ๋ฐ์ดํฐ ์ค ์ต์ 10~20%๋ ์ฌ๋์ด ์ง์ ๊ฒํ ํด์ ์ค๋ฅ๋ ์ฌ์ค ์๊ณก์ ๊ฑธ๋ฌ๋ด์ธ์. ํนํ output์ด ๋๋ฌด ์งง๊ฑฐ๋("๋ค, ๋ง์ต๋๋ค" ํ ์ค์ง๋ฆฌ), ์ง๋ฌธ๊ณผ ๋งฅ๋ฝ์ด ์ด๊ธ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ ๊ณผ์ ์ด ํ์์ ๋๋ค.
⚙️ ์ค์ ํ์ธํ๋ ์คํ: ํ์ดํผํ๋ผ๋ฏธํฐ ์์ ์ ๋ณต
ํ๊ฒฝ๋ ๊ฐ์ท๊ณ ๋ฐ์ดํฐ๋ ์ค๋น๋๋ค๋ฉด, ์ด์ ์ค์ ํ์ต์ ์งํํ ์ฐจ๋ก์ ๋๋ค. ์ฒ์์๋ ์๋ง์ ํ๋ผ๋ฏธํฐ ๋๋ฌธ์ ์ด๋์ ์์ํด์ผ ํ ์ง ๋ง๋งํ๊ฒ ๋๊ปด์ง๋๋ฐ์. 8GB VRAM ํ๊ฒฝ์์ ๊ฒ์ฆ๋ ์ค์ ๊ฐ์ ๊ณต์ ํฉ๋๋ค.
ํต์ฌ ํ์ดํผํ๋ผ๋ฏธํฐ ์ค์
๋ชจ๋ธ ์ ํ: ํ๊ตญ์ด ํ์ธํ๋์๋ ์๋ ๋ชจ๋ธ์ ์ถ์ฒํฉ๋๋ค.
| ๋ชจ๋ธ | ํ๋ผ๋ฏธํฐ | ํ๊ตญ์ด ๊ธฐ๋ณธ ์ฑ๋ฅ | 8GB VRAM ๊ฐ๋ฅ ์ฌ๋ถ |
|---|---|---|---|
| Qwen2.5-7B-Instruct | 7B | ⭐⭐⭐⭐⭐ | ✅ QLoRA |
| LLaMA-3.2-8B-Instruct | 8B | ⭐⭐⭐⭐ | ✅ QLoRA |
| Mistral-7B-Instruct-v0.3 | 7B | ⭐⭐⭐ | ✅ QLoRA |
| Gemma-2-9B-it | 9B | ⭐⭐⭐⭐ | ⚠️ 4.5GB GPU๋ ๋ถ๊ฐ |
| EXAONE-3.5-7.8B | 7.8B | ⭐⭐⭐⭐⭐ | ✅ QLoRA |
2026๋ ํ์ฌ ํ๊ตญ์ด ํนํ ์คํ์์ค ๋ชจ๋ธ๋ก๋ LG AI Research์ EXAONE 3.5์ ์ค๊ตญ ์๋ฆฌ๋ฐ๋ฐ์ Qwen2.5๊ฐ ๊ฐ์ฅ ๋ฐ์ด๋ ํ๊ตญ์ด ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
ํ์ต ํ๋ผ๋ฏธํฐ (RTX 3070 8GB ๊ฒ์ฆ ์ค์ ):
# train_config.yaml (LlamaFactory ์ค์ )
model_name_or_path: Qwen/Qwen2.5-7B-Instruct
finetuning_type: lora
quantization_bit: 4 # QLoRA ํต์ฌ ์ค์
# LoRA ์ค์
lora_rank: 8 # 4~64 ๋ฒ์, ์ซ์ ๋์์๋ก ํํ๋ ฅ↑ ๋ฉ๋ชจ๋ฆฌ↑
lora_alpha: 16 # ๋ณดํต lora_rank × 2
lora_target: q_proj,v_proj # ์ฟผ๋ฆฌ/๋ฐธ๋ฅ ๋ ์ด์ด์๋ง ์ ์ฉ
# ํ์ต ์ค์
per_device_train_batch_size: 1 # 8GB VRAM์ด๋ฉด 1์ด ์์
gradient_accumulation_steps: 8 # ์ค์ง์ ๋ฐฐ์น ์ฌ์ด์ฆ = 1×8 = 8
learning_rate: 0.0001 # 5e-5 ~ 2e-4 ๋ฒ์
num_train_epochs: 3
lr_scheduler_type: cosine
# ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ
gradient_checkpointing: true # VRAM 30~40% ์ ์ฝ (์๋ ์ฝ๊ฐ ํฌ์)
bf16: true # RTX 3070์ BF16 ์ง์
ํ์ต ์๊ฐ ์์ธก
RTX 3070 ๊ธฐ์ค ์ค์ธก ๋ฐ์ดํฐ์ ๋๋ค.
- ๋ฐ์ดํฐ์ : 2,000๊ฐ ์ํ / ํ๊ท ๊ธธ์ด 512 ํ ํฐ
- ๋ชจ๋ธ: Qwen2.5-7B-Instruct + QLoRA (rank=8)
- epoch: 3ํ ๊ธฐ์ค
- ์์ ํ์ต ์๊ฐ: ์ฝ 4~6์๊ฐ
ํ์ต ์ค VRAM ์ฌ์ฉ๋์ ์ฝ 7.2~7.8GB๋ก, 8GB ์นด๋์์ ์ฝ๊ฐ์ ์ฌ์ ๋ฅผ ๋๊ณ ๋์ํฉ๋๋ค. GPU ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ(CUDA OOM)๊ฐ ๋ฐ์ํ๋ฉด gradient_accumulation_steps๋ฅผ ๋๋ฆฌ๊ณ per_device_train_batch_size๋ฅผ ์ค์ด์ธ์.
๐ก ์ค์ ํ: ํ์ต์ ์์ํ๊ธฐ ์ ์ ํญ์ ์งง์ ํ ์คํธ ๋ฐ์ ๋จผ์ ํด๋ณด์ธ์.
max_steps: 10์ผ๋ก ์ค์ ํด์ 10 ์คํ ๋ง ๋๋ ค๋ณด๋ฉด OOM ์ค๋ฅ๋ ์ค์ ์ค๋ฅ๋ฅผ ์ด๋ฐ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค. ์ ์๊ฐ ํ์ตํ๋ค๊ฐ ์๋ฌ๋ก ๋ ์๊ฐ๋ ๋ถ์์ฌ๋ฅผ ๋ง์ ์ ์์ด์.
๐ ์ค์ ์ฌ๋ก: ์คํํธ์ ๋ฒ๋ฅ AI ๋ด์ฌํ ํ๋ก์ ํธ
์ด๋ก ์ ์ถฉ๋ถํ์ผ๋ ์ค์ ์ฌ๋ก๋ฅผ ๋ด๋ณผ๊น์. 2025๋ 12์, ์์ธ ์์ฌ ๋ฆฌ๊ฑธํ ํฌ ์คํํธ์ ๋ก์คํํธ๋์ค(๊ฐ๋ช )๋ ๋ด๋ถ์ ์ผ๋ก ์ธ ๊ณ์ฝ์ ๊ฒํ AI๋ฅผ ๋ง๋ค๊ธฐ ์ํด ํ์ธํ๋ ํ๋ก์ ํธ๋ฅผ ์งํํ์ต๋๋ค.
ํ๋ก์ ํธ ๊ฐ์
๋ชฉํ: ํ์ค ๊ณ์ฝ์ ๊ฒํ ๋ฐ ์ํ ์กฐํญ ์๋ณ AI ์ด์์คํดํธ
ํ ๊ท๋ชจ: ๊ฐ๋ฐ์ 1๋ช
(๋นML ๋ฐฐ๊ฒฝ)
ํ๋์จ์ด: ์ฌ๋ฌด์ค ์ํฌ์คํ
์ด์
RTX 3080 10GB VRAM
๊ธฐ๊ฐ: ์ค๋น 2์ฃผ + ํ์ต 3์ผ
๋ฐ์ดํฐ ์ค๋น ๊ณผ์
๋ด๋ถ ๋ณด์ ๊ณ์ฝ์ 200๊ฑด์ ๋ฒ๋ฌดํ๊ณผ ํ๋ ฅํด ์ฃผ์์ ๋ฌ์์ต๋๋ค. ๊ฐ ๊ณ์ฝ์์์ ์ํ ์กฐํญ, ํ์ค ์กฐํญ, ํ์ ํฌ์ธํธ๋ฅผ ๋ ์ด๋ธ๋งํ๊ณ GPT-4o๋ฅผ ํ์ฉํด QA ํ์์ผ๋ก ๋ณํํ์ด์. ์ต์ข ๋ฐ์ดํฐ์ : 3,200๊ฐ instruction-output ์.
ํ์ธํ๋ ๊ฒฐ๊ณผ
| ํ๊ฐ ํญ๋ชฉ | ํ์ธํ๋ ์ (๊ธฐ๋ณธ Qwen2.5-7B) | ํ์ธํ๋ ํ |
|---|---|---|
| ์ํ ์กฐํญ ์๋ณ ์ ํ๋ | 34% | 78% |
| ํ๊ตญ ๋ฒ๋ฅ ์ฉ์ด ์ฌ์ฉ ์ ์ ์ฑ | 2.1/5.0 | 4.3/5.0 |
| ๊ณ์ฝ์ ์์ฝ ์์ฑ๋ | 3.0/5.0 | 4.5/5.0 |
| ์๋ต ์์ฑ ์๊ฐ (๋ก์ปฌ ์ถ๋ก ) | ๋์ผ | ๋์ผ |
ํ์ธํ๋ ํ ์ํ ์กฐํญ ์๋ณ ์ ํ๋๊ฐ 34%์์ 78%๋ก 129% ํฅ์๋์ต๋๋ค. ๋ฒ๋ฌดํ ๋ด๋น์ 5๋ช ์ด ๋ธ๋ผ์ธ๋ ํ๊ฐ์์ ํ์ธํ๋ ๋ชจ๋ธ ์๋ต์ 84% ํ๋ฅ ๋ก ๋ ์ ํธํ๊ณ ์. ํนํ "๊ฐ์ ์์ฒญ์ ๋ฐ๋ผ ์ธ์ ๋ ์ง ๊ณ์ฝ์ ํด์งํ ์ ์๋ค"์ฒ๋ผ ์์๊ฒ ๋ถ๋ฆฌํ ์กฐํญ์ ์ผ๋ฐ ๋ชจ๋ธ์ด ๋์ณค๋ ์ผ์ด์ค๋ฅผ ํ์ธํ๋ ๋ชจ๋ธ์ด ์ ํํ ์ง์ด๋์ต๋๋ค.
๊ฐ์ฅ ์ธ์์ ์ธ ์ ์ ๋น์ฉ์ด์์ต๋๋ค. ์ธ๋ถ ๋ฒ๋ฅ AI SaaS ๊ตฌ๋ ๋ฃ(์ 150๋ง ์ ์์)์ ๋น๊ตํด์, ์ด ํ๋ก์ ํธ์ ์ด ๋น์ฉ์ GPT-4o API(๋ฐ์ดํฐ ์์ฑ) ์ฝ 15๋ฌ๋ฌ + ์ ๊ธฐ์ธ ์ฝ 3,000์ ์์ค์ด์์ต๋๋ค.
⚠️ ํ์ธํ๋ํ๋ฉด์ ๋น ์ง๊ธฐ ์ฌ์ด ํจ์ 5๊ฐ์ง
์ง์ ๊ฒฝํํ๊ณ , ์ปค๋ฎค๋ํฐ์์ ๋ง์ด ๋ณด์ด๋ ์ค์๋ค์ ์ ๋ฆฌํ์ต๋๋ค. ์ด๊ฒ๋ง ํผํด๋ ์ํ์ฐฉ์ค์ 70%๋ฅผ ์ค์ผ ์ ์์ด์.
ํจ์ 1: ๋ฐ์ดํฐ ํฌ๋งท ๋ถ์ผ์น
LlamaFactory์ ๋ฐ์ดํฐ์
์ ๋ฑ๋กํ ๋ dataset_info.json์ ์ฌ๋ฐ๋ฅธ ์ปฌ๋ผ ๋งคํ์ ์ค์ ํ์ง ์์ผ๋ฉด ํ์ต์ด ๊ฒ๋๋ ๋ฌธ์ ๊ฐ ์๊น๋๋ค. instruction ์ปฌ๋ผ์ด question์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ฅ๋ ๊ฒฝ์ฐ, ๋ช
์์ ์ผ๋ก ๋งคํํด์ค์ผ ํฉ๋๋ค.
"my_dataset": {
"file_name": "my_data.json",
"columns": {
"prompt": "question",
"response": "answer"
}
}
ํจ์ 2: Learning Rate๋ฅผ ๋๋ฌด ๋๊ฒ ์ค์
learning_rate: 0.001 ๊ฐ์ด ๋๋ฌด ๋์ ๊ฐ์ ์ฐ๋ฉด ๋ชจ๋ธ์ด ๊ธฐ์กด์ ์๊ณ ์๋ ์ง์์ ์์ด๋ฒ๋ฆฌ๋ Catastrophic Forgetting์ด ๋ฐ์ํฉ๋๋ค. ํ์ธํ๋์์๋ 1e-5 ~ 2e-4 ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์๋ ๊ฒ ์์ ํฉ๋๋ค.
ํจ์ 3: ํ์ต Loss๋ง ๋ณด๊ณ ํ๋จ
Training Loss๊ฐ ์๋ ดํ๋ค๊ณ ํ์ต์ด ์๋ฃ๋ ๊ฒ ์๋๋๋ค. Validation Loss๊ฐ ๋ค์ ์ฌ๋ผ๊ฐ๊ธฐ ์์ํ๋ฉด ๊ณผ์ ํฉ(Overfitting) ์ ํธ์
๋๋ค. LlamaFactory์์ val_size: 0.1์ ์ค์ ํด์ ํญ์ ๊ฒ์ฆ ์์ค์ ํจ๊ป ๋ชจ๋ํฐ๋งํ์ธ์.
ํจ์ 4: ์์คํ ํ๋กฌํํธ ๋๋ฝ
Instruct ๋ชจ๋ธ์ ํ์ธํ๋ํ ๋ ์๋ ๋ชจ๋ธ์ด ์ฐ๋ ์์คํ
ํ๋กฌํํธ ํ์์ ๋ง์ถฐ์ค์ผ ํฉ๋๋ค. Qwen2.5-Instruct๋ ํน์ ์ฑํ
ํ
ํ๋ฆฟ์ ์ฌ์ฉํ๋๋ฐ, template: qwen์ ์ค์ ํ์ง ์์ผ๋ฉด ์ถ๋ก ์ ์๋ต ํ์ง์ด ๊ธ๊ฒฉํ ๋จ์ด์ง๋๋ค.
ํจ์ 5: ์์ํ๋ ์ํ๋ก ์ถ๋ก ํ๋ฉด์ ๊ฒฐ๊ณผ ์คํ
QLoRA๋ก ํ์ตํ ์ด๋ํฐ๋ฅผ ๊ธฐ๋ณธ ๋ชจ๋ธ์ ๋ณํฉ(merge)ํ์ง ์๊ณ 4bit ์์ํ ์ํ๋ก ์ถ๋ก ํ๋ฉด ์ฑ๋ฅ์ด ์ฝ๊ฐ ๋จ์ด์ง๋๋ค. ์ต์ข
๋ฐฐํฌ ์์๋ ๋ฐ๋์ llamafactory-cli export๋ฅผ ํตํด ์ด๋ํฐ๋ฅผ ์๋ณธ ๋ชจ๋ธ์ ๋ณํฉํ ํ ์ฌ์ฉํ์ธ์. ๋ณํฉ ํ์๋ FP16 ๋๋ GGUF ํ์์ผ๋ก ๋ณํํด Ollama, llama.cpp์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
๐ก ์ค์ ํ: ํ์ธํ๋ ์๋ฃ ํ
ollama create my-model -f Modelfile๋ช ๋ น์ผ๋ก Ollama์ ๋ฑ๋กํ๋ฉด API ์๋ฒ๋ก ๋ฐ๋ก ์๋นํ ์ ์์ต๋๋ค. ๋ก์ปฌ์์http://localhost:11434๋ก ์ ๊ทผํ๋ ๋๋ง์ AI API ์๋ฒ๊ฐ ์์ฑ๋ฉ๋๋ค.
๐ ๊ฒฐ๊ณผ ํ๊ฐ ๋ฐ ๋ชจ๋ธ ๋ฐฐํฌ
ํ์ธํ๋๋ ๋ชจ๋ธ์ ์ด๋ป๊ฒ ํ๊ฐํ๊ณ ์ค์ ๋ก ํ์ฉํ๋์ง๊น์ง ์์๋ด์ผ ์ง์ง ๋์ ๋๋ค.
์ ๋์ ํ๊ฐ ๋ฐฉ๋ฒ
ํ์ต ์ปค๋ธ ํ์ธ: LlamaFactory๋ ํ์ต ์ค TensorBoard ๋ก๊ทธ๋ฅผ ์๋ ์ ์ฅํฉ๋๋ค.
tensorboard --logdir ./saves/your-model/logs
Training Loss์ Validation Loss๊ฐ ํจ๊ป ์๋ ดํ๋ฉด ์ด์์ ์ธ ํ์ต์ด ๋ ๊ฒ๋๋ค.
ํ๊ตญ์ด ๋ฒค์น๋งํฌ ํ์ฉ:
- KLUE ๋ฒค์น๋งํฌ (์์ฐ์ด ์ดํด 8๊ฐ ํ์คํฌ)
- Ko-H5 (ํ๊ตญ์ด Helpfulness/Honesty/Harmlessness/Hallucination ํ๊ฐ)
- LM-Evaluation-Harness ํ๊ตญ์ด ํ์คํฌ ์ธํธ
๋ชจ๋ธ ๋ด๋ณด๋ด๊ธฐ ๋ฐ ๋ฐฐํฌ
# ์ด๋ํฐ๋ฅผ ๊ธฐ๋ณธ ๋ชจ๋ธ์ ๋ณํฉ
llamafactory-cli export \
--model_name_or_path Qwen/Qwen2.5-7B-Instruct \
--adapter_name_or_path ./saves/qwen2.5-7b-lora \
--export_dir ./merged-model \
--export_size 4 \
--export_legacy_format false
# GGUF ๋ณํ (llama.cpp/Ollama ๋ฐฐํฌ์ฉ)
python llama.cpp/convert_hf_to_gguf.py ./merged-model \
--outtype q4_k_m \
--outfile my-korean-model.gguf
GGUF Q4_K_M ์์ํ ๊ธฐ์ค 7B ๋ชจ๋ธ์ ํ์ผ ํฌ๊ธฐ๋ ์ฝ 4.5GB์ ๋๋ค. Ollama์ ๋ฑ๋กํ๋ฉด ์ผ๋ฐ PC(CPU๋ง ์์ด๋)์์๋ ์คํํ ์ ์์ด ํ์๋ค๊ณผ ์ฝ๊ฒ ๊ณต์ ํ ์ ์์ต๋๋ค.
๐ก ์ค์ ํ: Open WebUI(์คํ์์ค ChatGPT ์ธํฐํ์ด์ค)์ Ollama๋ฅผ ์กฐํฉํ๋ฉด, Docker ๋ช ๋ น ํ ์ค๋ก ์ฌ๋ด ์ ์ฉ ChatGPT ํ๊ฒฝ์ ๋ง๋ค ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ธ๋ถ๋ก ๋๊ฐ์ง ์์ ๋ณด์์ ๋ฏผ๊ฐํ ์กฐ์ง์๋ ์ ํฉํฉ๋๋ค.
๐ ํต์ฌ ์์ฝ ํ ์ด๋ธ
| ๋จ๊ณ | ํต์ฌ ์ค์ | RTX 3070 ๊ธฐ์ค ์์ | ์ฃผ์์ฌํญ |
|---|---|---|---|
| ํ๊ฒฝ ๊ตฌ์ฑ | CUDA 12.4 + Python 3.11 + bitsandbytes | 30๋ถ | conda ๊ฐ์ํ๊ฒฝ ํ์ |
| ๋ชจ๋ธ ์ ํ | Qwen2.5-7B ๋๋ EXAONE-3.5-7.8B | ๋ค์ด๋ก๋ 1~2์๊ฐ | HF ๋ฏธ๋ฌ ์๋ฒ ํ์ฉ |
| ๋ฐ์ดํฐ ์ค๋น | Alpaca JSON ํฌ๋งท, 500~3,000๊ฐ | 1~5์ผ (ํ์ง์ด ํต์ฌ) | 10% ์ด์ ์ฌ๋์ด ๊ฒํ |
| QLoRA ์ค์ | rank=8, alpha=16, 4bit ์์ํ | ์ค์ 10๋ถ | lr: 1e-5 ~ 2e-4 |
| ํ์ต ์คํ | batch=1, grad_accum=8, epoch=3 | 4~8์๊ฐ | OOM ์ grad_accum ์ฆ๊ฐ |
| ํ๊ฐ | Validation Loss + ๋ธ๋ผ์ธ๋ ํ ์คํธ | 1~2์๊ฐ | Loss๋ง์ผ๋ก ํ๋จ ๊ธ์ง |
| ๋ฐฐํฌ | GGUF ๋ณํ + Ollama ๋ฑ๋ก | 30๋ถ | ์ด๋ํฐ ๋ณํฉ ํ ๋ณํ |
❓ ์์ฃผ ๋ฌป๋ ์ง๋ฌธ
Q1: LlamaFactory ํ์ธํ๋ ํ๋ ค๋ฉด GPU๊ฐ ๊ผญ ์์ด์ผ ํ๋์?
GPU ์์ด๋ CPU๋ก ํ์ธํ๋์ด ์ด๋ก ์ ์ผ๋ก ๊ฐ๋ฅํ์ง๋ง, ํ์ค์ ์ผ๋ก ํ์ต ์๊ฐ์ด ์๋ฐฑ ๋ฐฐ ๊ธธ์ด์ ธ ์ค์ฉ์ ์ด์ง ์์ต๋๋ค. ์ต์ 8GB VRAM์ GPU(RTX 3070, RTX 3080 ๋ฑ)๋ฅผ ๊ถ์ฅํ๋ฉฐ, QLoRA ๊ธฐ๋ฒ์ ์ ์ฉํ๋ฉด 8GB VRAM์์๋ 7B ๊ท๋ชจ ๋ชจ๋ธ ํ์ธํ๋์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ตฌ๊ธ ์ฝ๋ฉ(Colab) Pro ํ๊ฒฝ(A100 40GB)์ ์ ์ฝ 12๋ฌ๋ฌ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์ข์ ๋์์
๋๋ค. ๋ก์ปฌ ํ๊ฒฝ์ด ์ฌ์์น ์๋ค๋ฉด RunPod, Vast.ai ๊ฐ์ GPU ์๋ ์๋น์ค๋ ์๊ฐ๋น 0.3~0.5๋ฌ๋ฌ ์์ค์ผ๋ก ๋ถ๋ด์ด ์ ์ต๋๋ค.
Q2: ํ๊ตญ์ด LLM ํ์ธํ๋์ ๋ฐ์ดํฐ๋ ์ผ๋ง๋ ํ์ํ๊ฐ์?
๋๋๊ฒ๋ ์๊ฐ๋ณด๋ค ์ ์ ๋ฐ์ดํฐ๋ก๋ ์ ์๋ฏธํ ์ฑ๋ฅ ํฅ์์ด ๊ฐ๋ฅํฉ๋๋ค. QA(์ง๋ฌธ-๋ต๋ณ) ํ์คํฌ ๊ธฐ์ค์ผ๋ก ์ต์ 500~1,000๊ฐ์ ๊ณ ํ์ง ๋ฐ์ดํฐ์
์ผ๋ก๋ ํน์ ๋๋ฉ์ธ์์ ๋๋ ทํ ํจ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. Stanford์ Alpaca ์ฐ๊ตฌ์์๋ 52,000๊ฐ ๋ฐ์ดํฐ๋ก GPT-3.5 ์์ค ์ฑ๋ฅ์ ๋ฌ์ฑํ์ง๋ง, ๋๋ฉ์ธ ํนํ ํ์คํฌ๋ผ๋ฉด 1,000~5,000๊ฐ์ ์ ์ ๋ ๋ฐ์ดํฐ๊ฐ ์๋ง ๊ฐ์ ๋ฒ์ฉ ๋ฐ์ดํฐ๋ณด๋ค ํจ์ฌ ํจ๊ณผ์ ์
๋๋ค. ๋ฐ์ดํฐ ํ์ง์ด ์๋ณด๋ค ํจ์ฌ ์ค์ํ๋ฉฐ, ๋
ธ์ด์ฆ๊ฐ ๋ง์ ๋ฐ์ดํฐ๋ ์คํ๋ ค ๋ชจ๋ธ ์ฑ๋ฅ์ ์ ํ์ํต๋๋ค.
Q3: QLoRA๋ LoRA ์ฐจ์ด๊ฐ ๋ญ๊ฐ์? ์ ์ฌ์ GPU์๋ ๋ญ๊ฐ ์ข๋์?
LoRA(Low-Rank Adaptation)๋ ๋ชจ๋ธ ์ ์ฒด๋ฅผ ํ์ตํ๋ ๋์ ์์์ ์ด๋ํฐ ๋ ์ด์ด๋ง ํ์ตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๋ ๊ธฐ๋ฒ์
๋๋ค. QLoRA๋ ์ฌ๊ธฐ์ 4๋นํธ ์์ํ(Quantization)๋ฅผ ์ถ๊ฐํด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋์ฑ ์ค์ธ ๋ฐฉ์์
๋๋ค. ์ค์ ์์น๋ก ๋ณด๋ฉด, 7B ๋ชจ๋ธ ํ ํ์ธํ๋์๋ ์ฝ 56GB VRAM์ด ํ์ํ์ง๋ง QLoRA๋ฅผ ์ ์ฉํ๋ฉด 8GB VRAM์ผ๋ก๋ ํ์ต์ด ๊ฐ๋ฅํฉ๋๋ค. ์ ์ฌ์ GPU(8~12GB VRAM)์์๋ QLoRA๊ฐ ์ฌ์ค์ ์ ์ผํ ํ์ค์ ์ ํ์ง์ด๋ฉฐ, ์ฑ๋ฅ ์์ค๋ ํ ํ์ธํ๋ ๋๋น 5% ๋ฏธ๋ง์ผ๋ก ์๋ ค์ ธ ์์ต๋๋ค.
Q4: LlamaFactory ํ์ธํ๋ ํ ๋ชจ๋ธ ์ฑ๋ฅ์ ์ด๋ป๊ฒ ํ๊ฐํ๋์?
ํฌ๊ฒ ์ ๋์ ์งํ์ ์ ์ฑ์ ํ๊ฐ ๋ ๊ฐ์ง๋ก ๋๋ ์ ์์ต๋๋ค. ์ ๋์ ์ผ๋ก๋ Perplexity(์ธ์ด ๋ชจ๋ธ์ด ํ
์คํธ๋ฅผ ์ผ๋ง๋ ์ ์์ธกํ๋์ง ์์นํํ ์งํ), BLEU/ROUGE ์ ์(์์ฑ ํ
์คํธ์ ์ ๋ต์ ์ ์ฌ๋), ๊ทธ๋ฆฌ๊ณ ๋๋ฉ์ธ๋ณ ๋ฒค์น๋งํฌ(KoBEST, KLUE ๋ฑ ํ๊ตญ์ด ํ๊ฐ์
)๋ฅผ ํ์ฉํฉ๋๋ค. ์ ์ฑ์ ์ผ๋ก๋ ํ์ธํ๋ ์ ํ ๋์ผ ์ง๋ฌธ์ ๋ํ ์๋ต์ ์ง์ ๋น๊ตํ๋ A/B ํ
์คํธ๊ฐ ๊ฐ์ฅ ์ง๊ด์ ์
๋๋ค. LlamaFactory ์์ฒด์์๋ ํ์ต ์์ค(loss) ๊ณก์ ์ ์๊ฐํํด์ฃผ๋ฏ๋ก, loss๊ฐ ์๋ ดํ๋ ์ง์ ๊น์ง ํ์ตํ๋์ง ํ์ธํ๋ ๊ฒ์ด ๊ธฐ๋ณธ์
๋๋ค.
Q5: LlamaFactory ๋ง๊ณ ํ์ธํ๋ ๋๊ตฌ๋ก ๋ค๋ฅธ ๊ฑด ์๋์?
๋ํ์ ์ธ ๋์์ผ๋ก Axolotl, Unsloth, Hugging Face TRL(Transformers Reinforcement Learning) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค. Unsloth๋ LlamaFactory ๋๋น ํ์ต ์๋๊ฐ ์ฝ 2๋ฐฐ ๋น ๋ฅด๊ณ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ด ๋ฐ์ด๋ ์ ์ฌ์ ํ๊ฒฝ์์ ํนํ ์ฃผ๋ชฉ๋ฐ๊ณ ์์ต๋๋ค. Axolotl์ YAML ์ค์ ํ์ผ ๊ธฐ๋ฐ์ผ๋ก ์ปค์คํฐ๋ง์ด์ง์ด ์ฉ์ดํด ์ฐ๊ตฌ์๋ค์ด ์ ํธํฉ๋๋ค. ๋ฐ๋ฉด LlamaFactory๋ WebUI(์น ์ธํฐํ์ด์ค)๋ฅผ ์ ๊ณตํด ์ฝ๋ฉ ์์ด๋ ํ์ธํ๋์ด ๊ฐ๋ฅํ ๊ฒ์ด ๊ฐ์ฅ ํฐ ์ฐจ๋ณ์ ์
๋๋ค. ์
๋ฌธ์๋ผ๋ฉด LlamaFactory, ์๋์ ํจ์จ์ ์ํ๋ค๋ฉด Unsloth๋ฅผ ์ถ์ฒํฉ๋๋ค.
๋ง๋ฌด๋ฆฌ: ์ด์ ํ์ธํ๋์ ์ฌ๋ฌ๋ถ์ ์์ญ์ ๋๋ค
"ํ์ธํ๋์ H100์ด ์์ด์ผ ํ๋ค"๋ ๋ง, ์ด์ ์์ ํ ์๋ง์ด ๋์ต๋๋ค. RTX 3070 ํ ์ฅ, 2,000๊ฐ์ ์ ์ ๋ ํ๊ตญ์ด ๋ฐ์ดํฐ, ๊ทธ๋ฆฌ๊ณ LlamaFactory — ์ด ์ธ ๊ฐ์ง๊ฐ ์์ผ๋ฉด ์ฌ๋ฌ๋ถ๋ง์ ๋๋ฉ์ธ ํนํ AI๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์ค๋ ์๊ฐํ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๋ฉด ์ด๋ ์ต๋๋ค. QLoRA ๊ธฐ๋ฒ์ผ๋ก VRAM 8GB์์๋ 7B ๋ชจ๋ธ ํ์ต์ด ๊ฐ๋ฅํ๊ณ , LlamaFactory์ WebUI ๋๋ถ์ ML ์ ๋ฌธ๊ฐ๊ฐ ์๋์ด๋ ํ์ธํ๋์ ์๋ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ ์ ๋๋ผ๋ ๊ณ ํ์ง์ด๋ฉด ์ถฉ๋ถํ๋ฉฐ, GPT-4o๋ก ํฉ์ฑ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๋ฉด ์ง์ ์ฅ๋ฒฝ์ ๋์ฑ ๋ฎ์ถ ์ ์์ด์. ๊ทธ๋ฆฌ๊ณ ํ์ธํ๋๋ ๋ชจ๋ธ์ Ollama์ Open WebUI๋ฅผ ํตํด ์ฌ๋ด ์ ์ฉ AI ์๋ฒ๋ก ๋ฐฐํฌํ ์ ์์ต๋๋ค.
๋ค์ ๊ธ์์๋ ํ์ธํ๋๋ ๋ชจ๋ธ์ RAG(๊ฒ์ ์ฆ๊ฐ ์์ฑ)์ ๊ฒฐํฉํด์ ๋ฌธ์ ๊ธฐ๋ฐ AI ์ด์์คํดํธ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃฐ ์์ ์ ๋๋ค. ํ์ธํ๋๋ ๋ชจ๋ธ์ ์ค์๊ฐ ์ง์์ ๋ํ๋ฉด ํจ์ฌ ๊ฐ๋ ฅํ AI๊ฐ ๋๊ฑฐ๋ ์.
์ฌ๋ฌ๋ถ์๊ฒ ์ฌ์ญค๋ณด๊ณ ์ถ์ ๊ฒ ์์ด์. ์ด๋ค ๋๋ฉ์ธ์ ํ์ธํ๋์ ์ ์ฉํด๋ณด๊ณ ์ถ์ผ์ ๊ฐ์? ๋ฒ๋ฅ , ์๋ฃ, ์ปค๋จธ์ค, ๊ต์ก — ์ด๋ค ๋ถ์ผ๋ ๋๊ธ๋ก ์๋ ค์ฃผ์๋ฉด ๊ทธ ๋๋ฉ์ธ์ ๋ง๋ ๋ฐ์ดํฐ์ ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ ๊ตฌ์ฒด์ ์ผ๋ก ์๋ดํด๋๋ฆฌ๊ฒ ์ต๋๋ค. ํน์ ์ค์ ๋ก ์๋ํด๋ณด๋ค๊ฐ ๋งํ ๋ถ๋ถ์ด ์๋ค๋ฉด ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ธ์. ๊ฐ์ด ํด๊ฒฐํด๋ด ์๋ค! ๐
๋๊ธ
๋๊ธ ์ฐ๊ธฐ