콘텐츠로 이동

LLaVA-NeXT (LLaVA 1.6+)

1. 개요

항목 내용
개발사 NTU, ByteDance, University of Wisconsin-Madison
공개일 2024.01 (LLaVA 1.6), 2024.05 (Stronger LLMs)
모델 타입 Open Source (Apache 2.0)
접근 방식 Hugging Face, GitHub

LLaVA-NeXT는 LLaVA 1.5의 후속작으로, 동적 해상도(AnyRes), 더 큰 LLM, 개선된 OCR 능력을 제공한다. 오픈소스 VLM 중 최고 수준의 성능을 달성했다.

2. 모델 패밀리

2.1 LLaVA-NeXT (LLaVA 1.6)

모델 Vision Encoder LLM 특징
llava-v1.6-mistral-7b CLIP ViT-L/14@336 Mistral-7B Mistral 기반
llava-v1.6-vicuna-7b CLIP ViT-L/14@336 Vicuna-7B Vicuna 기반
llava-v1.6-vicuna-13b CLIP ViT-L/14@336 Vicuna-13B 더 큰 모델
llava-v1.6-34b CLIP ViT-L/14@336 Yi-34B 최대 성능

2.2 LLaVA-NeXT (Stronger LLMs, 2024.05)

모델 Vision Encoder LLM 특징
llava-next-8b CLIP ViT-L/14@336 LLaMA-3-8B LLaMA 3 기반
llava-next-72b CLIP ViT-L/14@336 Qwen-1.5-72B Qwen 기반
llava-next-110b CLIP ViT-L/14@336 Qwen-1.5-110B 최대 규모

2.3 LLaVA-NeXT-Video

모델 특징
LLaVA-NeXT-Video-7B 비디오 이해
LLaVA-NeXT-Video-34B 비디오 + 이미지

3. 아키텍처

3.1 핵심 개선: AnyRes (Dynamic High Resolution)

[고해상도 이미지]
       |
       v
[그리드 분할] --> [타일 1] [타일 2] [타일 3] ...
       |              |        |        |
       v              v        v        v
[전체 썸네일]    [336x336] [336x336] [336x336]
       |              |        |        |
       v              v        v        v
[CLIP ViT]       [CLIP ViT] [CLIP ViT] [CLIP ViT]
       |              |        |        |
       +-------+------+--------+--------+
               |
               v
        [Concatenate]
               |
               v
        [MLP Projection]
               |
               v
           [LLM]

3.2 AnyRes 상세

그리드 설정 최대 타일 최대 이미지 토큰
2x2 4+1 2,880
3x3 9+1 5,760
최대 6+1 4,032 (실제 사용)

3.3 핵심 컴포넌트

컴포넌트 사양
Vision Encoder CLIP ViT-L/14@336 (Frozen)
Projection 2-Layer MLP
LLM 다양한 백본 선택 가능
해상도 동적 (최대 672x672 ~ 2016x672)

4. 이미지 처리

4.1 지원 해상도 그리드

그리드 해상도
1x1 336x336
1x2, 2x1 672x336, 336x672
2x2 672x672
1x3, 3x1 1008x336, 336x1008
... ...
2x3, 3x2 1344x672, 672x1344

4.2 멀티 이미지

항목 지원
최대 이미지 수 컨텍스트 제한 내
이미지 인터리빙 지원
비디오 프레임 지원 (Video 버전)

5. 벤치마크 성능

5.1 LLaVA-NeXT-34B (Yi)

벤치마크 점수 GPT-4V 대비
MMMU (val) 51.1% 90%
MathVista 46.5% 93%
AI2D 74.9% 96%
ChartQA 68.7% 87%
DocVQA 78.0% 88%
TextVQA 69.5% 89%
MMBench 79.3% -
MM-Vet 57.4% -

5.2 LLaVA-NeXT-72B/110B

벤치마크 72B 110B
MMMU 56.7% 58.8%
MathVista 54.3% 56.1%
AI2D 82.1% 83.4%
DocVQA 82.4% 85.2%

5.3 모델별 비교

