LOCAL_LLM_HYBRID_ROUTING - zero1ne-26/doc GitHub Wiki

Mac Studio ๋กœ์ปฌ LLM + Claude Opus ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ผ์šฐํŒ… ์ „๋žต โ€” ๋…ผ์˜ ์ž๋ฃŒ

โš ๏ธ ์ด ๋ฌธ์„œ๋Š” ๋…ผ์˜ยท๊ฒ€ํ† ์šฉ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์„ค๊ณ„ ๊ฒฐ์ •์— ๋ฐ˜์˜๋œ ๋‚ด์šฉ์ด ์•„๋‹ˆ๋ฉฐ, 7๊ฐœ ์„ค๊ณ„ deliverable์˜ ๋ถˆ๋ณ€์‹์„ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ ์„ ํƒ(claude-opus-4-7 vs claude-sonnet-4-6)์€ SYSTEM_DESIGN ยง15์—์„œ ๋ฏธ๊ฒฐ๋กœ ๋‚จ์•„ ์žˆ์œผ๋ฉฐ, ์ด ๋ฌธ์„œ๋Š” ๋กœ์ปฌ LLM์„ ์„ธ ๋ฒˆ์งธ ํ›„๋ณด๋กœ ์ถ”๊ฐ€ ๊ฒ€ํ† ํ•˜๋Š” ๋ฉ”๋ชจ์ž…๋‹ˆ๋‹ค.

์ž‘์„ฑ์ผ: 2026-05-27 / ๋ชจ๋ธ ์กฐ์‚ฌ ๊ธฐ์ค€: 2026-05-27

ํ˜„์žฌ orchestrator๋Š” Anthropic Claude SDK๋ฅผ ํ†ตํ•ด claude-opus-4-7 ๋˜๋Š” claude-sonnet-4-6์„ ํ˜ธ์ถœํ•œ๋‹ค (SYSTEM_DESIGN ยง15, OSS_INTEGRATION ยง3.3). "Mac Studio ์žฅ๋น„๊ฐ€ ํ™•๋ณด๋˜์–ด ์žˆ๋‹ค๋ฉด ๋กœ์ปฌ LLM์„ ๋„์ž…ํ•ด ๋น„์šฉยท์ง€์—ฐยท์˜คํ”„๋ผ์ธ ๊ฐ€์šฉ์„ฑ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€"๋ฅผ ๊ฒ€ํ† ํ•œ ๋ฉ”๋ชจ. HuggingFace Open LLM Leaderboard, LMSYS Chatbot Arena, ๊ฐ ๊ธฐ๊ด€ ๊ธฐ์ˆ  ๋ณด๊ณ ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ›„๋ณด๊ตฐ์„ ์ •๋ฆฌํ–ˆ๋‹ค.


1. Mac Studio ํ•˜๋“œ์›จ์–ด ์—ญ๋Ÿ‰

Apple Silicon์˜ ํ†ตํ•ฉ ๋ฉ”๋ชจ๋ฆฌ(Unified Memory) ๋Š” CPU์™€ GPU/Neural Engine์ด ๋™์ผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ, LLM ์ถ”๋ก  ์‹œ VRAM ๋ณ‘๋ชฉ ์—†์ด ์ „์ฒด RAM์„ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์ด ๋™๊ธ‰ ๊ฐ€๊ฒฉ๋Œ€ Windows ์›Œํฌ์Šคํ…Œ์ด์…˜(RTX 4090, 24 GB VRAM) ๋Œ€๋น„ ๋กœ์ปฌ LLM ์šด์˜์—์„œ ๊ฐ€์žฅ ํฐ ์ด์ ์ด๋‹ค.

์žฅ๋น„ ํ†ตํ•ฉ ๋ฉ”๋ชจ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ ์‹ค์šฉ LLM ํฌ๊ธฐ ์ƒํ•œ
Mac Studio M4 Max (128 GB) 128 GB ~546 GB/s 70B Q4~Q6 / MoE 122B active-10B
Mac Studio M4 Ultra (192 GB) 192 GB ~800 GB/s 70B Q8 / MoE 397B active-17B (Q3)
Mac Studio M3 Ultra (192 GB) 192 GB 800 GB/s ๋™์ƒ

๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ (2026 ๊ธฐ์ค€):

ํ”„๋ ˆ์ž„์›Œํฌ ํŠน์ง• ๊ถŒ์žฅ ์šฉ๋„
Ollama 0.19+ MLX ๋ฐฑ์—”๋“œ ๋„์ž…, OpenAI ํ˜ธํ™˜ API, Metal ๊ฐ€์† ์šด์˜ ํ™˜๊ฒฝ ๊ธฐ๋ณธ
llama.cpp server Metal ๋ฐฑ์—”๋“œ, GGUF ํ‘œ์ค€, ์ €์ˆ˜์ค€ ํŠœ๋‹ ๊ฐ€๋Šฅ ๊ณ ์„ฑ๋Šฅ ํŠœ๋‹
mlx-lm Apple ์ž์ฒด ํ”„๋ ˆ์ž„์›Œํฌ, ์ตœ์ € ๋ ˆ์ดํ„ด์‹œ ์‹คํ—˜ยทํ”„๋กœํ† ํƒ€์ดํ•‘
MLC-LLM TVM ์ปค๋„, ๊ธด ์ปจํ…์ŠคํŠธ(64K~128K) ์ฒ˜๋ฆฌ ์œ ๋ฆฌ ๊ธด ์ปจํ…์ŠคํŠธ ํ•„์š” ์‹œ

