32GB Mac Mini에서 로컬 LLM 운용 한계와 최적화기
35B→9B 다운그레이드로 시스템 안정성을 확보한 아키텍처 리팩토링 실전기
핵심 요약
- 35B MoE 모델이 VRAM 26.3GB를 점유하여 여유 메모리 0.1GB → 텔레그램 플러그인이 10분마다 사망
- 4개 모델 45회 벤치마크 후 qwen3.5:9b 채택 — VRAM 9.2GB로 안정적 운영 확보
- 9B 모델의 추론 약점은 스크립트 계층으로 보완 — "LLM이 판단 → 스크립트 실행" 구조를 뒤집었다
배경
Mac Mini M4 32GB에서 AI 에이전트를 24시간 운영 중이었습니다. 초기 2주간 정상 작동했으나, 텔레그램 플러그인이 반복적으로 종료되는 장애가 발생했습니다.
원인은 단순했습니다. qwen3.5:35b-a3b 모델이 VRAM 26.3GB를 점유하여 가용 메모리가 0.1GB에 불과했고, Swap 스래싱이 8GB를 초과한 것입니다.
본문
장애 중 발견된 5가지 연쇄 이슈
| # | 문제 | 근본 원인 | 심각도 |
|---|---|---|---|
| 1 | gpt-5.4 Fallback 연쇄 실패 | API HTTP 429 4회 연속 | High |
| 2 | Ollama 0토큰 응답 오류 | Thinking 결과가 content로 미인식 | Critical |
| 3 | KEEP_ALIVE 설정 누락 | launchctl reload 시 메모리 상주 리셋 | High |
| 4 | NUM_CTX 적용 실패 | 환경변수 미적용, API 파라미터만 허용 | Medium |
| 5 | 서브에이전트 타임아웃 | 크론(300초) < 에이전트(600초) | High |
핵심: 추론 모델의 <think> 과정이 OpenAI 호환 API(/v1)에서 무시되어 content: ""만 전달. Gateway가 모델 장애로 오판하여 불필요한 Fallback 발동. → 네이티브 API(/api/chat)로 전환하여 해결.
벤치마크: 4개 모델, 45회 테스트
| 모델 | 정확도 | VRAM | 속도 | Free RAM | 판정 |
|---|---|---|---|---|---|
| qwen3.5:35b-a3b | 45/45 | 26.3GB | 18.3 | 0.1GB | ❌ 메모리 한계 |
| qwen3:30b-a3b | 42/45 | 20.4GB | 37.7 | 12.0GB | ❌ thinking 제어 불가 |
| qwen3.5:9b | 39/45 | 9.2GB | 13.5 | 23.0GB | ✅ 채택 |
| deepseek-v2:16b | 33/45 | 19.0GB | 57.1 | 13.0GB | ❌ 정확도 미달 |
9B 모델의 약점을 스크립트로 보완
설계 원칙의 변화: LLM이 판단 → 스크립트가 실행 에서 스크립트가 판단 → LLM은 지시만 실행 으로 전환.
9B 모델의 조건 분기 취약점을 상위 Python 스크립트에서 if/else 로직으로 선처리한 뒤, LLM에는 단방향 지시만 전달하는 구조로 리팩토링했습니다.
9B 모델 전용 운영 5계명: 1. 단일 책임 — 멀티스텝 지시 금지 2. 조건 분기 배제 — if/else는 스크립트로 3. 대용량 파일 직접 전달 금지 — 8KB 이상은 section-extract.py 경유 4. 명시적 도구 호출 — "수정하라" 대신 "write 도구를 호출하여 덮어써라" 5. 반환 규격 강제 — UPDATED 또는 SKIP 문자열만 반환
전환 결과
| 지표 | 이전 (35B) | 이후 (9B) |
|---|---|---|
| 플러그인 비정상 종료 | 10분당 1~2회 | 0회 (무중단) |
| Free RAM | 0.1GB | 6~8GB |
| Swap 메모리 | 8.0GB+ | ~2.0GB |
| 모델 전환 수정 파일 | - | 33개 |
시행착오 / 주의사항
- 벤치마크 점수는 '독립 실행' 전제의 환상입니다. 35B가 만점이었지만 운영 환경에서는 가장 위험한 이웃이었습니다.
- 모델 전환은 파일 교체가 아닌 시스템 리팩토링입니다. 33개 파일 수정이 필요했습니다. 초기 설계부터 모델 의존성을 추상화해야 합니다.
- MoE 모델의 다운로드 크기와 VRAM 점유는 60% 이상 차이날 수 있습니다.
마무리
10분마다 죽는 천재 에이전트보다, 약간 느리더라도 24시간 지시를 완수하는 시스템이 인프라로서 더 큰 가치를 갖습니다. 모델 크기를 줄여 안정성을 확보하고, 지능의 하락분은 스크립트 로직으로 상쇄하는 것이 제한된 하드웨어 환경의 핵심 전략입니다.
댓글
댓글 쓰기