• Unsloth๋Š” LLM์˜ ํŒŒ์ธํŠœ๋‹ ์†๋„์™€ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ์ด์ž, ์†Œ๋น„์ž ํ•˜๋“œ์›จ์–ด์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ •๋œ GGUF ์–‘์žํ™” ๋ชจ๋ธ์„ ๋ฐฐํฌํ•˜๋Š” ํ”Œ๋žซํผ
  • GPU ์ปค๋„์„ ์ง์ ‘ ์ž‘์„ฑ(handwritten kernel)ํ•˜์—ฌ FA2 ๋Œ€๋น„ ์ตœ๋Œ€ 30๋ฐฐ ๋น ๋ฅธ ํ•™์Šต ์†๋„ ๋‹ฌ์„ฑ
  • HuggingFace์—์„œ Unsloth Dynamic(UD) ํฌ๋งท์œผ๋กœ ๋ฒ„๊ทธ๊ฐ€ ์ˆ˜์ •๋œ ๊ณ ํ’ˆ์งˆ ์–‘์žํ™” ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ์‹ ๋ขฐ ๋ชจ๋ธ ํ—ˆ๋ธŒ
  • Daniel Han ยท Michael Han ํ˜•์ œ๊ฐ€ ์ฐฝ์—…ํ•œ ์Šคํƒ€ํŠธ์—…์œผ๋กœ, fine-tuning ์ธํ”„๋ผ ๋„๊ตฌ๊ฐ€ ๋ณธ์—…์ด๋ฉฐ GGUF ์žฌ๋ฐฐํฌ๋Š” ๋ถ€์ˆ˜์ ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ์—ฌ

ํ•ด๋‹น ๊ฐœ๋…์ด ํ•„์š”ํ•œ ์ด์œ 

  • 70B ์ด์ƒ ๋Œ€ํ˜• ๋ชจ๋ธ์„ ์†Œ๋น„์ž GPU(RTX 4090 ๋“ฑ)์—์„œ fine-tuningํ•˜๋ ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑ โ†’ Unsloth๋กœ ํ•ด๊ฒฐ
  • ๊ณต์‹ ๋ฐฐํฌ ๋ชจ๋ธ์˜ GGUF ๋ณ€ํ™˜ ๊ณผ์ •์—์„œ tool calling ๋ฒ„๊ทธ, chat template ์˜ค๋ฅ˜ ๋“ฑ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ โ†’ Unsloth๊ฐ€ ์ˆ˜์ •๋œ ๋ฒ„์ „์„ ์ง์ ‘ ๋ฐฐํฌ
  • llama.cpp๋กœ ๋กœ์ปฌ LLM์„ ์‹คํ–‰ํ•  ๋•Œ ์–ด๋–ค ์–‘์žํ™” ํฌ๋งท์„ ์„ ํƒํ• ์ง€ ๊ธฐ์ค€์ด ํ•„์š”ํ•จ

AS-IS

์ผ๋ฐ˜ GGUF ์–‘์žํ™” ๋ชจ๋ธ (์˜ˆ: Qwen3.5-35B-A3B ๊ณต์‹ ์›๋ณธ)
โ”œโ”€โ”€ tool calling ํŒŒ์‹ฑ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
โ”œโ”€โ”€ MXFP4 ๋ ˆ์ด์–ด ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ
โ””โ”€โ”€ chat template ๋ถˆ์ผ์น˜๋กœ ์ถ”๋ก  ํ’ˆ์งˆ ์ €ํ•˜

TO-BE

Unsloth ์ˆ˜์ • ๋ฒ„์ „ (unsloth/Qwen3.5-35B-A3B-GGUF)
โ”œโ”€โ”€ tool calling ์ •์ƒ ์ž‘๋™ (--jinja ํ”Œ๋ž˜๊ทธ)
โ”œโ”€โ”€ MXFP4 ๋ ˆ์ด์–ด ์ œ๊ฑฐ๋กœ ์•ˆ์ •์„ฑ ํ–ฅ์ƒ
โ”œโ”€โ”€ UD-Q8_K_XL: 38.7GB, ์ตœ๊ณ  ํ’ˆ์งˆ ์–‘์žํ™”
โ””โ”€โ”€ ์—ฐ๊ตฌ ์ž‘์—…์—์„œ ํ”„๋ก ํ‹ฐ์–ด ๋ชจ๋ธ ์ˆ˜์ค€ ์„ฑ๋Šฅ