MoE(Mixture of Experts) ๋ชจ๋ธ ์ดํ•ด: MoE ๋ชจ๋ธ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ์œ ๋Š” ์ด ํŒŒ๋ผ๋ฏธํ„ฐ(total) ๊ธฐ์ค€์ด์ง€๋งŒ, ์‹ค์ œ ์—ฐ์‚ฐ(decode ์†๋„)์€ ํ™œ์„ฑ ํŒŒ๋ผ๋ฏธํ„ฐ(active per token) ๊ธฐ์ค€์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Qwen3.6-35B-A3B๋Š” Q4 ๊ธฐ์ค€ ~20 GB๋ฅผ ์ ์œ ํ•˜์ง€๋งŒ decode ์†๋„๋Š” 3B dense ๋ชจ๋ธ ์ˆ˜์ค€์œผ๋กœ ๋น ๋ฅด๋‹ค. ์ด ํŠน์„ฑ์ด MoE๋ฅผ ๋กœ์ปฌ ๋ฐฐํฌ์—์„œ ๋งค๋ ฅ์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ํ•ต์‹ฌ ์ด์œ ๋‹ค.


2. ๋กœ์ปฌ LLM ํ›„๋ณด ๋ชฉ๋ก

2-A. 7Bโ€“14B ๋ฒ”์œ„ โ€” ๋น ๋ฅธ ์ถ”๋ก , ๋‹จ์ˆœยท๋ฃจํ‹ด ํŒ๋‹จ ์ „์šฉ

๋ชจ๋ธ ๊ธฐ๊ด€ Q4 ํŒŒ์ผ ํฌ๊ธฐ ์ฃผ์š” ๋ฒค์น˜๋งˆํฌ ํ•œ๊ตญ์–ด ๋„๊ตฌ ํ˜ธ์ถœ ํŠน์ง•
Qwen3-8B Alibaba ~5 GB MMLU-Pro ~73.8 est โœ… 119๊ฐœ ์–ธ์–ด โœ… thinking mode ์ง€์›, Apache 2.0
Qwen3-14B Alibaba ~10 GB Qwen2.5-32B ๋™๊ธ‰ โœ… 119๊ฐœ ์–ธ์–ด โœ… 14B ํฌ๊ธฐ๋กœ 32B๊ธ‰ ์„ฑ๋Šฅ, Apache 2.0
Phi-4 14B Microsoft ~8.5 GB MMLU 84.8, MATH 80.4% โš ๏ธ ์ œํ•œ์  โœ… ์ˆ˜ํ•™ยท๊ณผํ•™ ํŠนํ™”, ์˜์–ด ์ค‘์‹ฌ
Phi-4-reasoning-plus 14B Microsoft ~8.5 GB MATH 80%+ (GPT-4o-mini ์ดˆ๊ณผ) โš ๏ธ ์ œํ•œ์  โœ… R1 ์Šคํƒ€์ผ CoT ํŒŒ์ธํŠœ๋‹, MIT
DeepSeek-R1-Distill-Qwen-14B DeepSeek ~8.5 GB MATH-500 ~93%+ ์ค‘๊ฐ„ โš ๏ธ ๋ณ„๋„ ์ฒ˜๋ฆฌ R1 671B ์ฆ๋ฅ˜, ์ถ”๋ก  ํŠนํ™”, MIT
DeepSeek-R1-0528-Qwen3-8B DeepSeek ~5 GB AIME 2024 Qwen3-8B ๋Œ€๋น„ +10% ์ค‘๊ฐ„ โš ๏ธ ์ตœ์‹  R1 ์ฆ๋ฅ˜, ์ˆ˜ํ•™ยท์ฝ”๋”ฉ ๊ฐ•์ 

์ด ๋ฒ”์œ„์˜ ํฌ์ง€์…˜: Claude API ๊ฐ€์šฉ ์ƒํ™ฉ์—์„œ๋„ latency ์šฐ์„  ๋‹จ์ˆœ ๋ถ„๋ฅ˜ ์ž‘์—…(zone ์ง„์ž… ์˜๋„ ํŒŒ์•…, ํƒœ๋ธ”๋ฆฟ ์ธํ…ํŠธ ๋‹จ์ˆœ ๋ถ„๊ธฐ)์— ํˆฌ์ž… ๊ฐ€๋Šฅ. ์‘๋‹ต ์‹œ๊ฐ„ โ‰ค1์ดˆ.


2-B. 24Bโ€“35B ๋ฒ”์œ„ โ€” ์ค‘๊ฐ„ ๊ท ํ˜•: ํ’ˆ์งˆ๊ณผ ์†๋„์˜ ๊ต์ฐจ์ 

