Articlehuggingface.co·2025년 12월 11일·0

New in llama.cpp: Model Management

Quick Summary

llama.cpp 서버의 라우터 모드는 재시작 없이 여러 GGUF 모델을 검색·적재·전환·해제하고, 요청의 모델 지정에 따라 독립 프로세스로 실행되는 모델에 트래픽을 전달합니다.

New in llama.cpp: Model Management 관련 대표 이미지

🖼️ 인포그래픽

New in llama.cpp: Model Management 내용을 설명하는 본문 이미지

🖼️ 4컷 인포그래픽

New in llama.cpp: Model Management 내용을 설명하는 본문 이미지

💡 한 줄 요약

llama.cpp 서버의 라우터 모드는 재시작 없이 여러 GGUF 모델을 검색·적재·전환·해제하고, 요청의 모델 지정에 따라 독립 프로세스로 실행되는 모델에 트래픽을 전달합니다.

📌 핵심 요약

  • 모델을 지정하지 않고 llama-server를 실행하면 라우터 모드가 활성화되어 여러 모델을 동적으로 관리할 수 있습니다.
  • 서버는 기본 캐시나 --models-dir로 지정한 디렉터리에서 GGUF 모델을 자동으로 찾고, 처음 요청된 모델을 메모리에 적재합니다.
  • 동시에 적재할 수 있는 모델 수는 기본 4개이며, 한도에 도달하면 가장 오래 사용되지 않은 모델을 해제하는 방식이 적용됩니다.
  • 모델 목록 조회와 수동 적재·해제를 위한 HTTP 경로가 제공되며, 요청 본문의 model 필드가 처리할 모델을 결정합니다.
  • 라우터 공통 설정과 모델별 프리셋을 함께 지원하고, 내장 웹 사용자 인터페이스에서도 드롭다운으로 모델을 전환할 수 있습니다.

🧩 주요 포인트

  1. 모델을 지정하지 않고 llama-server를 실행하면 라우터 모드가 활성화되어 여러 모델을 동적으로 관리할 수 있습니다.
  2. 서버는 기본 캐시나 --models-dir로 지정한 디렉터리에서 GGUF 모델을 자동으로 찾고, 처음 요청된 모델을 메모리에 적재합니다.
  3. 동시에 적재할 수 있는 모델 수는 기본 4개이며, 한도에 도달하면 가장 오래 사용되지 않은 모델을 해제하는 방식이 적용됩니다.
  4. 모델 목록 조회와 수동 적재·해제를 위한 HTTP 경로가 제공되며, 요청 본문의 model 필드가 처리할 모델을 결정합니다.
  5. 라우터 공통 설정과 모델별 프리셋을 함께 지원하고, 내장 웹 사용자 인터페이스에서도 드롭다운으로 모델을 전환할 수 있습니다.

🧠 상세 정리

1. 라우터 모드와 다중 모델 관리 구조

llama.cpp 서버에 추가된 라우터 모드는 서버를 다시 시작하지 않고 여러 모델을 동적으로 적재하거나 해제하고, 요청에 따라 모델을 전환할 수 있게 합니다. 이는 로컬에서 대규모 언어 모델을 실행하는 경량 OpenAI 호환 HTTP 서버에 Ollama와 유사한 모델 관리 기능을 제공해 달라는 요청을 반영한 기능입니다. 각 모델은 별도의 프로세스에서 실행되는 다중 프로세스 구조를 사용하므로, 한 모델의 프로세스에 장애가 발생하더라도 다른 모델 프로세스는 영향을 받지 않습니다. 서버는 요청에 포함된 모델 정보를 바탕으로 적절한 프로세스에 요청을 전달하며, 모델의 적재 상태와 사용 순서도 함께 관리합니다.

2. 실행 방법과 모델 자동 검색

라우터 모드는 실행 명령에 특정 모델을 지정하지 않고 llama-server만 시작하면 활성화됩니다. 서버는 LLAMA_CACHE 환경 변수로 지정된 위치 또는 기본 경로인 ~/.cache/llama.cpp를 검사해 사용할 수 있는 모델을 자동으로 찾습니다. 이전에 llama-server -hf user/model 형식으로 내려받은 모델도 같은 캐시에 존재하면 별도의 등록 작업 없이 자동으로 사용할 수 있습니다. 자체적으로 보관한 GGUF 파일을 이용하려면 --models-dir ./my-models처럼 디렉터리를 지정할 수 있으며, 이 경우 서버는 해당 폴더를 검색합니다. 따라서 기본 캐시와 사용자 지정 모델 디렉터리 가운데 운영 방식에 맞는 검색 위치를 선택할 수 있습니다.

3. 요청 기반 적재와 최소 최근 사용 모델 해제

발견된 모델은 모두 즉시 메모리에 올라가는 것이 아니라, 해당 모델을 지정한 첫 요청이 들어올 때 자동으로 적재됩니다. 첫 요청에서는 모델 크기에 따라 적재 시간이 발생하지만, 이미 메모리에 올라온 모델에 대한 이후 요청은 추가 적재 없이 바로 처리됩니다. 요청 본문의 model 필드는 어떤 모델이 요청을 담당할지를 결정하며, 예시에서는 ggml-org/gemma-3-4b-it-GGUF:Q4_K_M 모델을 채팅 완성 요청에 지정합니다. 동시에 적재할 수 있는 모델 수는 --models-max로 설정하고 기본값은 4개입니다. 이 한도에 도달한 상태에서 다른 모델이 필요하면 가장 최근에 사용되지 않은 모델을 해제하는 최소 최근 사용 방식으로 공간을 확보합니다.

