[멀티모달 시리즈] LLaVA - LLaVA로 이해하는 멀티모달

JOINSPIRED·2025년 8월 28일
post-thumbnail

논문 리뷰에 앞서

AI 가 이미지는 잘 본다. 그런데 이미지를 보고 말은 얼마나 잘할 수 있을까? 시각과 언어의 연결이 어떻게 이루어지는거지?

Vision 도메인에서 모델 강건성, OOD, 최적화 같은 문제를 풀어오던 저는 멀티모달이 너무 신기했습니다. 세상의 트랜드는 모델은 ‘보는 AI’에서 ‘보고 말하는 AI’로 빠르게 이동 중인데 나는 아직 잘 모르는구나. 그래서 저는 멀티모달 전환을 가장 짧은 러닝커브로 체득하게 해줄 실제 사례를 찾았고, 그중 하나로 LLaVA를 선택했습니다.

이번 분기 목표는 분명합니다. 멀티모달 연구의 토대를 쌓고, 운영 가능한 기술 스택으로 연결하기. LLaVA 리뷰를 출발점으로 삼아 관련 연구들을 연속적으로 읽고, 실전 재현과 응용까지 잇겠습니다.

앞서 말씀드리면 공부를 하면서 이것도 결국 feature space 상에서 다루면 통하는구나 이해하고나서부터 급격히 이해가 되기 시작했습니다. 이 관점에서 보신다면 여러분들께서도 멀티모달에 대한 진입 장벽을 낮추실 수 있을 것 같습니다.

왜 멀티모달을 공부하나요?

  • 트렌드의 중심: 세상은 LLM으로 재편됐고, 다음 스텝은 LLM × Vision 결합이라 생각합니다.

  • 커리어 확장성: Vision 역량 위에 멀티모달 정렬(Alignment)과 LLM 활용을 얹고, 작은 프로토타입이라도 운영(Ops)까지 연결하면 연구·제품 모두에서 선택지가 넓어집니다.

왜 LLaVA 로 공부했을까요?

LLaVA 로 첫 멀티모달 포스팅을 시작하는 이유는 간단하기 때문입니다. 우선 CLIP 에 대한 사전지식이 있었기에 더 쉽게 다가왔던 것 같습니다. CLIP 에 대해서는 이번 글에서 이해를 돕기 위한 정도로 다루고 자세한 포스팅은 추후 별도로 다루겠습니다.

  1. 간결 연결 설계(= 최소 연결로 짠 Vision-Language Model, VLM)

    • 고정된 CLIP(시각 인코더) + 선형 투사층 W(시각 특징을 언어 임베딩으로 변환) + Vicuna(언어 모델).
    • 복잡한 모듈 없이 정렬 → 종단 미세조정의 2단계만으로 대화형 시각 이해를 얻습니다. 재현이 빠르고 위험이 낮습니다.
  2. 데이터 전략의 현실성

    • 대규모 인력 라벨 대신 텍스트 교사(GPT 계열)가 만든 멀티모달 지시 데이터로 훈련해 비용을 절감합니다.
  3. 확장성과 재현성

    • 오픈소스로 시작하므로 맥락에 맞게 빠르게 실험할 수 있습니다.

오해 방지 한 줄: CLIP은 시각 인코더, W는 언어 임베딩 정렬기, Vicuna가 언어 생성과 추론의 주체입니다.

이 리뷰에서 저와 독자분들이 가져갈 것

  1. Alignment 의 감각

    • 시각 특징을 언어 임베딩 공간에 정확히 맞춰 넣는 법.
    • 한 줄 정의: “이미지 특징을 LLM이 ‘토큰처럼’ 읽게 만드는 과정.”
  2. 지시 튜닝 파이프라인(Instruction-tuning Pipeline)

    • 데이터 레시피 설계 → 프롬프트/포맷팅 → 훈련(스케줄·하이퍼) → 평가 지표까지 한 세트로 다룹니다.
    • 한 줄 정의: “모델이 지시를 잘 따르도록 만드는 end-to-end 제작 공정.”
  3. 트레이드오프 맵(Trade-off Map)

    • 성능 ↔ 비용 ↔ 재현성을 좌표로 두고 의사결정을 구조화합니다.
      • CLIP 고정 vs 부분 언프리즈(성능↑/비용↑/재현성↓)
      • LoRA 랭크(작게: 비용↓/성능 보수적, 크게: 비용↑/성능↑)
      • 입력 해상도(높게: 작은 물체·OCR↑/메모리·지연↑)
      • 학습 데이터 규모/질(양↑: 비용↑, 질↑: 효율↑)

LLaVA는 어떻게 동작하는가?

한눈에 3줄 요약

1) CLIP이 입력 이미지를 시각 특징으로 변환한다 (Z_v).
2) 선형 프로젝터 W가 그 특징을 언어 임베딩 토큰으로 투사한다 (H_v = W · Z_v).
3) VicunaH_v사용자 지시/질문을 함께 받아 오토리그레시브로 답을 생성한다.


구성요소와 역할

  • CLIP (시각 인코더, 고정)
    웹 규모 이미지-텍스트로 학습된 오픈셋 시각 표현기. LLaVA에서는 가중치를 고정(freeze)해서 안정적인 시각 근거를 제공한다.
  • 선형 프로젝터 W (학습 대상)
    CLIP의 시각 특징 Z_vVicuna의 단어 임베딩 차원으로 직선형(Linear) 투사하여 시각 토큰열 H_v를 만든다. 복잡한 Q-Former나 크로스어텐션 없이 가벼운 연결만 쓴다.
  • Vicuna (언어 디코더, Stage 2에서 학습)
    지시 튜닝된 LLaMA 계열 LLM. 이미지에서 온 H_v와 텍스트 지시를 받아 대화/설명/추론을 수행한다.

오해 방지 한줄
CLIP은 “보는 역할”, W는 “보는 것을 언어 토큰으로 바꾸는 어댑터”, Vicuna는 “말하는/추론하는 역할”이다.


추론(Inference) 경로

1) 이미지 X_vCLIP → 시각 특징 Z_v
2) Z_vW → 시각 토큰열 H_v
3) [H_v] + 사용자 프롬프트Vicuna
4) Vicuna가 토큰을 순차 생성하고 /EOS에서 종료


왜 이 방식이 통하나? (핵심 논리)

  • 강력한 시각 표현을 고정: CLIP은 이미 폭넓은 시각 개념을 학습했다. 이를 건드리지 않고 안정적 근거로 사용.
  • 최소 연결, 최대 호환: 선형 투사만으로 LLM 임베딩과 정렬지연/메모리를 아끼고, LLM의 언어 추론력을 그대로 끌어쓴다.
  • 명시적 지시 SFT: 단순 캡션/언어모델링이 아닌 지시-응답 데이터“지시를 잘 따르는 습관”을 직접 가르친다.

한 문장 요약

CLIP(고정) → W로 언어공간 정렬 → Vicuna로 지시-응답 생성.
이 단순한 연결과 2단계 SFT만으로, 이미지를 근거로 대화/추론하는 멀티모달 에이전트를 만든다.

다음 포스팅

https://velog.io/@jsy7058/reviewllava1


Reference

profile
기술과 산업에 대해 궁금한 것들을 함께 이야기 해보고 싶습니다.

0개의 댓글