2P by GN⁺ 1일전 | ★ favorite | 댓글 1개
  • 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.cpplibmtmd를 이용해 멀티모달 입력 기능을 새롭게 지원하게 됨
  • 사용자들은 이미지 등 텍스트 외 입력도 처리할 수 있게 되어 비전 모델 활용성이 확대됨
  • 이 기능은 이미 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와 같은 옵션 활용)
Hacker News 의견
  • 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/…

    • 아키텍처별 이미지-임베딩 전처리를 별도 라이브러리로 분리한 게 흥미로움
      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 맥 둘 다에서 아주 잘 돌아감