# Llama.cpp 이제 비전 기능 지원 (멀티모달 입력)

> Clean Markdown view of GeekNews topic #20822. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=20822](https://news.hada.io/topic?id=20822)
- GeekNews Markdown: [https://news.hada.io/topic/20822.md](https://news.hada.io/topic/20822.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-05-11T06:17:55+09:00
- Updated: 2025-05-11T06:17:55+09:00
- Original source: [github.com/ggml-org](https://github.com/ggml-org/llama.cpp/blob/master/docs/multimodal.md)
- Points: 6
- Comments: 1

## Summary

Llama.cpp는 **libmtmd**를 통해 **멀티모달 입력** 기능을 새롭게 도입하였으며, 이미지 등 다양한 입력을 처리할 수 있습니다. 사용자들은 **llama-mtmd-cli**와 **llama-server**를 활용해 OpenAI 호환 API 및 커맨드라인 명령을 사용할 수 있습니다. **Gemma 3**, **SmolVLM**, **Mistral Small** 등 다양한 모델에서 즉시 사용할 수 있는 **Q4_K_M** 양자화 버전이 제공됩니다. 멀티모달 프로젝터는 기본적으로 **GPU 오프로딩**되며, 일부 모델에서는 큰 **컨텍스트 윈도우 크기** 설정이 요구됩니다.

## Topic Body

- **Llama.cpp**가 이제 **libmtmd**를 통해 멀티모달 입력(비전 포함)을 지원함  
  - llama-mtmd-cli 또는 llama-server를 통한 OpenAI 호환 `/chat/completions` API   
- Gemma 3, SmolVLM, Pixtral, Qwen 2/2.5, Mistra Small, InternVL 등 **모델**에서 멀티모달 기능 즉시 사용 가능함  
  - Pre-quantized 모델들 제공 (대부분 QK_K_M 양자화를 기본 포함)  
- 기본적으로 멀티모달 프로젝터는 **GPU**에 오프로딩되며, 필요시 비활성화 설정도 지원함  
- 일부 모델은 **큰 컨텍스트 윈도우**(예: -c 8192)가 필요  
  
---  
  
### 개요  
- **Llama.cpp**는 **libmtmd**를 이용해 멀티모달 입력 기능을 새롭게 지원하게 됨  
- 사용자들은 이미지 등 텍스트 외 입력도 처리할 수 있게 되어 **비전 모델** 활용성이 확대됨  
- 이 기능은 이미 Gemma 3, SmolVLM, Pixtral, Qwen 2 VL, Qwen 2.5 VL, Mistral Small, InternVL 등 주요 모델들과 호환됨  
  
### 멀티모달 입력 활성화 방법  
- 두 가지 주요 실행 방식이 안내됨: 첫 번째는 **-hf** 옵션 사용(지원 모델 필요), 두 번째는 **-m**과 **--mmproj** 옵션을 조합해 텍스트와 멀티모달 프로젝터 모델을 각각 지정하는 방법임  
- **-hf 옵션** 사용 시, 멀티모달 기능을 끄고 싶으면 **--no-mmproj**를 추가하고, 사용자 지정 **mmproj 파일**을 활용할 경우 **--mmproj local_file.gguf** 옵션을 사용함  
- **GPU 오프로딩**이 기본값이며, 이를 원치 않으면 **--no-mmproj-offload** 옵션으로 비활성화가 가능함  
  
### 예시 명령어  
- 커맨드라인에서는 **llama-mtmd-cli**를, 서버에서는 **llama-server**를 활용하는 형태임  
- 로컬 파일을 사용하는 경우 **--mmproj**로 직접 파일을 지정하는 방식임  
- GPU 오프로딩을 비활성화하려면 **--no-mmproj-offload** 옵션을 추가 사용하는 방식임  
  
### 즉시 사용 가능한 멀티모달 모델 목록  
- **Q4_K_M** 양자화를 기본으로 하는 다양한 준비된 모델들이 안내되어 있음  
- 지원 모델 예시:  
  - Gemma 3: 4b, 12b, 27b 버전  
  - SmolVLM 계열: 256M, 500M, 2.2B 등  
  - Pixtral 12B  
  - Qwen 2 VL: 2B, 7B 및 Qwen 2.5 VL: 3B, 7B, 32B, 72B  
  - Mistral Small 3.1 24B (IQ2_M 양자화)  
  - InternVL 2.5와 3 세대: 다양한 파라미터 크기 지원임  
  
### 참고 사항  
- 사용 시 **(tool_name)** 자리에 원하는 실행 바이너리 이름을 입력함(예: **llama-mtmd-cli** 또는 **llama-server**)  
- 일부 멀티모달 모델 사용 시 **큰 컨텍스트 윈도우 크기** 지정이 필요할 수 있음(예: **-c 8192**와 같은 옵션 활용)

## Comments



### Comment 38448

- Author: neo
- Created: 2025-05-11T06:17:56+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43943047) 
* MBP M1 64GB에서 ggml-org/gemma-3-4b-it-GGUF를 사용해 프롬프트 처리 속도 25t/s, 토큰 생성 속도 63t/s 정도 얻음  
전체 이미지 처리 시간은 이미지 크기와 상관없이 약 15초임  
작은 4B 모델도 이미 꽤 괜찮은 출력 보여줌, 다양한 이미지를 잘 설명함  
재현 방법은 llama.cpp 클론 후 빌드, 모델 및 mmproj 파일 다운로드 후 서버 실행, 그리고 웹 인터페이스 접속임  
-hf 옵션 없이 사용하면 --mmproj 스위치를 반드시 넣어야 멀티모달 지원 에러가 안 남  
공식 ggml-org/gemma-3-4b-it-GGUF 쿼트 사용 중임  
danielhanchen에서 제공하는 unsloth 쿼트가 더 빠를 거로 기대함

  * 모든 이미지에 똑같은 답변이 뜸  
  "이 이미지는 다양한 포즈의 여러 사람이 등장하며…" 이런 식임  
  실제 이미지에는 그런 게 전혀 없어서 어디서부터 디버깅해야 할지 감이 안 옴

  * 나도 같은 결과가 계속 나오고 있음  
  M1에서 7b 모델을 쓰면 프롬프트 처리가 거의 10배 빨라야 한다는 글을 봄  
  혹시 인코더 최적화가 안 됐나 궁금함

  * 직접 프롬프트로 생성한 예시 이미지가 있다면 보여줄 수 있음?  
  해보기 전에 한 번 보고 싶음

  * 저 숫자들은 4/8비트 쿼트 기준인가 아니면 전체 fp16 기준인가 궁금함

* llama.cpp를 소스에서 직접 컴파일해야 함  
llama-mtmd-cli 프로그램을 얻을 수 있음  
나는 vision 지원하는 쿼트 만들어 놨음  
unsloth/gemma-3-4b-it-GGUF:Q4_K_XL 등 명령으로 실행 가능함  
채팅 중 /image image.png로 이미지 올려 대화 가능함  
이제는 Metal 백엔드에선 -ngl -1 안 써도 됨  
CUDA에서는 여전히 필요함  
-1은 모든 GPU 계층을 GPU에 오프로딩 의미임

  * 도움이 된다면, 문서 unsloth.ai 페이지 갱신했으니 바로 llama-mtmd-cli 사용법 참고 바람  
  Mistral Small에도 쓸 수 있음

  * Homebrew로 llama.cpp 설치하면 llama-mtmd-cli도 포함되어 있음  
  명령어만 주면 바로 실행할 수 있음

  * 사실 -ngl 99가 더 안정적임, -ngl -1은 작동 여부가 다를 수 있음

  * ngl이란 글자만 봐도 화가 치솟는 기분임

* 지금까지 찾은 가장 유용한 문서임  
어떻게 동작하는지 이해하는 데 큰 도움 줌  
https://github.com/ggml-org/llama.cpp/tree/master/tools/mtmd#multimodal-support-in-llamacpp

  * 아키텍처별 이미지-임베딩 전처리를 별도 라이브러리로 분리한 게 흥미로움  
  huggingface/tokenizers처럼 텍스트 트랜스포머 도구가 나눠진 것과 유사함

* SmolVLM 시리즈도 지원함  
작은 사이즈 덕분에 매우 빠른 응답 제공함  
실시간 가정용 비디오 감시 시스템에 완벽함  
이걸로 취미 프로젝트로서 시도해 볼 생각임  
빠른 명령어 예시도 구체적으로 남김

  * 서버에 mtmd 기능 추가해줘서 고마움  
나도 커밋 기다리며 계속 지켜보고 있었음

  * git 커밋 노트 볼 때마다 기여한 내용 보여서 항상 감탄함  
llama.cpp 전체적으로도 고생 많았음

  * 근데 이렇게 고속 응답이 품질적으로는 어떤지 궁금함  
2.2B보다 작은 모델들도 맥락 있는 문장 제대로 뱉을 수 있음?

* Gemma3 4b 사용해서 최근 여행 사진 다수에 키워드랑 설명 생성하는 데 썼음  
기본적인 OCR도 돼서 텍스트가 적힌 사진 요약해주고, 맥락 단서 통해 어디서 찍었는지도 잘 추측해줌  
직접 호스팅 가능한 것 치고 훌륭함

  * 재밌게 들림  
이미지 목록 루프 돌며 각각 프롬프트 실행하고 결과를 메타데이터나 sqlite 등에 저장하는 구조로 쓰는지 궁금함

  * gemma 4b가 이 정도 작업에 충분히 쓸만한지 궁금함  
나는 더 큰 버전만 써봤는데, 4b면 부족할 줄 알았음

* 평범한 사용자 입장에서 뭐가 달라졌는지 궁금함  
몇 달 전에도 llama.cpp로 이미지 설명 등 할 수 있었는데 변화점이 궁금함

* llama.cpp가 다양한 플랫폼용 컴파일 릴리즈 제공함  
이번에는 비전 기능 새로 들어감  
macOS에서 llama-b5332-bin-macos-arm64.zip 받아서 압축 풀고, sudo xattr 명령으로 실행 허용 후  
llama-mtmd-cli로 터미널 인터페이스 사용 가능함  
또는 localhost:8080 웹 서버 실행도 가능함(UI, API 포함)  
자세한 사용 기록은 개인 블로그에 정리함

  * brew로 설치하는 경우 --HEAD 옵션으로 항상 최신 상태로 빌드 가능함  
  몇 시간 내로 brew 패키지 버전도 곧 업데이트되어 손쉽게 업그레이드할 수 있을 거임

  * convert_hf_to_gguf.py --mmproj 덕분에 어떤 비전 모델이든 쿼트 제작이 훨씬 쉬워졌음  
  llama-server에서 비전 지원되는 게 아주 멋짐  
  오래 기다렸던 기능임

  * 이제 -ngl은 자동으로 최대값 지정됨  
  직접 -ngl 99 지정할 필요 없음  
  단, Metal 환경에만 해당되고 CUDA 등은 여전히 명시해야 함

* gemma3 멀티모달 모델을 ollama 통해 쓰는 것과 비교해서 llama.cpp 쓰는 게 어떤지 궁금함  
애플 실리콘 맥에서 장점이나 사용 경험 있는지 알고 싶음

  * 두 가지 차이점 있음  
  첫째, llama.cpp 지원은 ggml 생태계 내에서 가로로 통합되어 있어 ollama보다 더 빠르게 동작하게 최적화 가능함  
  예를 들어, pixtral/mistral small 3.1은 Ollama보다 더 적은 메모리 쓰는 2D-RoPE 트릭을 제공함  
  곧 플래시 어텐션 기능도 추가될 예정인데, 이로써 비전 인코더가 더 빠르고 적은 메모리로 동작할 것임  
  둘째, llama.cpp는 ollama보다 더 다양한 모델 지원함  
  ollama는 pixtral이나 smolvlm 둘 다 지원하지 않음

* UI 개발에 비전을 접목하는 도구가 있는지 궁금함  
예시로 프론트엔드 TS/React 취미 프로젝트에서 로컬/클라우드 LLM을 VSCode에 붙여 쓰는데, 비전 지원 모델조차도 꼭 스크린샷 찍어 붙여야 함  
이 부분 전반을 자동화하거나, 키보드 단축키로 스크린샷 찍고 자동으로 채팅에 붙여넣는 단순 확장만 있어도 시간 절약 클 것임

* ngl 약어가 참 헷갈림  
맥에서 최대한 빠르게 돌리려고 여러 팁과 조정이 등장하는 게 신기함  
이런 속도 개선이 더 많은 사람들이 집에서 비전 기능 실험하게 만들지 궁금함

  * 확실함  
llama.cpp는 10년된 내 PC와 m1 맥 둘 다에서 아주 잘 돌아감