Unsloth์˜ ๋‘ ๊ฐ€์ง€ ์—ญํ• 

์—ญํ•  1. LLM Fine-tuning ๊ฐ€์† ๋„๊ตฌ

์ง€ํ‘œ์ผ๋ฐ˜ ๋ฐฉ์‹ (FA2)Unsloth
ํ•™์Šต ์†๋„ (๋‹จ์ผ GPU)1x10x
ํ•™์Šต ์†๋„ (๋ฉ€ํ‹ฐ GPU)1x30x
VRAM ์‚ฌ์šฉ๋Ÿ‰100%10% (90% ์ ˆ๊ฐ)
์ง€์› ๊ธฐ๋ฒ•-LoRA, QLoRA, 4-bit/16-bit
# Unsloth๋กœ Llama3 fine-tuning ์˜ˆ์‹œ
from unsloth import FastLanguageModel
 
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/Meta-Llama-3.1-8B",
    max_seq_length=2048,
    load_in_4bit=True,  # QLoRA
)

์—ญํ•  2. ์ˆ˜์ •๋œ GGUF ๋ชจ๋ธ ์žฌ๋ฐฐํฌ ํ—ˆ๋ธŒ

์Œ์› ์œ ํ†ต์— ๋น„์œ :

๋‹จ๊ณ„์—ญํ• ์Œ์› ๋น„์œ ์‹ค์ œ Unsloth ์˜ˆ์‹œ
์›๋ณธ ์ œ์ž‘๋ชจ๋ธ ๊ฐœ๋ฐœ์‚ฌ๐ŸŽต ์•„ํ‹ฐ์ŠคํŠธ๊ฐ€ ์ŠคํŠœ๋””์˜ค์—์„œ ๋งˆ์Šคํ„ฐ ํŒŒ์ผ ๋…น์ŒQwen์ด PyTorch ํ’€ํ”„๋ฆฌ์‹œ์ „ ๋ชจ๋ธ ๋ฐฐํฌ (~70GB)
๋ณ€ํ™˜ยท์ˆ˜์ •Unsloth ์žฌ๋ฐฐํฌ๐ŸŽง ์œ ํ†ต์‚ฌ๊ฐ€ MP3/FLAC ๋ณ€ํ™˜ + ํŠธ๋ž™ ์˜ค๋ฅ˜ ์ˆ˜์ •GGUF ๋ณ€ํ™˜ + tool calling ๋ฒ„๊ทธ ์ˆ˜์ • + MXFP4 ๋ ˆ์ด์–ด ์ œ๊ฑฐ
ํ’ˆ์งˆ ์„ ํƒ์–‘์žํ™” ๋ ˆ๋ฒจ๐Ÿ“ฑ ์Œ์งˆ ์˜ต์…˜ (128kbps / 320kbps / FLAC)UD-Q4_K_M(19.9GB) / UD-Q8_K_XL(38.7GB)
์ตœ์ข… ์‹คํ–‰์†Œ๋น„์ž ๋กœ์ปฌ ํ™˜๊ฒฝ๐ŸŽต ๋‚ด ์Šค๋งˆํŠธํฐ์—์„œ ์žฌ์ƒllama.cpp๋กœ ์†Œ๋น„์ž GPU์—์„œ ์‹คํ–‰

์ฆ‰, Qwen์ด โ€œ๋งˆ์Šคํ„ฐ ํŒŒ์ผโ€์„ ๋งŒ๋“ค๋ฉด, Unsloth๋Š” โ€œ๋‚ด ๊ธฐ๊ธฐ์—์„œ ๋ฐ”๋กœ ๋“ค์„ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœโ€๋กœ ๋ณ€ํ™˜ํ•ด ์žฌ๋ฐฐํฌํ•˜๋Š” ์œ ํ†ต์‚ฌ ์—ญํ• 

