CLIP에서 BLIP-2까지 — 모달리티 브리지로서의 Q-Former(From CLIP to BLIP-2 — Q-Former as Modality Bridge)

CLIP은 이미지(image)와 텍스트(text)를 정렬(align)하지만, 캡션을 생성하거나 질문에 답하거나 대화를 이어갈 수는 없습니다. BLIP-2(Salesforce, 2023)는 작은 학습 가능 브리지(trainable bridge) 하나로 이 문제를 풀었습니다. 32개의 학습 가능 질의 벡터(learnable query vector)가 동결된 ViT(frozen Vision Transformer; ViT)의 특징(feature) 위에서 교차 어텐션(cross-attention)을 수행하고, 그 결과가 동결된 거대 언어 모델(frozen Large Language Model; LLM)의 입력 흐름에 곧바로 들어갑니다. 188M 파라미터(parameter)짜리 브리지가 110억(11B) 규모 LLM과 ViT-g/14를 연결한 것입니다. 2026년까지 등장한 거의 모든 어댑터(adapter) 기반 시각-언어 모델(Vision-Language Model; VLM) — MiniGPT-4, InstructBLIP, LLaVA 계열 — 은 모두 이 구조의 후손입니다. 이번 강의에서는 Q-Former의 구조를 읽어 내고, 2단계 학습(two-stage training)을 설명하며, 시각 토큰(visual token)을 동결된 텍스트 디코더(frozen text decoder)에 흘려 넣는 장난감 버전(toy version)을 직접 만듭니다.

유형: Build 언어: Python (stdlib, 교차 어텐션 + 학습 가능 질의 데모) 선수 지식: Phase 12 · 02 (CLIP), Phase 7 (Transformers) 예상 시간: 약 180분

학습 목표

  • 동결된 시각 인코더(frozen vision encoder)와 동결된 LLM 사이에 학습 가능 병목(trainable bottleneck)을 두는 방식이 비용(cost)과 안정성(stability) 측면에서 종단간 미세조정(end-to-end finetuning)보다 어떤 점에서 우위에 있는지 설명할 수 있습니다.
  • 고정된 개수의 학습 가능 질의(learnable query)가 외부 이미지 특징(external image feature)에 어텐션(attention)을 수행하는 교차 어텐션 블록(cross-attention block)을 직접 구현할 수 있습니다.
  • BLIP-2의 2단계 사전학습(two-stage pretraining)을 따라갑니다. 즉 표현 학습 단계(representation 단계: ITC + ITM + ITG)와 생성 학습 단계(generative 단계: 동결된 디코더와 LM loss)를 순서대로 짚어 갑니다.
  • Q-Former를 LLaVA에서 사용하는 더 단순한 MLP 프로젝터(MLP projector)와 비교하고, 어떤 상황에서 어느 쪽이 유리한지 근거를 제시할 수 있습니다.

문제

동결된 ViT는 이미지 한 장마다 차원(dim) 1408짜리 패치 토큰(patch token)을 256개 만들어 냅니다. 동결된 7B LLM은 차원 4096짜리 토큰 임베딩(token embedding)을 기대합니다. 가장 단순한 브리지는 1408에서 4096으로 매핑하는 선형 계층(linear layer) 하나이고, 이 방식은 동작은 합니다. 하지만 패치 토큰 256개를 모두 LLM 컨텍스트(context)에 집어넣어야 하므로, 이미지 한 장당 추가로 256개 토큰이 소비됩니다. 32장짜리 배치(batch)에서는 시각 모달리티(visual modality)만으로 8,192 토큰이 사라지는 셈입니다.

BLIP-2가 던진 질문은 이렇습니다. 256개 토큰짜리 이미지 표현(image representation)을 훨씬 적은 토큰 수(예: 32개)로 압축(compress)하면서도, LLM이 캡션을 만들고 질문에 답하고 이미지에 대해 추론할 만큼 충분한 정보를 보존할 수 있을까? 그리고 동결된 백본(frozen backbone)을 전혀 건드리지 않고 오직 브리지의 파라미터만으로 이를 학습시킬 수 있을까?

