mmproj는 비전을 지원하는 멀티모달 llm에서 비전 기능을 쓰기위해 로딩해야 한다. ### 1. mmproj는 GPU에 서빙된다 - CPU로 오프로드 하면 성능이 많이 떨어짐 ### 2. mmproj 양자화 : FP16/BF16 vs FP32 - vision 컴포넌트는 quantization에 민감해서 높은 정밀도를 유지하는 것이 좋지만, FP32는 크게 이점이 없음 ([출처](https://huggingface.co/unsloth/Qwen3-VL-32B-Instruct-GGUF/discussions/1)) - 양자화에 따른 정밀도 차이로 오는 체감보다, 백엔드 (CUDA) 에서 성숙도 차이가 더 큼 ### 3. mmproj 양자화 : FP16 vs BF16 둘 다 16Bit 라는 공통점 (저장크기 차이 X)이 있지만, 차이 존재. 2026-04-08 기준, RTX 50 사용시 FP16 권장 **FP16** - 1Bit 부호 + 5Bit 지수 + 10Bit 가수 -> 범위보단 세밀한 정밀도 - 구형 하드웨어 지원 / 호환성 좋음 - 백엔드 (CUDA) 호환성은 FP16이 안전 **BF16** - 1Bit 부호, 8Bit 지수 + 7Bit 가수 -> 값 범위를 넓게 보존 - Ampere (RTX 30~) 부터 지원 - 원본 projector가 BF16이고, 사용하는 백엔드에서 BF16 mmproj가 정상 작동 확인된다면 사용 - llama.cpp의 CUDA BF16 mmproj가 아직 불안정함 - CUDA 백엔드는 BF16을 지원하지 않음. BF16 텐서는 CPU에 저장됨 (2024.12) ([출처](https://github.com/ggml-org/llama.cpp/issues/10687)) - gemma-4에서 제공되는 mmproj-BF16.gguf가 Blackwell+Cuda에서 로드 단계부터 죽는 이슈 ([출처](https://github.com/ggml-org/llama.cpp/issues/21402))