๋ชจ๋ธ ๊ธฐ๊ด€ ์•„ํ‚คํ…์ฒ˜ Q4 ํŒŒ์ผ ํฌ๊ธฐ ์ฃผ์š” ๋ฒค์น˜๋งˆํฌ ํ•œ๊ตญ์–ด ๋„๊ตฌ ํ˜ธ์ถœ ํŠน์ง•
Mistral Small 3.2 24B Mistral AI Dense ~14 GB MMLU 80.5, HumanEval+ 92.9%, Arena Hard v2 43.1 ์ค‘๊ฐ„ โœ…โœ… agentic ํŒŒ์ดํ”„๋ผ์ธ ํ•จ์ˆ˜ ํ˜ธ์ถœ ํŠนํ™”, Apache 2.0
Gemma 3 27B Google Dense ~16 GB IFEval 90.4%, MATH 89.0%, HumanEval 87.8%, MMLU-Pro 67.5, LMArena ELO 1338 โœ… ๋ฉ€ํ‹ฐ๋ง๊ตฌ์–ผ โœ… ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ(ํ…์ŠคํŠธ+์ด๋ฏธ์ง€), 70Bยท405B ์ดˆ๊ณผ ELO, Apache 2.0
Qwen3-32B Alibaba Dense ~20 GB Qwen2.5-72B ๋™๊ธ‰, MMLU-Pro 65.54 โœ… 119๊ฐœ ์–ธ์–ด โœ… thinking mode, 32B๋กœ 72B๊ธ‰ ์„ฑ๋Šฅ, Apache 2.0
Qwen3-30B-A3B Alibaba MoE (30B/3B active) ~19 GB โ€” โœ… โœ… decode ์†๋„ 3B ์ˆ˜์ค€, Apache 2.0
Qwen3.6-35B-A3B โญ Alibaba MoE (35B/3B active) ~20 GB SWE-bench Verified 73.4%, AIME 2026 92.6%, GPQA Diamond 86.0% โœ… โœ…โœ… agentic ์ฝ”๋”ฉ ํŠนํ™” ์„ค๊ณ„, decode ~44 tok/s (M4 Max), Apache 2.0
Gemma 4 26B-A4B Google MoE (26B/3.8B active) ~15 GB โ€” โœ… โœ… ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ, 256K ์ปจํ…์ŠคํŠธ, Apache 2.0

โญ Qwen3.6-35B-A3B ์ฃผ๋ชฉ ์ด์œ : Gated DeltaNet ์„ ํ˜• ์–ดํ…์…˜ + 256 ์ „๋ฌธ๊ฐ€ ์•„ํ‚คํ…์ฒ˜๋กœ ~20 GB ํŒŒ์ผ์—์„œ AIME 2026 92.6%๋ผ๋Š” 70B ์ดˆ๊ณผ ์ถ”๋ก  ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•œ๋‹ค. MoE ๊ตฌ์กฐ์ƒ decode ์†๋„๊ฐ€ 3B dense ์ˆ˜์ค€์ด๋ผ ์‘๋‹ต ์†๋„์™€ ํ’ˆ์งˆ์ด ๋™์‹œ์— ์šฐ์ˆ˜ํ•œ ํฌ๊ท€ํ•œ ์‚ฌ๋ก€.


2-C. 70Bโ€“72B ๋ฒ”์œ„ โ€” ๋กœ์ปฌ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ตœ๊ณ  ํ’ˆ์งˆ Dense ๋ชจ๋ธ

๋ชจ๋ธ ๊ธฐ๊ด€ Q4 ํŒŒ์ผ ํฌ๊ธฐ ์ฃผ์š” ๋ฒค์น˜๋งˆํฌ ํ•œ๊ตญ์–ด ๋„๊ตฌ ํ˜ธ์ถœ ํŠน์ง•
Llama 3.3 70B Instruct Meta ~40 GB MMLU 86.0% (GPT-4o 85.9% ์ดˆ๊ณผ), IFEval 92.1% (405B 88.6% ์ดˆ๊ณผ), ํ•จ์ˆ˜ ํ˜ธ์ถœ 84.8% โœ… (๋ฒˆ์—ญ๋ณธ ์•ฝํ•™ 1์œ„) โœ…โœ… instruction following ์ตœ๊ฐ•, ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ผ์ด์„ ์Šค
Qwen2.5-72B-Instruct Alibaba ~48 GB MMLU 85+, MATH 80+, MMLU-redux์—์„œ 405B ์ดˆ๊ณผ โœ…โœ… (์›๋ฌธ ์•ฝํ•™ 1์œ„) โœ… ํ•œ๊ตญ์–ด ์›๋ฌธ ์˜คํ”ˆ์†Œ์Šค 1์œ„, Apache 2.0
DeepSeek-R1-Distill-Llama-70B DeepSeek ~43 GB MATH-500 94.5%, AIME 2024 86.7% (R1 671B 79.8% ์ดˆ๊ณผ!), LiveCodeBench 57.5% ์ค‘๊ฐ„ โš ๏ธ ๋ณ„๋„ ์ฒ˜๋ฆฌ ์ฆ๋ฅ˜ ๋ชจ๋ธ์ด teacher ์ดˆ๊ณผํ•œ ์‚ฌ๋ก€, ์ถ”๋ก ยท์ˆ˜ํ•™ ์ตœ๊ฐ•, MIT
Qwen3 72B Alibaba ~45 GB 72B ์ตœ์ƒ์œ„ ์ „๋ฐ˜ ๋ฒค์น˜๋งˆํฌ โœ…โœ… โœ… thinking mode, ์ตœ์‹  ์„ธ๋Œ€, Apache 2.0

192GB ์žฅ๋น„์—์„œ ์†๋„ (70B Q4 ๊ธฐ์ค€): ~12โ€“20 tok/s (M4 Ultra)


2-D. 109Bโ€“123B ๋ฒ”์œ„ โ€” 192GB Ultra์—์„œ MoE ํ™œ์šฉ

