MiniCPM-Llama3-V-2.5, 30+언어를 지원하는8B 규모의 멀티모달 모델
소개
OpenBMB에서는 Llama3-8B 모델을 기반으로 SigLIP-400M을 Visual Encoder로 사용한 멀티모달 LLM(MLLM, Multimodal Larget Language Model)입니다. 일전의 Llama3-V 프로젝트 관련 이슈로 본의 아니게 화제가 되었던 바로 그 모델로, OpenCompass에서 65.1의 평균 점수를 기록하였습니다.
또한, GPT-4V-1106 및 Claude 3, Gemini Opus 등과 비교할 때, 더 낮은 환각률, 뛰어난 OCR 기능과 다국어 지원을 통해 30개 이상의 언어를 처리할 수 있습니다. 또한, NPU 최적화를 통해 모바일에서도 빠르게 동작합니다. (공개 예정입니다)
주요 특징
-
뛰어난 성능: 주요한 11개의 벤치마크를 종합적으로 평가하는 OpenCompass에서 평균 65.1점 기록하였습니다. 이는 GPT-4V-1106, Gemini Pro, Claude-3, Qwen-VL-Max와 같은 비공개 모델들 대비 나은 성능임은 물론이고, Llama-3 기반의 다른 MLLM보다 8B 규모의 모델보다 나은 성능입니다.
-
강력한 OCR 기능: 최대 180만 픽셀(예. 1344x1344의 해상도)의 고해상도 이미지를 처리할 수 있으며, OCRBench에서 700점 이상의 점수를 기록하여 GPT-4o, GPT-4V-0409, Qwen-VL-Max and Gemini Pro 등의 모델의 성능을 능가하는 성능을 보였습니다.
-
신뢰할 수 있는 동작: 최근에 공개한 RLAIF-V 데이터셋 및 방법론으로 Object HalBench에서 10.3%의 환각율을 보였습니다. 이는 GPT-4V-1106의 13.6%보다 더 나은 수치로, 공개된 모델들 중 가장 뛰어난 성능입니다.
-
다국어 지원: 30개 이상의 언어 지원합니다. 영어 및 중국어를 비롯하여 독일어, 프랑스어, 스페인어, 이탈리아어, 러시아어 등을 지원하며, 지원하는 전체 언어 목록은 여기에서 확인할 수 있습니다.
-
효율적 배포: 모델 양자화(Model Quantization) 및 CPU/NPU 최적화를 비롯한 다른 컴파일 최적화 등을 체계적으로 적용하여 엣지 디바이스(edge-device, On-Device) 환경에서도 효율적으로 동작합니다. 또한, NPU 가속 프레임워크인 QNN을 llama.cpp에 처음으로 통합하여 퀄컴칩 기반의 모바일 기기에서도 빠른 동작을 보여줍니다.
-
간편한 사용: (1) 로컬 디바이스에서 효율적인 CPU 추론을 위한 llama.cpp 및 ollama 지원, (2) 16가지 크기의 GGUF 형식의 양자화 모델 제공, (3) 단 2개의 V100 GPU만으로도 효율적인 LoRA 미세조정(finetuning) 가능, (4) 스트리밍 출력 지원, (5) Gradio 및 Streamlit으로 빠른 로컬 웹UI 데모 설정, (6) HuggingFace Spaces의 대화형 데모 등 다양한 방식으로 쉽게 사용할 수 있습니다.
사용 방법
MiniCPM-Llama3-V 2.5 모델은 최신 버전의 Hugging Face의 transformers
라이브러리를 통해 쉽게 사용할 수 있습니다:
import torch
from PIL import Image
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('openbmb/MiniCPM-Llama3-V-2_5', trust_remote_code=True, torch_dtype=torch.float16)
model = model.to(device='cuda')
tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-Llama3-V-2_5', trust_remote_code=True)
model.eval()
image = Image.open('xx.jpg').convert('RGB')
question = 'What is in the image?'
msgs = [{'role': 'user', 'content': question}]
res = model.chat(image=image, msgs=msgs, tokenizer=tokenizer, sampling=True, temperature=0.7)
print(res)
성능 비교
주요 모델들과의 TextVQA, DocVQA, OCRBench, OpenCompass, MME, MMBench, MMMU, MathVista, LLaVA Bench, RealWorld QA, Object HalBench 결과:
Model | Size | OCRBench | TextVQA val | DocVQA test | Open-Compass | MME | MMB test (en) | MMB test (cn) | MMMU val | Math-Vista | LLaVA Bench | RealWorld QA | Object HalBench |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Proprietary | |||||||||||||
Gemini Pro | - | 680 | 74.6 | 88.1 | 62.9 | 2148.9 | 73.6 | 74.3 | 48.9 | 45.8 | 79.9 | 60.4 | - |
GPT-4V (2023.11.06) | - | 645 | 78.0 | 88.4 | 63.5 | 1771.5 | 77.0 | 74.4 | 53.8 | 47.8 | 93.1 | 63.0 | 86.4 |
Open-source | |||||||||||||
Mini-Gemini | 2.2B | - | 56.2 | 34.2* | - | 1653.0 | - | - | 31.7 | - | - | - | - |
Qwen-VL-Chat | 9.6B | 488 | 61.5 | 62.6 | 51.6 | 1860.0 | 61.8 | 56.3 | 37.0 | 33.8 | 67.7 | 49.3 | 56.2 |
DeepSeek-VL-7B | 7.3B | 435 | 64.7* | 47.0* | 54.6 | 1765.4 | 73.8 | 71.4 | 38.3 | 36.8 | 77.8 | 54.2 | - |
Yi-VL-34B | 34B | 290 | 43.4* | 16.9* | 52.2 | 2050.2 | 72.4 | 70.7 | 45.1 | 30.7 | 62.3 | 54.8 | 79.3 |
CogVLM-Chat | 17.4B | 590 | 70.4 | 33.3* | 54.2 | 1736.6 | 65.8 | 55.9 | 37.3 | 34.7 | 73.9 | 60.3 | 73.6 |
TextMonkey | 9.7B | 558 | 64.3 | 66.7 | - | - | - | - | - | - | - | - | - |
Idefics2 | 8.0B | - | 73.0 | 74.0 | 57.2 | 1847.6 | 75.7 | 68.6 | 45.2 | 52.2 | 49.1 | 60.7 | - |
Bunny-LLama-3-8B | 8.4B | - | - | - | 54.3 | 1920.3 | 77.0 | 73.9 | 41.3 | 31.5 | 61.2 | 58.8 | - |
LLaVA-NeXT Llama-3-8B | 8.4B | - | - | 78.2 | - | 1971.5 | - | - | 41.7 | 37.5 | 80.1 | 60.0 | - |
Phi-3-vision-128k-instruct | 4.2B | 639* | 70.9 | - | - | 1537.5* | - | - | 40.4 | 44.5 | 64.2* | 58.8* | - |
MiniCPM-V 1.0 | 2.8B | 366 | 60.6 | 38.2 | 47.5 | 1650.2 | 64.1 | 62.6 | 38.3 | 28.9 | 51.3 | 51.2 | 78.4 |
MiniCPM-V 2.0 | 2.8B | 605 | 74.1 | 71.9 | 54.5 | 1808.6 | 69.1 | 66.5 | 38.2 | 38.7 | 69.2 | 55.8 | 85.5 |
MiniCPM-Llama3-V 2.5 | 8.5B | 725 | 76.6 | 84.8 | 65.1 | 2024.6 | 77.2 | 74.2 | 45.8 | 54.3 | 86.7 | 63.5 | 89.7 |
라이선스
이 프로젝트는 모델과 모델 가중치를 개별적인 라이선스로 공개 및 배포합니다. 모델 코드는 Apache-2.0 라이선스로 배포되며, 모델 가중치에 대한 라이선스는 OpenBMB의 General Model License Agreement를 따릅니다.
모델 가중치는 학문적 연구를 위해서는 열려있으나, 상업적 사용에 대해서는 별도의 허락을 받아야 합니다. 상세한 내용은 Hugging Face의 MiniCPM-Llama3-V-2.5 모델 페이지 및 GitHub 저장소 등을 확인하시기 바랍니다.
모델 코드 및 설명을 포함하는 GitHub 저장소
모델 가중치 및 데모 Hugging Face
Web Demo
기술 블로그
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~