- Llama.cpp giờ hỗ trợ đầu vào đa phương thức (bao gồm thị giác) thông qua libmtmd
- API
/chat/completions tương thích OpenAI qua llama-mtmd-cli hoặc llama-server
- Có thể dùng ngay tính năng đa phương thức trên các mô hình như Gemma 3, SmolVLM, Pixtral, Qwen 2/2.5, Mistra Small, InternVL, v.v.
- Có sẵn các mô hình pre-quantized (đa số mặc định gồm lượng tử hóa QK_K_M)
- Theo mặc định, bộ chiếu đa phương thức sẽ được offload lên GPU, đồng thời cũng hỗ trợ tùy chọn tắt khi cần
- Một số mô hình cần cửa sổ ngữ cảnh lớn (ví dụ:
-c 8192)
Tổng quan
- Llama.cpp nay bổ sung hỗ trợ đầu vào đa phương thức bằng libmtmd
- Người dùng có thể xử lý cả các đầu vào ngoài văn bản như hình ảnh, qua đó mở rộng khả năng tận dụng mô hình thị giác
- Tính năng này đã tương thích với các mô hình chủ chốt như Gemma 3, SmolVLM, Pixtral, Qwen 2 VL, Qwen 2.5 VL, Mistral Small, InternVL, v.v.
Cách kích hoạt đầu vào đa phương thức
- Có hai cách chạy chính được hướng dẫn: thứ nhất là dùng tùy chọn -hf (cần mô hình được hỗ trợ), thứ hai là kết hợp -m và --mmproj để chỉ định riêng mô hình văn bản và mô hình projector đa phương thức
- Khi dùng -hf, nếu muốn tắt tính năng đa phương thức thì thêm --no-mmproj, còn nếu dùng tệp mmproj tùy chỉnh thì dùng tùy chọn --mmproj local_file.gguf
- GPU offloading là mặc định; nếu không muốn, có thể tắt bằng tùy chọn --no-mmproj-offload
Ví dụ lệnh
- Trên dòng lệnh dùng llama-mtmd-cli, còn ở chế độ máy chủ thì dùng llama-server
- Khi dùng tệp cục bộ, có thể chỉ định trực tiếp tệp bằng --mmproj
- Để tắt GPU offloading, thêm tùy chọn --no-mmproj-offload
Danh sách mô hình đa phương thức dùng ngay được
- Nhiều mô hình chuẩn bị sẵn với lượng tử hóa Q4_K_M được giới thiệu
- Ví dụ các mô hình được hỗ trợ:
- Gemma 3: bản 4b, 12b, 27b
- Dòng SmolVLM: 256M, 500M, 2.2B, v.v.
- Pixtral 12B
- Qwen 2 VL: 2B, 7B và Qwen 2.5 VL: 3B, 7B, 32B, 72B
- Mistral Small 3.1 24B (lượng tử hóa IQ2_M)
- InternVL 2.5 và thế hệ 3: hỗ trợ nhiều kích thước tham số khác nhau
Lưu ý
- Khi sử dụng, điền tên binary muốn chạy vào vị trí (tool_name) (ví dụ: llama-mtmd-cli hoặc llama-server)
- Khi dùng một số mô hình đa phương thức, có thể cần chỉ định kích thước cửa sổ ngữ cảnh lớn (ví dụ dùng tùy chọn như -c 8192)
1 bình luận
Ý kiến trên Hacker News
Trên MBP M1 64GB, dùng ggml-org/gemma-3-4b-it-GGUF đạt tốc độ xử lý prompt khoảng 25t/s, tốc độ sinh token khoảng 63t/s
Thời gian xử lý toàn bộ ảnh là khoảng 15 giây bất kể kích thước ảnh
Ngay cả model 4B nhỏ cũng đã cho đầu ra khá ổn, mô tả tốt nhiều loại ảnh khác nhau
Cách tái hiện là clone llama.cpp rồi build, tải file model và mmproj, chạy server, sau đó truy cập giao diện web
Nếu dùng mà không có tùy chọn
-hfthì bắt buộc phải thêm cờ--mmprojđể không bị lỗi hỗ trợ multimodalĐang dùng quant chính thức của ggml-org/gemma-3-4b-it-GGUF
Kỳ vọng quant unsloth do danielhanchen cung cấp sẽ nhanh hơn
Mọi ảnh đều trả ra cùng một câu trả lời
Kiểu như: "Ảnh này có nhiều người trong các tư thế khác nhau xuất hiện..."
Ảnh thực tế hoàn toàn không có như vậy nên không biết phải bắt đầu debug từ đâu
Tôi cũng liên tục gặp cùng kết quả đó
Tôi có đọc rằng trên M1, nếu dùng model 7b thì xử lý prompt phải nhanh hơn gần 10 lần
Không rõ có phải encoder chưa được tối ưu không
Có thể cho xem ảnh mẫu được tạo bằng prompt trực tiếp không?
Tôi muốn xem trước khi thử
Tôi thắc mắc các con số đó là theo quant 4/8-bit hay theo toàn bộ fp16
Phải tự biên dịch llama.cpp từ mã nguồn
Có thể lấy được chương trình
llama-mtmd-cliTôi đã tạo sẵn quant có hỗ trợ vision
Có thể chạy bằng lệnh như
unsloth/gemma-3-4b-it-GGUF:Q4_K_XLTrong lúc chat có thể tải ảnh lên và trò chuyện bằng
/image image.pngGiờ trên backend Metal không cần dùng
-ngl -1nữaTrên CUDA thì vẫn cần
-1nghĩa là offload mọi lớp GPU sang GPUNếu hữu ích thì tôi đã cập nhật trang tài liệu unsloth.ai, có thể xem ngay cách dùng
llama-mtmd-cliCũng dùng được cho Mistral Small
Nếu cài llama.cpp bằng Homebrew thì cũng có kèm
llama-mtmd-cliChỉ cần đưa lệnh là có thể chạy ngay
Thực ra
-ngl 99ổn định hơn, còn-ngl -1có thể lúc chạy được lúc khôngChỉ nhìn thấy chữ ngl thôi là đã thấy bực bội dâng lên
Đây là tài liệu hữu ích nhất tôi tìm được tới giờ
Nó giúp ích rất nhiều để hiểu cách hoạt động
https://github.com/ggml-org/llama.cpp/…
Nó tương tự như việc các công cụ text transformer được tách ra như huggingface/tokenizers
Dòng SmolVLM cũng được hỗ trợ
Nhờ kích thước nhỏ nên phản hồi rất nhanh
Rất phù hợp cho hệ thống giám sát video gia đình thời gian thực
Tôi định thử nó như một dự án sở thích
Cũng đã để lại ví dụ lệnh nhanh khá cụ thể
Cảm ơn vì đã thêm chức năng mtmd vào server
Tôi cũng đã chờ commit này và theo dõi suốt
Mỗi lần xem ghi chú commit tôi đều thấy phần bạn đóng góp nên luôn rất ấn tượng
Bạn cũng đã vất vả rất nhiều với toàn bộ llama.cpp
Nhưng tôi tò mò chất lượng của phản hồi nhanh như vậy ra sao
Các model nhỏ hơn 2.2B có thể tạo được câu có ngữ cảnh tử tế không?
Tôi đã dùng Gemma3 4b để tạo từ khóa và mô tả cho nhiều ảnh du lịch gần đây
Nó cũng làm được OCR cơ bản nên có thể tóm tắt ảnh có chữ, và còn đoán khá tốt ảnh được chụp ở đâu dựa trên manh mối ngữ cảnh
Với một thứ có thể tự host thì rất ấn tượng
Nghe thú vị đấy
Tôi tò mò không biết bạn có dùng theo kiểu lặp qua danh sách ảnh, chạy prompt cho từng ảnh rồi lưu kết quả vào metadata hay sqlite gì đó không
Tôi tò mò không biết gemma 4b có đủ dùng cho kiểu tác vụ này không
Tôi chỉ mới dùng các bản lớn hơn, nên cứ tưởng 4b sẽ không đủ
Tôi tò mò từ góc nhìn người dùng bình thường thì đã thay đổi điều gì
Vài tháng trước tôi cũng đã có thể làm mô tả ảnh bằng llama.cpp rồi, nên muốn biết điểm khác biệt lần này là gì
llama.cpp cung cấp bản phát hành biên dịch sẵn cho nhiều nền tảng khác nhau
Lần này có thêm tính năng vision
Trên macOS có thể tải
llama-b5332-bin-macos-arm64.zip, giải nén, rồi dùng lệnhsudo xattrđể cho phép chạyCó thể dùng
llama-mtmd-clilàm giao diện terminalHoặc chạy web server
localhost:8080cũng được, có cả UI và APITôi đã ghi lại chi tiết quá trình sử dụng trên blog cá nhân
Nếu cài qua brew thì có thể build luôn bản mới nhất bằng tùy chọn
--HEADTrong vài giờ tới gói brew cũng sẽ sớm được cập nhật phiên bản để nâng cấp dễ dàng hơn
Nhờ
convert_hf_to_gguf.py --mmprojmà việc tạo quant cho bất kỳ model vision nào cũng dễ hơn rất nhiềuViệc
llama-serverhỗ trợ vision thật sự rất tuyệtĐây là tính năng tôi đã chờ từ lâu
Giờ
-nglsẽ tự động được đặt ở giá trị tối đaKhông cần tự chỉ định
-ngl 99nữaTuy nhiên điều này chỉ áp dụng cho môi trường Metal, còn CUDA v.v. thì vẫn phải chỉ định rõ
Tôi tò mò việc dùng gemma3 multimodal qua ollama so với dùng qua llama.cpp thì thế nào
Muốn biết ưu điểm hay trải nghiệm sử dụng trên máy Mac Apple Silicon
Thứ nhất, phần hỗ trợ của llama.cpp được tích hợp theo chiều ngang trong hệ sinh thái ggml nên có thể tối ưu để chạy nhanh hơn ollama
Ví dụ, pixtral/mistral small 3.1 có mẹo 2D-RoPE dùng ít bộ nhớ hơn Ollama
Sắp tới còn có thêm flash attention, nhờ đó vision encoder sẽ chạy nhanh hơn và tốn ít bộ nhớ hơn
Thứ hai, llama.cpp hỗ trợ nhiều model hơn ollama
ollama không hỗ trợ cả pixtral lẫn smolvlm
Tôi tò mò liệu có công cụ nào tích hợp vision vào quy trình phát triển UI không
Ví dụ, trong dự án sở thích frontend TS/React, tôi gắn LLM local/cloud vào VSCode để dùng, nhưng ngay cả với model có hỗ trợ vision thì vẫn phải chụp ảnh màn hình rồi dán vào
Nếu có thứ gì tự động hóa toàn bộ phần này, hoặc chỉ là một extension đơn giản cho phép chụp màn hình bằng phím tắt rồi tự động dán vào khung chat, thì cũng tiết kiệm được rất nhiều thời gian
Tên viết tắt ngl thật sự rất dễ gây nhầm lẫn
Thật thú vị khi thấy đủ loại mẹo và tinh chỉnh xuất hiện để chạy nhanh nhất có thể trên Mac
Tôi tò mò liệu những cải thiện tốc độ này có khiến nhiều người thử nghiệm tính năng vision tại nhà hơn không
llama.cpp chạy rất tốt cả trên chiếc PC 10 năm tuổi của tôi lẫn trên Mac M1