4. 모델 상태 조회와 수동 적재·해제

서버의 /models 경로를 호출하면 자동으로 발견된 전체 모델과 각 모델의 현재 상태를 확인할 수 있습니다. 상태는 적재 완료, 적재 중, 미적재로 구분되어 어떤 모델이 메모리를 사용하고 있는지 파악할 수 있습니다. /models/load에 모델 이름을 담은 POST 요청을 보내면 실제 추론 요청 전에 특정 모델을 수동으로 적재할 수 있으며, /models/unload를 호출하면 해당 모델을 해제해 비디오 메모리를 확보할 수 있습니다. 자동 적재를 원하지 않는 환경에서는 --no-models-autoload 옵션을 사용하고, 필요한 모델만 /models/load를 통해 명시적으로 올리도록 구성할 수 있습니다. 이들 기능을 통해 자동 관리와 명시적 관리 가운데 필요한 방식을 선택할 수 있습니다.

5. 공통 옵션과 모델별 프리셋

라우터에서 지정한 실행 설정은 기본적으로 모든 모델 인스턴스에 상속됩니다. 예를 들어 --models-dir ./models -c 8192 -ngl 99로 실행하면 적재되는 모든 모델이 8192 크기의 문맥과 전체 그래픽 처리 장치 오프로딩 설정을 사용합니다. 모델마다 다른 설정이 필요하면 --models-preset config.ini 옵션으로 프리셋 파일을 지정할 수 있습니다. 프리셋의 모델별 구역에는 실제 GGUF 경로와 문맥 크기, 온도 같은 값을 별도로 기록할 수 있으며, 제시된 예시는 특정 모델에 65536 문맥 크기와 0.7 온도를 설정합니다. 내장 웹 사용자 인터페이스도 모델 전환을 지원하므로 드롭다운에서 모델을 선택하면 해당 모델이 자동으로 적재됩니다.

6. 활용 목적과 커뮤니티에서 제기된 사항

글은 이 기능의 활용 사례로 여러 모델 버전의 에이비 테스트, 다중 사용자 배포, 개발 중 서버 재시작 없는 모델 전환을 제시합니다. 댓글에서는 모델별 멀티모달 프로젝터 설정이 가능한지, 요청 조건에 따라 기본 모델을 선택하거나 우선순위를 적용할 수 있는지, 비디오 메모리가 부족할 때 모델 교체가 어떻게 이뤄지는지 등의 질문이 나왔습니다. 멀티모달 프로젝터를 포함한 모델별 인자는 presets.ini에서 지정할 수 있다는 답변이 공유됐고, 추론 내용은 응답의 reasoning_content 속성이나 reasoning-format 설정을 통해 다룰 수 있다는 설명도 제시됐습니다. 요청에 모델 이름이 없을 때 사용할 기본 모델과 여러 그래픽 처리 장치에 특정 모델을 고정하는 방법에 관한 질문도 있었지만, 원문에는 이에 대한 확정적인 공식 답변이 제시되지 않았습니다.

🧾 핵심 주장 / 시사점

  • 라우터 모드의 핵심은 여러 모델을 항상 동시에 적재하는 것이 아니라, 요청 시 적재하고 사용 순서에 따라 해제해 정해진 동시 적재 한도 안에서 관리하는 데 있습니다.
  • 각 모델을 별도 프로세스로 실행하는 구조는 한 모델의 장애가 다른 모델의 실행에 영향을 주지 않도록 분리합니다.
  • 라우터 공통 설정, 모델별 프리셋, 수동 적재·해제 경로를 함께 제공하므로 동일한 서버에서 자동 운영과 세부 모델 제어를 모두 수행할 수 있습니다.

✅ 액션 아이템

  • 모델 미지정 실행 시 llama-server가 router 모드로 동작해 GGUF 모델을 동적으로 적재·전환·해제하는지 실행 파라미터와 함께 점검한다.
  • 기본 캐시와 --models-dir 자동 탐색 경로가 로드된 모델 목록 조회 및 수동 적재·해제 HTTP 엔드포인트와 일치하는지 정합성 규칙을 확정한다.
  • 동시 적재 상한 4개와 LRU 해제 정책이 모델별 독립 프로세스 라우팅에서 어떤 모델이 유지·제거되는지를 트래픽 패턴별로 측정해 반응을 판단한다.

❓ 열린 질문

  • 요청 본문의 model 필드가 누락·오타·미등록 값일 때 처리 대상 모델은 어떤 규칙으로 결정되는가?
  • 동시 적재 4개 한도 도달 시 LRU 해제 대상은 단순 최근성만 반영되는가, 아니면 요청 특성도 함께 반영되는가?
  • 내장 웹 UI 드롭다운 전환과 API 요청 기반 전환 시 라우터 공통 설정과 모델별 프리셋 적용 결과가 동일하게 나타나는가?

관련 문서

공통 태그와 주제 흐름을 기준으로 같이 보면 좋은 문서를 이어서 제안합니다.