그 답이 바로 Q-Former입니다. 32개의 학습 가능 "질의(query)" 벡터가 ViT의 패치 토큰에 교차 어텐션을 수행해, LLM이 소비할 32개짜리 시각 요약(visual summary)을 만들어 냅니다. 전체 파라미터는 188M입니다. LLM을 건드리기 전에 대조(contrastive)·매칭(matching)·생성(generative) 목적 함수(objective)로 먼저 학습합니다.

사전 테스트

2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요

1.BLIP-2가 256개 ViT 패치 토큰을 LLM에 직접 넘기지 않고 32개의 학습 가능 질의 벡터(learnable query)를 사용하는 이유는?

2.동결된 인코더 사이에 학습 가능한 브리지(bridge)를 두는 방식이 종단간 미세조정보다 가지는 이점은?

0/2 답변 완료

개념

학습 가능 질의(Learnable queries)

Q-Former의 핵심 기법은, LLM의 텍스트 토큰이 직접 이미지 패치에 어텐션하게 두지 않는 것입니다. 대신 32개의 학습 가능 질의 벡터 Q를 새로 만들고, 이 질의들이 이미지 패치에 어텐션하게 합니다. 질의는 모델의 파라미터입니다. 학습 중에 갱신되며, 어떤 이미지가 들어오든 같은 32개 질의가 사용됩니다.

교차 어텐션을 통과한 뒤 각 질의는 이미지의 압축된 요약 한 조각을 담게 됩니다. "주요 객체를 묘사하라", "배경을 묘사하라", "객체 수를 세어라" 같은 역할을 직관적으로 떠올릴 수 있지만, 실제로 질의가 의미 라벨(semantic label)에 글자 그대로(literal) 특화되는 것은 아닙니다. 질의는 다운스트림(downstream) 손실을 가장 잘 줄여 주는 인코딩(encoding) 방식을 학습할 뿐입니다.

구조(Architecture)

Q-Former는 12개 계층(layer), 약 100M 파라미터 규모의 작은 트랜스포머(transformer)로, 두 개의 경로(path)를 가집니다.

  1. 질의 경로(Query path): 32개 질의 벡터가 (질의들 사이의) 셀프 어텐션(self-attention)을 지나고, 동결된 ViT 패치 토큰에 대한 교차 어텐션을 지나고, 그 다음 FFN(Feed-Forward Network; FFN)을 통과합니다.
  2. 텍스트 경로(Text path): BERT(Bidirectional Encoder Representations from Transformers; BERT)와 비슷한 텍스트 인코더(text encoder)입니다. 셀프 어텐션과 FFN 가중치(weight)는 질의 경로와 공유합니다. 텍스트 경로에서는 교차 어텐션이 비활성화(disabled)되어 있습니다.

학습 시점에는 두 경로가 모두 동작합니다. 질의와 텍스트는 공유된 셀프 어텐션을 통해 상호작용하므로, 텍스트가 필요한 작업(ITM, ITG)에서는 질의가 텍스트에 조건화(condition)될 수 있습니다. 추론 시점에 VLM으로 넘겨줄 때는 질의 경로만 흐르고, 32개의 시각 토큰이 출력됩니다.

2단계 학습(Two-stage training)

BLIP-2는 두 단계로 사전학습됩니다.

Stage 1: 표현 학습(representation learning, LLM 없이). 세 가지 손실(loss)을 동시에 씁니다.

  • ITC(image-text contrastive; 이미지-텍스트 대조): 풀링된 질의 토큰(pooled query token)과 텍스트 CLS(Classification; CLS) 토큰 사이에 CLIP 방식의 대조 손실을 적용합니다.
  • ITM(image-text matching; 이미지-텍스트 매칭): 이 이미지-텍스트 쌍이 실제로 짝이 맞는지를 맞히는 이진 분류기(binary classifier)입니다. 하드 네거티브 마이닝(hard-negative mining)으로 학습합니다.
  • ITG(image-grounded text generation; 이미지 기반 텍스트 생성): 질의에 조건화된 텍스트 위에 인과적 LM(causal Language Model) 헤드를 얹습니다. 질의가 텍스트로 다시 풀어낼 수 있는 콘텐츠를 인코딩하도록 강제합니다.

이 단계에서는 Q-Former만 학습합니다. ViT는 동결되어 있고, LLM은 아직 등장하지 않습니다.