๋ชจ๋ธ ๊ธฐ๊ด€ ์•„ํ‚คํ…์ฒ˜ Q4 ํŒŒ์ผ ํฌ๊ธฐ ์ฃผ์š” ๋ฒค์น˜๋งˆํฌ ํ•œ๊ตญ์–ด ๋„๊ตฌ ํ˜ธ์ถœ ํŠน์ง•
Llama 4 Scout Meta MoE (109B/17B active, 16์ „๋ฌธ๊ฐ€) ~58 GB MMLU-Pro 74.3%, GPQA Diamond 57.2%, LMArena ELO 1417 (GPT-4oยทGemini ์ดˆ๊ณผ) โœ… โœ… 10M ํ† ํฐ ์ปจํ…์ŠคํŠธ (์—…๊ณ„ ์ตœ์žฅ), ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ, Llama 4 ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ผ์ด์„ ์Šค
Qwen3.5-122B-A10B โญ Alibaba MoE (122B/10B active) ~74 GB MMLU-Pro 86.1%, GPQA Diamond 85.5%, SWE-bench Verified 72.4%, BFCL-V4 ๋„๊ตฌ ํ˜ธ์ถœ 72.2% (GPT-5 mini 55.5% ์••๋„) โœ… โœ…โœ…โœ… ๋„๊ตฌ ํ˜ธ์ถœ ๋ฒค์น˜๋งˆํฌ ์˜คํ”ˆ์†Œ์Šค 1์œ„, 192GB์—์„œ ~35 tok/s, Apache 2.0

โญ Qwen3.5-122B-A10B ์ฃผ๋ชฉ ์ด์œ : BFCL-V4(Berkeley Function Calling Leaderboard v4) ๋„๊ตฌ ํ˜ธ์ถœ 72.2%๋Š” GPT-5 mini(55.5%)๋ฅผ 30% ์ด์ƒ ์••๋„ํ•œ๋‹ค. MCP tool dispatch๊ฐ€ ํ•ต์‹ฌ์ธ ์ด ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ€์žฅ ์œ ๋ ฅํ•œ ๋‹จ์ผ ๋กœ์ปฌ ๋ชจ๋ธ ํ›„๋ณด๋‹ค. 192GB์—์„œ active 10B ์—ฐ์‚ฐ ๊ธฐ์ค€์œผ๋กœ ~35 tok/s ํ™•๋ณด.


2-E. 192GB ๊ฒฝ๊ณ„์„  MoE โ€” ์ตœ๋Œ€ ํ™œ์šฉ ํ›„๋ณด

๋ชจ๋ธ ๊ธฐ๊ด€ ์•„ํ‚คํ…์ฒ˜ ํŒŒ์ผ ํฌ๊ธฐ ์ฃผ์š” ๋ฒค์น˜๋งˆํฌ ๋น„๊ณ 
DeepSeek V4-Flash DeepSeek MoE (284B/13B active) ~158 GB (Q4) V4-Pro ์ˆ˜์ค€ ์ฝ”๋”ฉยท์ถ”๋ก , 1M ์ปจํ…์ŠคํŠธ 192GB์—์„œ Q4 ์‹คํ–‰ ๊ฐ€๋Šฅ, MIT
Qwen3.5-397B-A17B Alibaba MoE (397B/17B active) ~214 GB (Q4) / ~192 GB (Q3) GPQA Diamond 88.4, AIME 2026 91.3, LiveCodeBench 83.6 Q3 Unsloth UD-Q3_K_XL์œผ๋กœ 192GB ๊ฒฝ๊ณ„์„  ์ ์žฌ ๊ฐ€๋Šฅ. ~5.5 tok/s (Q3) โ€” ์‹ค์‹œ๊ฐ„ ์šฉ๋„ ํ•œ๊ณ„

์ฃผ์˜: Qwen3.5-397B-A17B Q3๋Š” ์›๋ณธ ๋Œ€๋น„ ์ •ํ™•๋„ ์†์‹ค์ด Q4 ๋Œ€๋น„ ํฌ๋‹ค. Unsloth๊ฐ€ ์›๋ณธ ๋Œ€๋น„ 1์  ์ด๋‚ด๋ฅผ ๋ณด์žฅํ•˜์ง€๋งŒ, ๋„๊ตฌ ํ˜ธ์ถœ ์‹ ๋ขฐ์„ฑ์„ ์‹คํ™˜๊ฒฝ์—์„œ ๊ฒ€์ฆํ•ด์•ผ ํ•œ๋‹ค.


2-F. ํ˜„์žฌ ๋กœ์ปฌ ๋ถˆ๊ฐ€ โ€” ์ฐธ๊ณ ์šฉ Frontier ๋ชจ๋ธ

๋ชจ๋ธ ๊ธฐ๊ด€ LMArena ELO ๋กœ์ปฌ ์กฐ๊ฑด ๋น„๊ณ 
Kimi K2.6 Moonshot AI 1456 350 GB+ RAM ํ•„์š” ์˜คํ”ˆ์†Œ์Šค ELO ์ตœ์ƒ์œ„ (2026-05 ๊ธฐ์ค€)
Kimi K2.5 Thinking Moonshot AI 1445 240 GB+ (ultra quant) โ€”
GLM-5.1 Z.AI 1469 API ์ „์šฉ ์˜คํ”ˆ ์›จ์ดํŠธ ๋ฏธ๊ณต๊ฐœ
DeepSeek R1-0528 (671B full) DeepSeek โ€” H200ร—4 ์ด์ƒ ์ฆ๋ฅ˜ ๋ฒ„์ „(8B~70B)์ด ํ˜„์‹ค์  ๋Œ€์•ˆ