Unsloth ์ ์šฉ ์‹œ Trade-off

Fine-tuning ๋„๊ตฌ๋กœ ์“ธ ๋•Œ

๐Ÿ”ง ์ž๋™์ฐจ ํŠœ๋‹์ƒต์— ๋น„์œ :

ํ•ญ๋ชฉ๋น„์œ ์„ค๋ช…
โœ… ์†๋„ยท๋ฉ”๋ชจ๋ฆฌ์ž๋™ํ™” ์žฅ๋น„ ๋„์ž…์œผ๋กœ ๊ฐ™์€ ๊ณต๊ฐ„์—์„œ 30๋ฐฐ ๋น ๋ฅด๊ฒŒ ์ž‘์—…, ๊ณต๊ฐ„๋„ 90% ๋œ ์”€FA2 ๋Œ€๋น„ ์ตœ๋Œ€ 30x ๋น ๋ฆ„, VRAM 90% ์ ˆ๊ฐ
โœ… ๋น„์šฉ๋ˆ„๊ตฌ๋‚˜ ๋ฌด๋ฃŒ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ณต๊ณต ํŠœ๋‹์ƒต์˜คํ”ˆ์†Œ์Šค ๋ฌด๋ฃŒ (Free tier)
โš ๏ธ ์ •ํ™•๋„ ์†์‹ค๊ฒฝ๋Ÿ‰ ๋ถ€ํ’ˆ์œผ๋กœ ๊ต์ฒดํ•˜๋ฉด ์ฐจ๋Š” ๊ฐ€๋ฒผ์›Œ์ง€์ง€๋งŒ ์›๋ณธ ๊ฐ•๋„๋ณด๋‹ค ์•ฝ๊ฐ„ ๋‚ฎ์Œ4-bit ์–‘์žํ™” fine-tuning์€ ์›๋ณธ ๋Œ€๋น„ ๋ฏธ์„ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ
โš ๏ธ NVIDIA ์ „์šฉํ˜„๋Œ€ยท๊ธฐ์•„ ์ „์šฉ ๊ณต๊ตฌ๋งŒ ๊ฐ–์ถ˜ ์ƒต โ€” BMW ๊ฐ€์ ธ์˜ค๋ฉด ๊ณต์‹ ์ง€์› ์•ˆ ๋จ๊ณต์‹ ์ง€์›์€ NVIDIA GPU (CUDA) ํ•œ์ •, AMD๋Š” ๋น„๊ณต์‹
โš ๏ธ ์ปค์Šคํ…€ ์ปค๋„ ์˜์กด์ง์ ‘ ์ œ์ž‘ํ•œ ํŠน์ˆ˜ ๊ณต๊ตฌ ์‚ฌ์šฉ โ†’ ํŠน์ • ์ฐจ๋Ÿ‰ ์—ฐ์‹ยท๋ชจ๋ธ์—์„œ ๋งž์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ์ง์ ‘ ์ž‘์„ฑํ•œ GPU ์ปค๋„ ์‚ฌ์šฉ โ†’ ํŠน์ • ํ•˜๋“œ์›จ์–ดยทCUDA ๋ฒ„์ „์—์„œ ๋น„ํ˜ธํ™˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ

์žฌ๋ฐฐํฌ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ๋•Œ

๐ŸŽต ์Œ์› ์œ ํ†ต์— ๋น„์œ  (์—ญํ•  2์™€ ๋™์ผ ๋งฅ๋ฝ):