Stage 2: 생성 학습(generative learning). 동결된 LLM(OPT-2.7B, Flan-T5-XL 등)을 붙입니다. 32개의 질의 출력을 작은 선형 계층으로 LLM 임베딩 차원에 사영(projection)합니다. 이 결과를 텍스트 프롬프트(prompt) 앞에 덧붙입니다(prepend). 그리고 (프롬프트 + 이미지 + 캡션)을 이은 시퀀스 위의 LM 손실로 Q-Former와 선형 사영만 학습합니다.

Stage 2까지 마치면 Q-Former + 사영이 곧 시각 어댑터(visual adapter) 전체가 됩니다. 추론 흐름은 이미지 → ViT → Q-Former → 선형 사영 → 텍스트 앞에 prepend → 동결된 LLM이 출력 생성으로 이어집니다.

파라미터 경제학(Parameter economics)

ViT-g/14(1.1B, 동결) + OPT-6.7B(6.7B, 동결) + Q-Former(188M, 학습)로 구성한 BLIP-2는 전체 약 8B 파라미터 중 학습되는 부분은 188M뿐입니다. Q-Former 단독으로 보면 전체 스택의 약 2.4%에 불과합니다. 학습 비용도 이 비율을 그대로 따라갑니다. 종단간 학습이라면 몇 주가 걸릴 일이, A100 몇 장 규모의 자원으로 며칠이면 끝납니다.

품질 면에서도 이 브리지는 통합니다. BLIP-2는 제로샷 VQA(zero-shot Visual Question Answering; VQA)에서 Flamingo-80B와 동등하거나 더 좋은 성능을 내면서도 모델 크기는 50배 작습니다.

InstructBLIP과 지시문 인식 Q-Former(instruction-aware Q-Former)

InstructBLIP(2023)은 Q-Former에 지시문 텍스트(instruction text)라는 추가 입력을 더합니다. 교차 어텐션 시점에 질의가 이미지 패치뿐 아니라 지시문에도 접근할 수 있습니다. 그래서 질의는 모든 입력에 동일하게 적용되는 고정 요약 대신, 지시문마다 다른 방식으로 특화(specialize)될 수 있습니다. 예를 들어 "차의 개수를 세라(count the cars)"와 "분위기를 묘사하라(describe the mood)" 사이에서 다른 동작을 합니다. 미공개(held-out) 과제 벤치마크에서 성능이 올라간 것이 보고되었습니다.

MiniGPT-4와 사영만 학습하는 접근(projector-only approach)

MiniGPT-4는 Q-Former 구조를 그대로 유지하면서, 다른 모든 부분은 동결하고 출력 선형 사영(output linear projection)만 학습했습니다. 비용은 싸지만 그만큼 품질 비용을 치릅니다. 질의는 결국 본인이 학습한 것이 아니라 BLIP-2의 것이기 때문입니다. 빠른 반복 실험에는 적합하지만, 가장 좋은 구조라고 보기는 어렵습니다.

LLaVA가 더 단순한 길로 간 이유

LLaVA(2023, Lesson 12.05)는 Q-Former를 평범한 2계층 MLP(Multi-Layer Perceptron; MLP)로 대체했습니다. 이 MLP는 모든 ViT 패치 토큰을 LLM 공간으로 사영합니다. 24x24 그리드라면 이미지 한 장당 576개 토큰을 모두 LLM에 그대로 넣는 셈입니다. 압축률은 나쁘지만, LLM이 원본 패치 위에서 직접 어텐션을 수행할 수 있다는 장점이 있습니다. 발표 당시에는 논쟁(controversial)이 있었지만, 2023년 말에는 이 방식이 주류가 되었습니다. 시각 지시문 데이터(visual instruction data, 예: LLaVA-Instruct-150k)를 통해, MLP만으로도 충분한 신호(signal)를 보존하도록 학습시킬 수 있음이 증명되었기 때문입니다. 그 대가로 LLaVA의 컨텍스트는 더 빨리 차오르지만, 대신 다중 이미지(multi-image)와 비디오(video)로 자연스럽게 확장됩니다.

2026년 기준 이 분야는 둘로 갈렸습니다. 토큰 예산(token budget)이 빠듯한 영역(긴 비디오, 다수의 이미지)에서는 Q-Former가 살아남았고, 토큰 한 개당 품질(quality per token)이 더 중요한 영역에서는 MLP 프로젝터가 우세합니다.