3. ํ•œ๊ตญ์–ด ์„ฑ๋Šฅ ๋น„๊ต

์ด ํ”„๋กœ์ ํŠธ๋Š” ํ•œ๊ตญ์–ด operator UI์™€ ํ•œ๊ตญ์–ด zone ํ”Œ๋ ˆ์ด๋ถ์ด ํ•ต์‹ฌ์ด๋‹ค.

์ˆœ์œ„ ๋ชจ๋ธ ํ•œ๊ตญ์–ด ํŠนํ™” ์ˆ˜์ค€ ๊ทผ๊ฑฐ
1 Qwen ์‹œ๋ฆฌ์ฆˆ (2.5/3/3.5) ์ตœ์ƒ ํ•œ๊ตญ์–ด ์•ฝํ•™ ์‹œํ—˜ ์›๋ฌธ ๊ธฐ์ค€ ์˜คํ”ˆ์†Œ์Šค 1์œ„ (Qwen2.5-72B 76.6์ ), 119๊ฐœ ์–ธ์–ด ๋ช…์‹œ ํ•™์Šต
2 Llama 3.x ์‹œ๋ฆฌ์ฆˆ ๋†’์Œ ํ•œ๊ตญ์–ด ์•ฝํ•™ ์‹œํ—˜ ์˜์–ด ๋ฒˆ์—ญ๋ณธ ๊ธฐ์ค€ ์˜คํ”ˆ์†Œ์Šค 1์œ„ (79.3์ ), IFEval 92.1%
3 Gemma 3/4 ์‹œ๋ฆฌ์ฆˆ ๋†’์Œ ๋ฉ€ํ‹ฐ๋ง๊ตฌ์–ผ ํ•™์Šต, ์ปค๋ฎค๋‹ˆํ‹ฐ ํ‰๊ฐ€ ์–‘ํ˜ธ, ๊ตฌ์ฒด์  ๋ฒค์น˜๋งˆํฌ ๋ฏธ๊ณต๊ฐœ
4 Mistral Small 3.x ์ค‘๊ฐ„ ๋‹ค๊ตญ์–ด ์ง€์›์ด๋‚˜ ํ•œ๊ตญ์–ด ํŠนํ™” ๋ฒค์น˜๋งˆํฌ ์—†์Œ
5 Phi-4 ๊ณ„์—ด ์ œํ•œ์  ์˜์–ดยท์ˆ˜ํ•™ ํŠนํ™” ์„ค๊ณ„
6 DeepSeek R1 Distill ์ค‘๊ฐ„ ์ถ”๋ก  ํŠนํ™”, ํ•œ๊ตญ์–ด instruction following์€ ๋ณดํ†ต

4. ์—์ด์ „ํ‹ฑ(Agentic) ์›Œํฌํ”Œ๋กœ ์ ํ•ฉ์„ฑ ์ˆœ์œ„

MCP tool dispatch, JSON ๊ตฌ์กฐํ™” ์ถœ๋ ฅ, ๋‹ค๋‹จ๊ณ„ ๊ณ„ํš ์ˆ˜๋ฆฝ ๊ธฐ์ค€ ์ •๋ ฌ.

์ˆœ์œ„ ๋ชจ๋ธ ๋„๊ตฌ ํ˜ธ์ถœ ์ง€ํ‘œ ์ด์œ 
1 Qwen3.5-122B-A10B BFCL-V4 72.2% ์˜คํ”ˆ์†Œ์Šค ๋„๊ตฌ ํ˜ธ์ถœ ๋ฒค์น˜๋งˆํฌ ์••๋„์  1์œ„
2 Qwen3.6-35B-A3B SWE-bench 73.4% agentic ์ฝ”๋”ฉ ํŠนํ™” ์•„ํ‚คํ…์ฒ˜, 20GB ์ดˆ๊ณ ํšจ์œจ
3 Mistral Small 3.2 24B HumanEval+ 92.9% ํ•จ์ˆ˜ ํ˜ธ์ถœ ํฌ๋งท ์ •์ œ, agentic ํŒŒ์ดํ”„๋ผ์ธ ๊ฒ€์ฆ๋จ
4 Llama 3.3 70B ํ•จ์ˆ˜ ํ˜ธ์ถœ 84.8%, IFEval 92.1% instruction following ์ตœ๊ณ  ์ˆ˜์ค€, ํญ๋„“์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›
5 Qwen3-32B / Qwen3 72B โ€” ํ•œ๊ตญ์–ด + ๋„๊ตฌ ํ˜ธ์ถœ ๊ท ํ˜•

**์ฃผ์˜: DeepSeek R1 ๊ณ„์—ด(์ฆ๋ฅ˜ ํฌํ•จ)**์€ ์ˆ˜ํ•™ยท์ถ”๋ก  ๋ฒค์น˜๋งˆํฌ๋Š” ํƒ์›”ํ•˜์ง€๋งŒ, ๊ธด Chain-of-Thought ์ถ”๋ก  ์ฒด์ธ์œผ๋กœ ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ๋†’๊ณ  structured JSON ์ถœ๋ ฅ์— ๋ณ„๋„ ํŒŒ์‹ฑ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์‹ค์‹œ๊ฐ„ MCP ๋„๊ตฌ ํ˜ธ์ถœ์šฉ์œผ๋กœ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.


5. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ผ์šฐํŒ… ์ „๋žต

Claude Opus API์™€ ๋กœ์ปฌ LLM์„ ํƒœ์Šคํฌ ํŠน์„ฑ์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ์„ ํƒํ•œ๋‹ค.

๋„์ž… ๋ชฉ์ :

๋ชฉ์  ์„ค๋ช…
๋น„์šฉ ์ ˆ๊ฐ ๋‚ฎ์€ ๋ณต์žก๋„ ์š”์ฒญ์˜ 60โ€“80%๋ฅผ ๋กœ์ปฌ๋กœ ์ฒ˜๋ฆฌ โ†’ API ํ˜ธ์ถœ ๋น„์šฉ ๋Œ€ํญ ์ ˆ๊ฐ
์ง€์—ฐ ๋‹จ์ถ• ๋กœ์ปฌ ๋ชจ๋ธ์€ TTFT(Time To First Token) 0.3โ€“0.5์ดˆ, Claude API 1โ€“3์ดˆ

5.1 ๋ผ์šฐํŒ… ๊ฒฐ์ • ๊ธฐ์ค€

complexity๋ฅผ ์œ ์ผํ•œ 1์ฐจ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. Claude API๋Š” ์ƒ์‹œ ๊ฐ€์šฉ ์ƒํƒœ๋กœ ๊ฐ€์ •ํ•˜๋ฏ€๋กœ ๊ฐ€์šฉ ์—ฌ๋ถ€ ์ฒดํฌ๋Š” ์—†๋‹ค.

complexity ์ ์ˆ˜ ์„ ํƒ ๋ชจ๋ธ ์„ค๋ช…
0 (๋‹จ์ˆœ) LOCAL_FAST ๋‹จ์ผ zone ๋‹จ์ˆœ ๋™์ž‘, ๋ฃจํ‹ด ํŒ๋‹จ
1โ€“2 (์ค‘๊ฐ„) LOCAL_BEST ์กฐ๊ฑด ๋ณตํ•ฉ์ด๋‚˜ Claude API ํˆฌ์ž… ์ˆ˜์ค€ ์•„๋‹˜
3+ (๋ณต์žก) + safety high OPUS ๋‹ค์ค‘ tool chain, ๊ตฐ์ค‘ ์ ‘๊ทผ, e-stop ํŒ๋‹จ
3+ (๋ณต์žก) + safety medium/low SONNET ๋‹ค์ค‘ ์กฐ๊ฑด์ด๋‚˜ ๊ณ ์œ„ํ—˜ ์•„๋‹Œ ๊ฒฝ์šฐ

5.2 ๋ชจ๋ธ ์„ ํƒ ๋กœ์ง (์˜์‚ฌ ์ฝ”๋“œ)

# orchestrator/router.py  (illustrative spec)
from enum import Enum

class ModelTier(Enum):
    LOCAL_FAST = "local_fast"  # Qwen3.6-35B-A3B  โ€” ๋‹จ์ˆœ ๋ฃจํ‹ด ํŒ๋‹จ
    LOCAL_BEST = "local_best"  # Qwen3.5-122B-A10B โ€” ๋กœ์ปฌ ์ตœ๊ณ  ํ’ˆ์งˆ
    SONNET     = "sonnet"      # claude-sonnet-4-6
    OPUS       = "opus"        # claude-opus-4-7

def select_model(event: ZoneEvent, ctx: SessionContext) -> ModelTier:
    complexity = estimate_complexity(event, ctx)

    if complexity == 0:
        return ModelTier.LOCAL_FAST
    if complexity <= 2:
        return ModelTier.LOCAL_BEST

    zone = ctx.zone_registry[event.zone_id]
    return ModelTier.OPUS if zone.safety_level == "high" else ModelTier.SONNET

def estimate_complexity(event: ZoneEvent, ctx: SessionContext) -> int:
    score = 0
    score += len(event.overlapping_zones)          # ๊ต์ฐจ zone ์ˆ˜
    score += len(ctx.pending_tool_calls)            # ๋ฏธ์™„๋ฃŒ tool call ์ˆ˜
    score += (1 if ctx.active_sessions > 3 else 0)  # ๋™์‹œ ์„ธ์…˜ ๊ณผ๋ถ€ํ•˜
    return score

5.3 ๋ผ์šฐํŒ… ํ๋ฆ„๋„

MQTT vision/zone/enter
        โ”‚
        โ–ผ
  estimate_complexity()
        โ”‚
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  0    1โ€“2            3+
  โ”‚     โ”‚              โ”‚
LOCAL  LOCAL      safety_level?
FAST   BEST    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
            HIGH            MED / LOW
               โ”‚                 โ”‚
             OPUS             SONNET

        โ”‚ (์–ด๋А ๊ฒฝ๋กœ๋“ )
        โ–ผ
  [๊ฐ€๋“œ๋ ˆ์ผ ๊ณตํ†ต ๊ฒฝ๋กœ โ€” ๋ชจ๋ธ ํ‹ฐ์–ด ๋ฌด๊ด€]
  JSON schema ๊ฒ€์ฆ โ†’ capability whitelist
  โ†’ zone polygon clamp โ†’ velocity clamp
        โ”‚
        โ–ผ
  MCP tool dispatch
  (mcp-robot-adapter / mcp-ha-bridge / mcp-tablet-gateway)

