Janus-Pro: 이해와 생성을 위한 디커플링 비전 인코더

개요

Janus-Pro는 2025년 1월 DeepSeek이 발표한 통합 멀티모달 이해 및 생성 모델이다. 모델명의 유래인 로마 신화의 야누스(Janus, 두 개의 얼굴을 가진 신)처럼, 시각 이해와 이미지 생성이라는 두 가지 얼굴을 하나의 모델에서 구현한다.

Janus-Pro의 핵심 통찰은 이해와 생성이 근본적으로 다른 시각 표현을 필요로 한다는 것이다. 시각 이해는 의미론적으로 풍부한 고수준(high-level) 표현이 중요하고, 이미지 생성은 픽셀 수준의 정밀한 저수준(low-level) 표현이 중요하다. 기존 통합 모델(Chameleon, Emu3 등)이 하나의 비전 인코더로 두 태스크를 모두 처리하려다 양쪽 모두에서 타협한 것과 달리, Janus-Pro는 **이해용 인코더(SigLIP)**와 **생성용 인코더(VQVAE)**를 독립적으로 운영하는 디커플링 아키텍처를 제안하였다. 이 설계로 7B 파라미터의 소형 모델에서도 DALL-E 3, SD3 수준의 생성 품질과 LLaVA-1.5급 이해 성능을 동시에 달성하였다.

논문: Janus-Pro: Unified Multimodal Understanding and Generation with Data and Model Scaling

아키텍처 상세

전체 구조

Janus-Pro는 네 가지 핵심 컴포넌트로 구성된다:

  1. 이해용 비전 인코더: SigLIP-L (400M params) — 의미론적 시각 표현 추출
  2. 생성용 비전 인코더/디코더: VQVAE (16,384 코드북) — 이미지를 이산 토큰으로 변환/복원
  3. MLP 어댑터 (2개): 각 인코더 출력을 LLM 공간에 매핑하는 독립적 프로젝터
  4. DeepSeek-LLM (7B): 통합 언어 모델 (이해 + 생성 모두 처리)

디커플링 아키텍처

이해 경로 (이미지 → 텍스트):

생성 경로 (텍스트 → 이미지):

두 경로가 동일한 LLM을 공유하지만, 시각 인코딩은 완전히 독립적이다.

왜 디커플링인가?

요구사항이해(Understanding)생성(Generation)
필요한 표현의미론적, 추상적픽셀 수준, 구체적
최적 인코더CLIP/SigLIP (대조 학습)VQVAE (재구성 학습)
정보 초점”무엇이 있는가?""어떻게 생겼는가?”

SigLIP은 이미지의 의미(고양이, 개, 풍경 등)를 잘 포착하지만 픽셀 세부사항은 버린다. VQVAE는 픽셀 재구성을 위한 상세 정보를 보존하지만 고수준 의미 추출에는 약하다. 하나의 인코더로 두 가지를 모두 만족시키는 것은 근본적으로 어렵다.

구성 요소사양
LLMDeepSeek-LLM-7B
이해용 인코더SigLIP-L (400M)
생성용 인코더VQVAE (16,384 코드북)
이미지 해상도384×384 (이해), 384×384 (생성)
이미지 토큰 수576 (이해), 576 (생성)
컨텍스트 길이4096

핵심 혁신

1. 이해-생성 디커플링

통합 멀티모달 모델에서 이해와 생성의 시각 인코더를 분리하는 것이 더 효과적이라는 핵심 통찰을 실험적으로 검증하였다. 커플링 vs 디커플링 실험에서 디커플링이 양쪽 태스크 모두에서 우수한 성능을 보였다.

2. 소형 모델에서의 고품질 생성

7B 파라미터만으로 DALL-E 3 수준의 이미지 생성 품질을 달성한 것은, 적절한 아키텍처 설계가 모델 규모를 보완할 수 있음을 보여준다.

3. 확장 가능한 데이터 전략

이해 데이터와 생성 데이터를 독립적으로 확장하여 각 태스크의 성능을 독립적으로 향상시킬 수 있다. Janus-Pro는 기존 Janus 대비 학습 데이터를 크게 확장하여 성능을 높였다.

벤치마크/성능

이해 성능

벤치마크Janus-Pro-7BLLaVA-v1.5-7BChameleon-7B
MMBench69.467.4
MMMU36.335.8
GQA60.362.0

생성 성능

벤치마크Janus-Pro-7BSDXLDALL-E 3
GenEval (Overall)0.800.550.67
DPG-Bench84.274.783.5

관련 모델 비교

특성Janus-ProChameleonEmu3Show-o2
이해/생성 인코더분리공유공유공유
이해 인코더SigLIPVQ-VAEVQ-VAEVQ-VAE
생성 인코더VQVAEVQ-VAEVQ-VAEVQ-VAE
이해 성능높음보통보통보통
생성 품질높음보통높음보통
모델 크기7B34B8B7B

학습 상세

3단계 학습을 수행한다:

Stage 1: 인코더 정렬

  • 이해용 MLP 어댑터: SigLIP 출력 → LLM 공간 매핑
  • 생성용 MLP 어댑터: LLM 출력 → VQVAE 코드 예측을 위한 매핑
  • LLM과 인코더는 고정

Stage 2: 통합 SFT (Supervised Fine-Tuning)

  • 이해 데이터: LLaVA 스타일의 인스트럭션 튜닝 데이터
  • 생성 데이터: 고품질 텍스트-이미지 쌍
  • 두 태스크를 균형 있게 배합하여 멀티태스크 학습

Stage 3: 생성 품질 향상

  • DPO 등을 통한 생성 품질 최적화
  • 이해 성능 유지를 위한 정규화

실무 활용

import torch
from janus.models import MultiModalModel
 
model = MultiModalModel.from_pretrained(
    "deepseek-ai/Janus-Pro-7B",
    torch_dtype=torch.bfloat16
).to("cuda")
 
# 이미지 이해
response = model.understand(
    image="photo.jpg",
    prompt="이 이미지의 내용을 자세히 설명해주세요."
)
 
# 이미지 생성
image = model.generate(
    prompt="A futuristic city with flying cars at sunset",
    num_images=1
)
image.save("generated.png")

한계 및 전망

한계

  1. 단일 이미지 처리: 다중 이미지나 비디오 처리를 위한 설계가 부재
  2. 해상도 제한: 384px로 고해상도 생성/이해에 한계가 있다
  3. 생성 속도: 자기회귀 방식으로 토큰을 하나씩 생성하므로 확산 모델 대비 느리다
  4. 듀얼 인코더 메모리: 두 개의 비전 인코더를 로드해야 하므로 메모리 사용량이 증가한다

전망

Janus-Pro의 디커플링 철학은 “만능 인코더는 존재하지 않는다”는 실용적 통찰에 기반하며, 향후 더 정교한 태스크별 전문 인코더 조합과 더 큰 LLM 백본으로의 확장이 기대된다. DeepSeek의 MoE 기술(DeepSeek-V3)과 결합하면 파라미터 효율성도 크게 높일 수 있을 것이다.

관련 문서