게이트가 달린 교차 어텐션(Gated cross-attention): 조상 Flamingo

Flamingo(Lesson 12.04)는 BLIP-2보다 먼저 등장했고, 같은 교차 어텐션 아이디어를 썼습니다. 다만 단일 브리지(single bridge)가 아니라 동결된 LLM의 모든 계층(every layer)에서 교차 어텐션을 적용했다는 점이 다릅니다. BLIP-2는 입력 계층(input layer) 한 곳에서만 압축해도 충분히 동작한다는 사실을 보였습니다. Gemini와 Idefics는 둘을 결합해, 끼워 넣은(interleaved) 입력 토큰과 선택적인 게이트 교차 어텐션(optional gated cross-attention)을 함께 써서 인컨텍스트 퓨샷(in-context few-shot)을 지원합니다.

2026년의 후손들(descendants)

  • Q-Former: BLIP-2, InstructBLIP, MiniGPT-4, 그리고 토큰 예산이 빠듯한 대부분의 비디오-언어 모델(video-language model)에서 쓰입니다.
  • 퍼시버 리샘플러(Perceiver resampler): Flamingo의 변종(variant)입니다(Lesson 12.04). Idefics 계열, Eagle, OmniMAE 등에서 쓰입니다.
  • MLP 프로젝터(MLP projector): LLaVA, LLaVA-NeXT, LLaVA-OneVision, Cambrian-1 등에서 쓰입니다.
  • 어텐션 풀(Attention pool): VILA, PaliGemma 등에서 쓰입니다.

네 방식 모두 유효합니다. 결정의 핵심은, 토큰 예산이 빠듯한 상황인지 아니면 토큰 한 개당 품질이 우선인 상황인지입니다.

사용해보기

code/main.py는 표준 라이브러리(stdlib)만으로 Q-Former 스타일 교차 어텐션을 만듭니다.

  1. 256개의 이미지 패치 토큰(dim 128)을 시뮬레이션(simulate)합니다.
  2. 32개의 학습 가능 질의(dim 128)를 인스턴스화(instantiate)합니다.
  3. 스케일드 점곱 교차 어텐션(scaled dot-product cross-attention)을 실행합니다. Q는 질의에서, K/V는 패치에서 가져옵니다.
  4. 선형 계층 하나로 LLM 차원(LLM-dim, 512)에 사영합니다.
  5. LLM에 바로 넣을 수 있는 32개 시각 토큰을 출력합니다.

모든 수치 계산은 벡터를 순회하는 순수 파이썬(pure Python) 중첩 루프(nested loop)로 작성되어 있습니다. 장난감 구현이지만 텐서의 모양(shape)은 정확합니다. 어텐션 가중치(attention weight) 행렬을 출력하므로, 각 질의가 어느 패치에서 정보를 끌어왔는지 직접 확인할 수 있습니다.

산출물 만들기

이 강의는 outputs/skill-modality-bridge-picker.md를 만듭니다. 대상 VLM 구성(시각 인코더의 토큰 개수, LLM 컨텍스트 예산, 배포 제약, 품질 목표)을 입력으로 받아 Q-Former vs MLP vs 퍼시버 리샘플러 중 하나를 추천하고, 짧은 근거(justification)와 각 브리지의 파라미터 수 추정치를 함께 제공합니다.

연습문제

  1. 쉬움. 교차 어텐션 블록을 PyTorch로 구현합니다. 질의 32개와 키/값(key/value) 256개일 때, 어텐션 가중치 행렬이 32 x 256 형태이고 소프트맥스(softmax) 이후 각 행의 합이 1이 되는지 확인합니다.
  2. 중간. BLIP-2 stage 1에서 Q-Former는 ITC, ITM, ITG 세 손실을 동시에 돌립니다. 각 손실의 순전파(forward) 시그니처(signature)를 의사 코드(pseudo-code)로 작성합니다. 세 손실 중 어떤 것이 텍스트 인코더 경로를 활성화(active)된 상태로 요구합니까?
  3. 중간. 파라미터 수를 비교합니다. Q-Former(12 계층, 은닉 차원 768)와 2계층 MLP 프로젝터(1408 → 4096, 두 계층)를 비교합니다. 어느 정도 규모의 LLM부터 188M짜리 Q-Former 비용이 학습 효율(training efficiency) 측면에서 회수됩니까?
  4. 어려움. BLIP-2 논문(arXiv:2301.12597)의 3.2절을 읽고, Q-Former의 초기화(initialization) 방식을 정리합니다. 무작위(random) 초기화 대신 BERT-base에서 가져와 초기화하는 것이 수렴(convergence)을 왜 빠르게 하는지 설명합니다.
  5. 어려움. 10분짜리 비디오를 1 FPS(Frames Per Second; FPS)로 샘플링해 60 프레임을 얻는다고 합시다. 프레임 한 장당 토큰 비용을 (Q-Former → 프레임당 32 토큰)과 (MLP 프로젝터 → 프레임당 576 토큰)으로 각각 계산합니다. 둘 중 128k 토큰짜리 LLM 컨텍스트 창(context window)에 들어가는 쪽은 어디입니까?