โš ๏ธ ๊ฐ€๋“œ๋ ˆ์ผ 4๋‹จ๊ณ„๋Š” ๋ชจ๋ธ ํ‹ฐ์–ด์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ํ•ญ์ƒ ์‹คํ–‰๋œ๋‹ค. LOCAL ๋ชจ๋ธ ์ถœ๋ ฅ์ด ๊ฐ€๋“œ๋ ˆ์ผ์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋ช…๋ น์€ ํ๊ธฐ๋˜๊ณ  Prometheus ์นด์šดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉฐ, HA ๋ฃฐ ๊ธฐ๋ฐ˜ fallback์ด ํ™œ์„ฑํ™”๋œ๋‹ค.

5.4 ๋ผ์šฐํŒ… ๋ฉ”ํŠธ๋ฆญ ์ถ”์ 

# illustrative: ๋ผ์šฐํŒ… ๊ฒฐ๊ณผ ๊ธฐ๋ก
router_decision_counter.labels(
    tier=selected_tier.value,        # local_fast / local_best / sonnet / opus
    zone_safety=zone.safety_level,   # low / medium / high
    complexity_band=complexity_band, # simple(0) / medium(1-2) / high(3+)
).inc()

6. Claude SDK ์—ฐ๋™ ๋ฐฉ์‹

ํ˜„์žฌ orchestrator๋Š” anthropic SDK๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•œ๋‹ค. ๋กœ์ปฌ LLM ์—ฐ๋™ ์‹œ ๋‘ ๊ฐ€์ง€ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋‹ค.

๊ฒฝ๋กœ A: OpenAI ํ˜ธํ™˜ ๋ž˜ํผ (๊ถŒ์žฅ)

Ollama๊ฐ€ /v1/chat/completions๋ฅผ ๋…ธ์ถœํ•˜๋ฏ€๋กœ openai SDK๋กœ ๋™์ผํ•˜๊ฒŒ ํ˜ธ์ถœํ•œ๋‹ค. LangGraph ๊ทธ๋ž˜ํ”„ ๋…ธ๋“œ์—์„œ provider๋ฅผ ์ถ”์ƒํ™”ํ•˜๋ฉด ์„ค์ •๊ฐ’ ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ Claude API โ†” ๋กœ์ปฌ LLM์„ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

# illustrative: provider ์ถ”์ƒํ™” (LangGraph ๋…ธ๋“œ)
def make_llm_client(tier: ModelTier):
    match tier:
        case ModelTier.LOCAL_FAST:
            from openai import AsyncOpenAI
            return AsyncOpenAI(base_url="http://localhost:11434/v1", api_key="ollama"), \
                   "qwen3.6:35b-a3b"
        case ModelTier.LOCAL_BEST:
            from openai import AsyncOpenAI
            return AsyncOpenAI(base_url="http://localhost:11434/v1", api_key="ollama"), \
                   "qwen3.5:122b-a10b"
        case ModelTier.SONNET:
            import anthropic
            return anthropic.AsyncAnthropic(), "claude-sonnet-4-6"
        case ModelTier.OPUS:
            import anthropic
            return anthropic.AsyncAnthropic(), "claude-opus-4-7"

๊ฒฝ๋กœ B: LiteLLM ํ†ตํ•ฉ ๋ ˆ์ด์–ด

litellm.completion("ollama/qwen3.5:122b-a10b", ...) ํ˜•ํƒœ๋กœ ๋‹จ์ผ ์ธํ„ฐํŽ˜์ด์Šค ์œ ์ง€. ํ”„๋ ˆ์ž„์›Œํฌ ์ข…์†์„ฑ์ด ๋Š˜์–ด๋‚˜๋Š” ๋‹จ์ ์ด ์žˆ์œผ๋‚˜, ๋กœ๊น…ยท๋น„์šฉ ์ถ”์ ยทfallback ๋กœ์ง์„ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.


7. ํ”„๋กฌํ”„ํŠธ ์บ์‹ฑ ๊ณ ๋ ค์‚ฌํ•ญ

ํ˜„์žฌ ์„ค๊ณ„๋Š” ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ + zone ํ”Œ๋ ˆ์ด๋ถ์ด ์•ˆ์ •์ ์ด๋ฏ€๋กœ Anthropic ํ”„๋กฌํ”„ํŠธ ์บ์‹ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค (SYSTEM_DESIGN ยง15). ๋กœ์ปฌ LLM ๊ฒฝ๋กœ์—์„œ ์ฃผ์˜ํ•  ์ :

  • ๋กœ์ปฌ LLM์—๋Š” Anthropic ํ”„๋กฌํ”„ํŠธ ์บ์‹ฑ์ด ์—†๋‹ค. ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ํ† ํฐ์ด ๋งค ํ˜ธ์ถœ๋งˆ๋‹ค ์ฒ˜๋ฆฌ๋œ๋‹ค. ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.
  • Ollama์˜ keep_alive ์˜ต์…˜์œผ๋กœ KV cache๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋ณด์กดํ•˜๋ฉด ์—ฐ์† ํ˜ธ์ถœ ์‹œ ์ผ๋ถ€ ์žฌ์‚ฌ์šฉ ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
  • Claude API ๊ฒฝ๋กœ์—์„œ๋Š” ๊ธฐ์กด๊ณผ ๋™์ผํ•˜๊ฒŒ cache_control: ephemeral ๋ธ”๋ก์„ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ๋์— ๋ถ™์ธ๋‹ค.

