Multimodal LLM — Cách GPT-4V và Gemini 'nhìn' được ảnh
Giải mã bản chất Multimodal LLM: từ ViT patch embedding đến projection layer, hiểu cách GPT-4V và Gemini xử lý ảnh như một 'ngoại ngữ' trong không gian vector mà không cần sửa kiến trúc transformer gốc.
Khi GPT-4V mô tả chi tiết một biểu đồ phức tạp hay Gemini phân tích video dài hàng giờ, điều kỳ diệu này không đến từ "mắt" được gắn vào neural network, mà từ cách chúng coi ảnh như một thứ tiếng nước ngoài—cần được dịch sang "tiếng vector" mà LLM đã thông thạo. Đây là bước nhảy vọt từ pipeline rời rạc sang end-to-end, nơi gradient có thể chảy ngược từ câu trả lời văn bản để điều chỉnh cách mô hình "nhìn".
Vấn đề
Trước khi có Multimodal LLM, cách tiếp cận "nhìn ảnh" là một chuỗi pipeline nối tiếp: Object Detection (phát hiện đối tượng) → Image Captioning (tạo mô tả) → LLM đọc caption. Điều này tạo ra hai lỗ hổng chết người:
-
Mất thông tin tinh tế: Khi bạn mô tả "một con mèo ngồi trên bàn", bạn mất hoàn toàn thông tin về màu lông, khoảng cách đến camera, hay biểu cảm đuôi. Các mô hình trung gian nén ảnh thành văn bản—một định dạng lossy khiến LLM không bao giờ thấy được chi tiết gốc.
-
Lỗi tích lũy: Nếu object detector nhầm "cái bàn" thành "cái ghế", hoặc caption model dùng từ lệch nghĩa, LLM sẽ reasoning dựa trên dữ liệu sai ngay từ đầu. Không có cơ chế nào để gradient từ câu trả lời cuối cùng sửa lại cách trích xuất đặc trưng ảnh.
Cần một kiến trúc end-to-end, nơi ảnh đi thẳng vào LLM dưới dạng mà nó có thể xử lý native: các vector trong không gian embedding.
Ý tưởng cốt lõi
Hãy quên đi ý tưởng rằng LLM "cần được dạy" để nhìn. Thực tế đơn giản hơn: tokens chỉ là vector, và transformer không quan tâm chúng đến từ đâu.
Từ pixel đến "từ vựng hình ảnh"
Quá trình bắt đầu bằng cách coi ảnh như một câu văn dài. Vision Transformer (ViT) cắt ảnh thành các patch 16×16 pixel, flatten mỗi patch thành vector và chiếu lên không gian 768 hoặc 1024 chiều. Với ảnh 224×224, bạn có 196 "visual tokens"—mỗi token là một vector đại diện cho một vùng không gian.
Đây là điểm mấu chốt: một patch ảnh 16×16 sau khi embed không khác gì một token từ "cat" trong không gian vector cả. Cả hai đều là các điểm trong không gian nhiều chiều mà attention mechanism sẽ tính dot-product.
Chiếc cầu nối không gian (Projection Layer)
Vấn đề duy nhất: visual tokens sống trong "thủ đô" vision (CLIP/ViT space), trong khi LLM sống trong "thủ đô" language (4096 hoặc 8192 chiều). Chúng nói hai thứ tiếng khác nhau.
Giải pháp là một projection layer nhẹ—thường chỉ là một linear layer hoặc MLP 2-3 lớp. Đây đóng vai trò như bản đồ địa lý: một phép biến đổi affine (matrix multiplication + bias) đơn giản xoay và co giãn không gian vision để khớp với không gian ngôn ngữ. Không cần thay đổi kiến trúc LLM; chúng ta chỉ thêm một "từ điển song ngữ" ở đầu vào.
Khi đã qua projection, visual tokens được nối tiếp (prepend) vào chuỗi text tokens. Ví dụ: [IMG_PATCH_1] ... [IMG_PATCH_576] [TEXT_TOKEN_1] .... Transformer decoder xử lý cả hai bằng self-attention thuần túy—không cần cross-attention đặc biệt hay kiến trúc phức tạp. Attention chỉ hỏi: "Vector này có liên quan đến vector kia không?"—không quan tâm nguồn gốc là ảnh hay chữ.
Hai triết lý kiến trúc
Cộng đồng hiện chia làm hai trường phái:
Method A: Unified Embedding-Decoder (LLaVA, Qwen-VL, Llama 3.2 Vision)
- Dùng decoder-only LLM không sửa đổi (giống GPT, Llama).
- Visual tokens sau projection được đối xử hoàn toàn như text tokens.
- Đơn giản, hiệu quả, dễ triển khai trên mọi LLM hiện có.
Method B: Cross-Modality Attention (DeepMind Flamingo)
- Chèn thêm cross-attention layers giữa vision và text trong các layer của LLM.
- Cho phép "gating" thông tin visual—quyết định khi nào nhìn ảnh, khi nào tập trung vào text.
- Phức tạp hơn nhưng linh hoạt trong việc điều tiết luồng thông tin.
Cả hai đều dựa trên cùng một insight: chúng ta không cần dạy LLM cách nhìn từ con số 0. Chúng ta chỉ cần dạy nó "đọc" các vector từ encoder đã được pre-trained tốt (CLIP, ViT).
Tại sao nó hoạt động
Bản chất của Attention là hình học, không phải ngữ nghĩa
Self-attention tính softmax(QK^T / √d). Q, K, V đều là vector—chúng có thể đại diện cho từ "cat" hay một patch ảnh chứa lông mèo. Dot-product giữa query của câu hỏi "mèo có màu gì?" và key của patch ảnh chứa lông vàng sẽ có giá trị cao, bất kể chúng xuất phát từ modality nào.
Khi bạn thêm visual tokens vào đầu sequence, RoPE (Rotary Position Embedding) vẫn hoạt động như bình thường—xoay vector theo vị trí. Vị trí ở đây là thứ tự patch (row-major order), tạo ra cảm giác "không gian" trong attention pattern.
Chiến lược huấn luyện thông minh
Điều khiến Multimodal LLM khả thi về mặt tính toán là chiến lược freeze backbone:
- Vision Encoder (ViT/CLIP): Giữ nguyên trọng số, không cập nhật. Đã biết cách nhìn thế giới từ hàng tỷ ảnh.
- LLM Backbone: Giữ nguyên, giữ nguyên khả năng reasoning và kiến thức ngôn ngữ.
- Chỉ train Projection + Instruction Layers: Thường chỉ 1-2% tham số, có thể fine-tune trên GPU consumer trong vài giờ.
Cách tiếp cận này tận dụng transfer learning hai tầng: kiến thức thị giác từ CLIP, kiến thức ngôn ngữ từ LLM, và chỉ học cách "nối dây" giữa chúng.
# Pseudocode minh họa forward pass
def multimodal_forward(image, text):
# 1. Visual tokenization (frozen)
visual_tokens = vit_encoder(image) # [B, N_patches, D_vit]
# 2. Projection (trainable)
visual_embeds = projection_layer(visual_tokens) # [B, N_patches, D_llm]
# 3. Text tokenization (frozen)
text_embeds = llm_embed(text) # [B, N_text, D_llm]
# 4. Concatenate và xử lý bằng LLM
combined = concat([visual_embeds, text_embeds], dim=1)
output = llm_decoder(combined) # Self-attention xử lý cả hai
return outputÝ nghĩa thực tế
| Tiêu chí | Pipeline cũ (OD → Caption → LLM) | Multimodal LLM (End-to-End) |
|---|---|---|
| Thông tin chi tiết | Mất fine-grained details qua trung gian | Giữ nguyên thông tin patch-level |
| Gradient flow | Bị cắt đứt ở caption model | Chảy trực tiếp từ output về vision encoder |
| Latency | 3 lần forward pass riêng biệt | 1 lần forward liên tục |
| Hallucination | Cao (lỗi tích lũy) | Thấp hơn nhưng vẫn tồn tại |
Benchmarks thực tế:
- GPT-4V đạt ~55-60% trên MMMU (college-level multimodal reasoning).
- Gemini 1.5 Pro dẫn đầu video understanding với context window 1M+ tokens.
- Llama 3.2 11B Vision cạnh tranh trên OCR và chart reasoning với kích thước nhỏ hơn nhiều lần so với closed-source models.
Ai đang dùng:
- OpenAI (GPT-4V/GPT-4o), Google (Gemini), Meta (Llama 3.2 Vision), Microsoft (Phi-3 Vision), Alibaba (Qwen-VL), và hệ sinh thái open-source (LLaVA 1.5/1.6, BakLLaVA).
Những hạn chế không thể tránh:
- Hallucination chi tiết: Dễ sai lệch về chữ nhỏ trong ảnh, đếm số lượng objects sai.
- Spatial confusion: Thường nhầm lẫn trái/phải, trên/dưới vì positional encoding của ViT là relative và bị mất khi project vào LLM.
- Bottleneck độ phân giải: Chi phí tính toán tăng theo O(n²) với số lượng patches. Ảnh HD phải downsample hoặc dùng dynamic tiling, làm mất chi tiết fine-grained.
Đào sâu hơn
Paper gốc:
- LLaVA: Visual Instruction Tuning — Kiến trúc Unified Embedding-Decoder điển hình.
- Flamingo: A Visual Language Model for Few-Shot Learning — Mô hình cross-attention giữa vision và language.
- MM-LLMs: Recent Advances in MultiModal Large Language Models — Survey toàn diện về các biến thể kiến trúc.
Bài liên quan TroiSinh:
Cùng cụm (Vision & Multimodal):
- ViT — Chia ảnh thành patch, self-attention cho vision — Hiểu sâu cách visual tokens được tạo ra từ ảnh.
- CLIP — Match image-text bằng contrastive learning — Cách không gian embedding chung được tạo ra trước khi đưa vào LLM.
- Diffusion Models — Noise → Image — Hướng ngược lại: từ text tạo ảnh, bổ sung cho hiểu biết về multimodal generation.
Đọc tiếp:
- Transformer Architecture — Cơ chế Attention và RoPE — Nền tảng để hiểu cách LLM xử lý cả visual và text tokens.
- Agentic AI & Tool Use — Multimodal LLM là nền tảng cho agent có khả năng "nhìn" và hành động trên giao diện người dùng.
Mở rộng:
- Blog Sebastian Raschka về Multimodal LLMs — Phân biệt rõ ràng hai kiến trúc Unified Embedding vs Cross-Attention.
- Thảo luận Reddit r/datascience: How does multimodal LLM work? — Giải thích trực quan về việc không phải "object detection API rồi feed vào LLM".
CLIP — Match image-text bằng contrastive learning, zero-shot classification
CLIP biến classification thành bài toán retrieval: học không gian embedding chung cho ảnh và văn bản từ 400 triệu cặp dữ liệu internet, mở khóa zero-shot classification không cần label cố định.
Diffusion Models — Noise → Image, nguyên lý đằng sau Stable Diffusion
Hiểu bản chất Diffusion Models: từ noise ngẫu nhiên đến ảnh nét căng qua quá trình 'đi ngược' Markov chain, lý do Stable Diffusion chạy nhanh gấp 64 lần nhờ latent space.