핵심 용어

용어흔한 설명실제 의미
Q-Former"질의 트랜스포머(querying transformer)"32개의 학습 가능 질의 벡터를 갖고, 동결된 ViT 특징에 교차 어텐션을 수행하는 작은 트랜스포머다.
학습 가능 질의(Learnable queries)"시각용 소프트 프롬프트(soft prompt for vision)"교차 어텐션의 질의 측에 쓰이는 고정 개수의 파라미터다. 모델마다 학습되며, 모든 입력에 대해 동일하게 공유된다.
교차 어텐션(Cross-attention)"Q는 이쪽, K/V는 저쪽"질의·키·값이 서로 다른 출처에서 오는 어텐션이다. 질의가 ViT 패치에서 정보를 끌어오는 방식이다.
ITC"이미지-텍스트 대조(image-text contrastive)"Q-Former의 풀링된 질의와 텍스트 CLS에 적용하는 CLIP 스타일 손실이다.
ITM"이미지-텍스트 매칭(image-text matching)"하드 네거티브 마이닝으로 얻은 쌍 위에서 작동하는 이진 분류기다. 질의가 미세한 불일치까지 구분하도록 강제한다.
ITG"이미지 기반 텍스트 생성(image-grounded text generation)"질의에 조건화된 텍스트 생성용 인과적 LM 손실이다. 질의가 텍스트로 풀어낼 수 있는 콘텐츠를 인코딩하게 만든다.
2단계 사전학습(Two-stage pretraining)"표현 학습 후 생성 학습"Stage 1은 Q-Former만(ITC/ITM/ITG) 학습하고, Stage 2는 동결된 LLM을 붙여 사영 + Q-Former만 학습한다.
동결 백본(Frozen backbone)"미세조정하지 않음"시각 인코더와 LLM 가중치를 고정하고, 브리지만 학습하는 방식이다.
사영 헤드(Projection head)"LLM 차원으로 가는 선형층"Q-Former 출력을 LLM 임베딩 차원으로 옮겨 주는 마지막 선형 계층이다.
퍼시버 리샘플러(Perceiver resampler)"Flamingo 버전"비슷한 학습 가능 질의 기반 교차 어텐션이다. BLIP-2는 이를 단일 브리지로 한 번 쓰고, Flamingo는 모든 계층에서 사용한다.

더 읽을거리

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

이 강의에서 생성된 프롬프트, 스킬, 코드 산출물 1개

modality-bridge-picker

Recommend Q-Former vs MLP projector vs Perceiver resampler for a VLM configuration given token budget, quality target, and training compute.

Skill

확인 문제

3문제 · 모두 맞추면 완료 표시가 가능합니다

1.BLIP-2 Stage 1이 ITC, ITM, ITG 세 가지 손실을 동시에 사용합니다. ITG(이미지 기반 텍스트 생성)가 필수적인 이유는?

2.LLaVA가 Q-Former를 단순 2층 MLP 프로젝터로 대체하고도 경쟁력 있는 결과를 달성했습니다. Q-Former가 여전히 선호되는 경우는?

3.Q-Former에서 질의 경로와 텍스트 경로는 셀프 어텐션과 FFN 가중치를 공유하지만 한 가지 핵심 차이가 있습니다. 그것은?

0/3 답변 완료

추가 문제 풀기

AI가 강의 내용을 바탕으로 새로운 문제를 생성합니다