모델 MMMU MathVista DocVQA
LLaVA-1.5-13B 36.4% 27.6% -
LLaVA-NeXT-7B (Mistral) 35.8% 37.7% 72.5%
LLaVA-NeXT-13B 36.2% 35.3% 74.7%
LLaVA-NeXT-34B 51.1% 46.5% 78.0%

6. 사용 방법

6.1 Hugging Face Transformers

from transformers import LlavaNextProcessor, LlavaNextForConditionalGeneration
from PIL import Image
import torch

model_id = "llava-hf/llava-v1.6-mistral-7b-hf"

processor = LlavaNextProcessor.from_pretrained(model_id)
model = LlavaNextForConditionalGeneration.from_pretrained(
    model_id,
    torch_dtype=torch.float16,
    device_map="auto"
)

image = Image.open("image.jpg")
prompt = "[INST] <image>\nDescribe this image in detail. [/INST]"

inputs = processor(images=image, text=prompt, return_tensors="pt").to(model.device)

outputs = model.generate(
    **inputs,
    max_new_tokens=512,
    do_sample=True,
    temperature=0.2
)

result = processor.decode(outputs[0], skip_special_tokens=True)
print(result)

6.2 멀티 이미지 처리

images = [Image.open("img1.jpg"), Image.open("img2.jpg")]
prompt = "[INST] <image>\n<image>\nCompare these two images. [/INST]"

inputs = processor(images=images, text=prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512)

6.3 vLLM 서빙

python -m vllm.entrypoints.openai.api_server \
    --model llava-hf/llava-v1.6-mistral-7b-hf \
    --max-model-len 8192 \
    --image-input-type pixel_values \
    --image-token-id 32000 \
    --image-input-shape 1,3,336,336

6.4 LLaVA-NeXT-Video

from llava.model.builder import load_pretrained_model
from llava.mm_utils import process_video

# 비디오 로드 및 처리
video_path = "video.mp4"
video_frames = process_video(video_path, num_frames=32)

# 추론
prompt = "Describe what is happening in this video."
response = model.generate(video_frames, prompt)

7. VRAM 요구량

모델 FP16 INT8 INT4
LLaVA-NeXT-7B 16GB 9GB 6GB
LLaVA-NeXT-13B 28GB 15GB 9GB
LLaVA-NeXT-34B 68GB 36GB 20GB
LLaVA-NeXT-72B 144GB 76GB 40GB
LLaVA-NeXT-110B 220GB 116GB 60GB

7.1 추론 속도 (A100 80GB, FP16)

모델 토큰/초
LLaVA-NeXT-7B 52
LLaVA-NeXT-34B 22
LLaVA-NeXT-72B 12

8. 장점

장점 설명
동적 해상도 AnyRes로 고해상도 처리
OCR 개선 LLaVA 1.5 대비 크게 향상
다양한 크기 7B ~ 110B 선택 가능
비디오 지원 Video 버전 제공
오픈소스 완전 공개, Apache 2.0
강력한 LLM LLaMA 3, Qwen 백본

9. 단점

단점 설명
토큰 증가 고해상도 시 토큰 수 급증
복잡한 설정 AnyRes 구성 필요
VRAM 요구 큰 모델은 고사양 필요
환각 여전히 존재

10. 사용 사례

10.1 적합한 사용 사례

  • 고해상도 문서 분석
  • OCR 및 텍스트 추출
  • 복잡한 차트/다이어그램
  • 비디오 이해 (Video 버전)
  • 연구 및 실험
  • 프로덕션 배포 (양자화)

10.2 부적합한 사용 사례

  • 저사양 환경 (큰 모델)
  • 실시간 처리 (고해상도)

11. LLaVA 1.5 vs LLaVA-NeXT 비교

항목 LLaVA 1.5 LLaVA-NeXT
해상도 336x336 고정 동적 (AnyRes)
이미지 토큰 576 최대 4,032
OCR 약함 크게 개선
멀티 이미지 미지원 지원
비디오 미지원 Video 버전
최대 모델 13B 110B

12. 참고 자료