8. ๋ฏธ๊ฒฐ ์ด์Šˆ์™€์˜ ์—ฐ๊ด€

SYSTEM_DESIGN ยง15์—์„œ Opus vs Sonnet ๊ฒฐ์ •์ด ๋ฏธ๊ฒฐ๋กœ ๋‚จ์•„ ์žˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ ์ œ์•ˆํ•˜๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ผ์šฐํŒ…์€ ๊ทธ ๊ฒฐ์ •์„ "ํƒœ์Šคํฌ ํŠน์„ฑ์— ๋”ฐ๋ผ ๋„ค ํ‹ฐ์–ด ์ค‘ ํ•˜๋‚˜" ๋กœ ์žฌํ”„๋ ˆ์ด๋ฐํ•œ๋‹ค. ยง15์— ๋‹ค์Œ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค:

  • ๋กœ์ปฌ LLM ๊ฐ€๋“œ๋ ˆ์ผ ๊ฑฐ๋ถ€์œจ ํ—ˆ์šฉ ์ž„๊ณ„๊ฐ’ ํ•ฉ์˜ (์ดˆ๊ธฐ ์ œ์•ˆ: 5% ์ด์ƒ ์‹œ ์ž๋™์œผ๋กœ ์ƒ์œ„ tier ์žฌ์‹œ๋„)
  • COMPLEXITY_THRESHOLD ์ดˆ๊ธฐ๊ฐ’ ํ™•์ • (ํ˜„์žฌ: high โ‰ฅ 3, low โ‰ฅ 1)
  • LOCAL_FAST vs LOCAL_BEST ๋ถ„๊ธฐ ๊ธฐ์ค€ ํ™•์ •
  • Mac Studio ์žฅ๋น„ ์šด์˜ ์ฃผ์ฒด ๋ฐ ๋„คํŠธ์›Œํฌ ๋ฐฐ์น˜ (์˜จ์‚ฌ์ดํŠธ ์ƒ์‹œ ๊ฐ€๋™ ์ „์ œ)
  • ๋ผ์ด์„ ์Šค ๊ฒ€ํ† : Llama 4 Scout์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ผ์ด์„ ์Šค๋กœ ์›”๊ฐ„ ํ™œ์„ฑ ์‚ฌ์šฉ์ž ์ˆ˜ ์ œํ•œ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ

9. ๊ฒฐ๋ก  ๋ฐ ๊ถŒ๊ณ 

ํ•ญ๋ชฉ ๊ถŒ๊ณ 
ํ•˜๋“œ์›จ์–ด Mac Studio M4 Ultra (192 GB) โ€” Qwen3.5-122B Q4 (~74 GB) + Qwen3.6-35B Q4 (~20 GB) ๋™์‹œ ์ ์žฌ ๊ฐ€๋Šฅ
LOCAL_FAST (๋ฃจํ‹ด ํŒ๋‹จ) Qwen3.6-35B-A3B Q4_K_M โ€” agentic ํŠนํ™” MoE, decode 44 tok/s, 20 GB
LOCAL_BEST (๋ณต์žก ๋กœ์ปฌ) Qwen3.5-122B-A10B Q4_K_M โ€” ๋„๊ตฌ ํ˜ธ์ถœ ์˜คํ”ˆ์†Œ์Šค 1์œ„, 35 tok/s, 74 GB
ํ•œ๊ตญ์–ด ์ตœ์šฐ์„  Qwen2.5-72B-Instruct ๋˜๋Š” Qwen3 72B โ€” ํ•œ๊ตญ์–ด ์›๋ฌธ ๋ฒค์น˜๋งˆํฌ 1์œ„ ๊ณ„์—ด
์ถ”๋ก ยท์ˆ˜ํ•™ ๋ณด์กฐ DeepSeek-R1-Distill-Llama-70B โ€” MATH-500 94.5%, ๋‹จ JSON ์ถœ๋ ฅ ๋ณ„๋„ ์ฒ˜๋ฆฌ ํ•„์š”
192GB ํ’€ ํ™œ์šฉ ์‹คํ—˜ Qwen3.5-397B-A17B Q3 โ€” frontier๊ธ‰ ์„ฑ๋Šฅ, 5.5 tok/s ์ˆ˜์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค ํ•œ์ •
์‹คํ–‰ ํ”„๋ ˆ์ž„์›Œํฌ Ollama 0.19+ (MLX ๋ฐฑ์—”๋“œ, Metal ๊ฐ€์†, OpenAI ํ˜ธํ™˜ API)
Claude Opus ๋™๋“ฑ์„ฑ ๋ถˆ๊ฐ€ โ€” ๋กœ์ปฌ ๋ชจ๋ธ์€ ๋ณตํ•ฉ ์ถ”๋ก ยท๊ณ ์•ˆ์ „ ํŒ๋‹จ์—์„œ ์—ฌ์ „ํžˆ ๊ฒฉ์ฐจ. ๊ฐ€๋“œ๋ ˆ์ผ 4๋‹จ๊ณ„๋กœ ๋ณด์™„
์ฆ‰์‹œ ์ ์šฉ ์—ฌ๋ถ€ ๋ฏธ๊ฒฐ โ€” ยง15 ๊ฒฐ์ • ํ›„ propagation ํ•„์š”