ํ•ญ๋ชฉ๋น„์œ ์„ค๋ช…
โœ… ๋ฒ„๊ทธ ์ˆ˜์ •์›๋ณธ CD์— ์žˆ๋˜ ํŠธ๋ž™ ์ˆœ์„œ ์˜ค๋ฅ˜๋ฅผ ์œ ํ†ต์‚ฌ๊ฐ€ ๊ณ ์ณ์„œ ๋ฐฐํฌ๊ณต์‹ ๋ฒ„์ „๋ณด๋‹ค ์‹ค์ œ ์‚ฌ์šฉ์„ฑ์ด ๋” ์ข‹์€ ๊ฒฝ์šฐ ๋งŽ์Œ
โœ… ์„ ํƒ์ง€ ๋‹ค์–‘๊ฐ™์€ ์•จ๋ฒ”์„ MP3ยทFLACยทCD ๋“ฑ ์›ํ•˜๋Š” ํฌ๋งท์œผ๋กœ ์„ ํƒ ๊ฐ€๋Šฅ2-bit~8-bit๊นŒ์ง€ ํ•˜๋“œ์›จ์–ด์— ๋งž๊ฒŒ ์„ ํƒ ๊ฐ€๋Šฅ
โš ๏ธ ๋น„๊ณต์‹ ๋ฐฐํฌ์•„ํ‹ฐ์ŠคํŠธ ๊ณต์‹ ์Šคํ† ์–ด๊ฐ€ ์•„๋‹Œ ์„œ๋“œํŒŒํ‹ฐ ์œ ํ†ต โ€” ๋ฏฟ์„ ์ˆœ ์žˆ์ง€๋งŒ ๊ณต์‹์€ ์•„๋‹˜Meta/Qwen/Google์˜ ๊ณต์‹ ๋ฆด๋ฆฌ์ฆˆ๊ฐ€ ์•„๋‹˜ โ†’ ๊ฒ€์ฆ ์ฃผ์ฒด๊ฐ€ Unsloth ํŒ€
โš ๏ธ ์—…๋ฐ์ดํŠธ ์‹œ์ฐจ์•จ๋ฒ” ๋ฐœ๋งค ํ›„ ์Œ์› ์„œ๋น„์Šค ๋“ฑ๋ก๊นŒ์ง€ ๋ฉฐ์น  ๊ฑธ๋ฆผ์›๋ณธ ๋ชจ๋ธ ์—…๋ฐ์ดํŠธ ํ›„ Unsloth ๋ฒ„์ „์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๋ฉฐ์น ~์ˆ˜ ์ฃผ ์ง€์—ฐ
โš ๏ธ ์–‘์žํ™” ์†์‹คMP3 128kbps๋Š” ์›๋ณธ FLAC๋ณด๋‹ค ์Œ์งˆ ๋‚ฎ๊ณ , 32kbps๋Š” ์•Œ์•„๋“ฃ๊ธฐ๋„ ํž˜๋“ฆQ4 < Q8 < ์›๋ณธ ์ˆœ์œผ๋กœ ์ •ํ™•๋„ ์ €ํ•˜, ๊ทน๋‹จ์ ์ธ 2-bit๋Š” ํ’ˆ์งˆ ํฌ๊ฒŒ ํ•˜๋ฝ

๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ

Unsloth์˜ ํ•ต์‹ฌ ์ˆ˜์ต์›์€ fine-tuning ์ธํ”„๋ผ ๋„๊ตฌ ํŒ๋งค๋‹ค. GGUF ๋ชจ๋ธ ์žฌ๋ฐฐํฌ๋Š” ์ˆ˜์ต ๋ชจ๋ธ์ด ์•„๋‹ˆ๋ผ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ์—ฌ์ด์ž ๋ธŒ๋žœ๋“œ ์ธ์ง€๋„๋ฅผ ๋†’์ด๋Š” ๋งˆ์ผ€ํŒ… ํšจ๊ณผ๋ฅผ ๊ฒธํ•œ๋‹ค.

ํ‹ฐ์–ด๋น„์šฉ์ฃผ์š” ํŠน์ง•
Free๋ฌด๋ฃŒ (์˜คํ”ˆ์†Œ์Šค)๋‹จ์ผ GPU, 2x ์†๋„, VRAM 60% ์ ˆ๊ฐ
Pro๋น„๊ณต๊ฐœ (๋ฌธ์˜)๋ฉ€ํ‹ฐ GPU(์ตœ๋Œ€ 8๊ฐœ), 2.5x ์†๋„, VRAM 80% ์ ˆ๊ฐ
Enterprise๋น„๊ณต๊ฐœ (๋ฌธ์˜)FA2 ๋Œ€๋น„ 32x ์†๋„, ๋ฉ€ํ‹ฐ ๋…ธ๋“œ, ์ „๋‹ด ์ง€์›

