16GB Mac mini에서 Hermes 로컬 AI 라우터를 실험한 뒤, 판단용 LLM은 상시 운영에서 빼기로 했다. 정확도가 더 높았던 Clef Flash도 메모리와 로딩 부담이 컸다. 지금은 명확한 번역과 짧은 요약만 로컬로 보내고, 나머지는 Codex에 맡긴다.
JEV 스타일의 decision model에 관심이 생긴 것이 출발점이었다. 긴 답변을 만드는 대신 선택지 중 하나를 고르는 모델을 Hermes 앞단에 붙여봤다. 요청마다 적절한 실행 모델을 고르면 상위 모델에 보내는 작업을 줄일 수 있겠다고 생각했다.
단어만 보고 분기하면 틀렸다
처음에는 번역·요약·코딩·파일 작업을 규칙으로 나누려 했다. 실제 요청을 넣자 경계가 드러났다. “GitHub 관련 글을 요약해줘”는 저장소 작업이 아니고, “이 코드를 실행하지 말고 설명해줘”도 실행 지시가 아니다.
그래서 명백한 작업만 규칙으로 처리하고, 애매한 요청은 Nimble 9B가 판단하게 했다. 신뢰도가 낮거나 후보 간 점수 차이가 작으면 Codex로 보내도록 했다. 이후 Ollama를 0.35.1로 업데이트하고 Clef Flash도 비교했다.
처음 만든 한국어 32문항에서 모델 자체의 분류는 Nimble 27개, Clef 30개가 맞았다. 앞단 규칙과 결합한 최종 정확도는 둘 다 75%로 낮아졌다. 내가 만든 과도한 규칙이 모델의 판단을 덮어쓰고 있었다.
규칙을 줄인 뒤 경계 사례를 더해 48문항으로 시험했다. 최종 선택은 Nimble 37/48, Clef 42/48이었다. 이 시험에서 신뢰도 기준을 적용한 뒤 도구·이전 맥락이 필요한 요청을 잘못 로컬로 보내는 사례는 없었다. 다만 작은 자체 시험의 결과이므로 모든 요청의 안전성을 보장하는 수치로 보지는 않는다.
정확도보다 먼저 메모리가 찼다
내 장비는 M4 Mac mini, 메모리 16GB 모델이다. 두 후보를 각각 단독으로 올리고 전체 사용량과 외장 SSD에서의 판단 시간을 측정했다.
| 측정 항목 | Nimble | Clef Flash |
|---|---|---|
| 모델 자체 할당량 | 5.74GiB | 10.84GiB |
| 전체 메모리 사용량 | 약 13GB | 약 15GB |
| 남은 메모리 | 2.2~2.9GiB | 85~167MiB |
| 첫 호출, 로딩 포함 | 15.65초 | 28.59초 |
| 로딩 후 판단 중앙값 | 2.39초 | 3.11초 |
전체 메모리 사용량은 다른 앱까지 포함한 값이다. 이번 구성은 Nimble Q4와 Clef Q8이며, 후자는 CPU·GPU에 나누어 올렸다. 모델 자체의 우열보다는 내가 실제로 사용할 설정의 부담을 비교한 셈이다. 첫 호출 시간도 파일 캐시와 시스템 상태에 따라 달라진다.
Clef 시험에서는 기존 swap 사용량에 최대 약 732MiB가 추가됐다. GPU 쪽 할당만 보면 전체 부담을 놓치기 쉬웠다. 상주시키면 다른 앱이나 Gemma4를 쓸 여유가 줄고, 매번 내리면 다음 요청에 로딩 비용이 붙는다. 상대적으로 가벼운 Nimble도 판단 하나를 위해 5GiB 넘게 점유하는 것이 부담스러웠다.
지금은 애매하면 Codex로 보낸다
최종적으로 판단용 모델의 자동 호출을 껐다. 기존에 다듬은 규칙만 남겼고, 단어가 등장했다는 이유로 모델을 고르지 않도록 했다.
- 사용자가 모델을 명시하면 해당 모델을 우선한다. 파일·도구·복잡한 작업의 안전성 제한은 유지한다.
- 명확한 번역은 TranslateGemma로 보낸다.
- 원문이 충분히 제공된 짧은 요약은 Gemma4로 보낸다.
- 프로젝트 작업, 도구 사용, 이전 맥락 의존, 판단이 애매한 요청은 Codex에 맡긴다.
Codex 장애 시의 로컬 폴백도 남겼다. 독립적인 짧은 텍스트처럼 적합성을 확인한 요청만 Gemma4가 대신 처리한다. 프로젝트 변경이나 대화 맥락이 필요한 작업은 차단한다. 복잡한 요청까지 무조건 넘기기보다, 처리할 수 없는 이유를 알리는 편을 택했다.
응답 끝에는 실제 처리 모델을 표시한다. 로컬 응답인지, 상위 모델인지, 폴백이 있었는지를 확인하는 데 유용했다.
[처리 경로]
Router: 규칙 기반
Model: GPT-6.1 Sol (Codex)
Reasoning: medium
모델은 외장에 보관하고 운영은 가볍게
실험 중 Ollama 모델 저장소도 외장 SSD로 옮겼다. 내장 용량이 256GB라 앱 개발 도구와 모델을 함께 보관하기에는 공간이 빠듯했다. 복사본의 체크섬과 주요 모델 실행을 확인한 뒤 내부 백업을 삭제해 약 33.95GiB를 확보했다.
모델 9개는 외장에 남겨두었다. Nimble과 Clef도 필요할 때 다시 시험할 수 있다. 평소에는 메모리에 올리지 않고, 번역·요약 모델도 직접 응답을 마치면 내린다. 그 대신 다음 로컬 작업에서 다시 로딩해야 하는 비용은 감수한다.
이번 실험에서 남긴 것은 작업별 분기, 실제 처리 경로 표시, 내장 저장공간의 여유다. 상위 모델 호출 비용에 대한 고민은 이전 AI 에이전트 비용 관리 글과도 이어진다.
당분간은 이 구조로 사용해볼 생각이다. 더 작은 판단용 모델이 충분한 정확도를 보여주거나 장비 메모리가 넉넉해지면, 그때 LLM 라우터를 다시 검토하겠다.