์˜คํ”ˆ์†Œ์Šค Free ํ‹ฐ์–ด๋กœ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์‹ ๋ขฐ๋ฅผ ์–ป๊ณ , ๋Œ€๊ทœ๋ชจ ํ•™์Šต์ด ํ•„์š”ํ•œ ๊ธฐ์—… ๊ณ ๊ฐ์—๊ฒŒ Pro/Enterprise๋ฅผ ํŒ๋งคํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค SaaS ์ „๋žต์ด๋‹ค. ์ฐฝ์—…์ž์ธ DanielยทMichael Han ํ˜•์ œ๋Š” ์ด์ „์—๋„ HyperLeap์ด๋ผ๋Š” ML ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด Microsoft, NVIDIA, NASA ๋“ฑ์—์„œ ์‚ฌ์šฉ๋œ ์ด๋ ฅ์ด ์žˆ๋‹ค.

Unsloth Dynamic (UD) ์–‘์žํ™” ํฌ๋งท

ํฌ๋งทํฌ๊ธฐ๋น„ํŠธ์šฉ๋„
UD-IQ2_XXS9.76 GB2-bit๊ทนํ•œ ์••์ถ•, ์ €์‚ฌ์–‘
UD-Q3_K_M16.7 GB3-bit๊ท ํ˜•
UD-Q4_K_M19.9 GB4-bit๊ถŒ์žฅ (ํ’ˆ์งˆ/ํฌ๊ธฐ ๊ท ํ˜•)
UD-Q4_K_XL20.6 GB4-bit๊ณ ํ’ˆ์งˆ
UD-Q8_K_XL38.7 GB8-bit์ตœ๊ณ  ํ’ˆ์งˆ (Reddit ํฌ์ŠคํŠธ ์‚ฌ์šฉ)

UD ์ ‘๋‘์‚ฌ = Unsloth Dynamic โ€” ํ‘œ์ค€ GGUF๋ณด๋‹ค ์ •ํ™•๋„ ๋†’์€ ์–‘์žํ™”

๋กœ์ปฌ LLM ์‹คํ–‰ ์ปจํ…์ŠคํŠธ (Reddit ํฌ์ŠคํŠธ ๋ถ„์„)

# llama.cpp-rocm (AMD GPU) ์‹คํ–‰ ํŒŒ๋ผ๋ฏธํ„ฐ
--ctx-size 262144      # Qwen3.5์˜ ๋„ค์ดํ‹ฐ๋ธŒ ์ปจํ…์ŠคํŠธ ๊ธธ์ด
--n-gpu-layers 999     # ์ „์ฒด ๋ ˆ์ด์–ด GPU ์˜คํ”„๋กœ๋“œ
--flash-attn auto      # Flash Attention ์ž๋™
--jinja                # Jinja ํ…œํ”Œ๋ฆฟ (tool calling ํ•„์ˆ˜)
--temp 0.6 --top-p 0.90 --top-k 20

์‹ค์ œ ์„ฑ๋Šฅ ๊ฒฐ๊ณผ (Strix Halo ์‹œ์Šคํ…œ, AMD Ryzen AI Max+ 395):

  • Prefill ์†๋„: 600+ t/s
  • ์ƒ์„ฑ ์†๋„: 25-30 t/s
  • 30k ํ† ํฐ ์ปจํ…์ŠคํŠธ์—์„œ 14ํšŒ ์›น ๊ฒ€์ƒ‰ + 4ํšŒ ์ „์ฒด ํŽ˜์ด์ง€ fetch
  • ๋ฆฌ์„œ์น˜ ํ’ˆ์งˆ: GPT-4o, Gemini, Claude ๋“ฑ ํ”„๋ก ํ‹ฐ์–ด ๋ชจ๋ธ๊ณผ ๋™๊ธ‰

์ฐธ๊ณ  ๋ฌธ์„œ