Что такое Fuyu-8B и чем архитектурно отличается от GPT-4V?
Краткий тезис
Fuyu-8B — мультимодальная языковая модель от Adept (2023), которая обрабатывает изображения без отдельного encoder|vision encoder. Она разбивает картинку на патчи, квантует каждый патч в дискретный токен через кодовую книгу и подаёт эти токены прямо в LLM как обычные текстовые. GPT-4V (OpenAI, 2023) использует отдельный encoder|vision encoder (предположительно ViT) и механизм cross-attention для связи визуальных и текстовых представлений. Главное отличие: Fuyu — единая end-to-end архитектура без специализированного визуального кодировщика, что упрощает обучение, но снижает качество понимания изображений.
1. Термины: vision encoder, патчи, токенизация изображений, кодовая книга
encoder|Vision encoder — нейросеть (обычно ViT или ResNet), которая преобразует изображение в последовательность визуальных эмбеддингов. В мультимодальных моделях эти эмбеддинги затем подаются в LLM.
Патчи (patches) — фрагменты изображения фиксированного размера (например, 16×16 пикселей). Изображение делится на сетку патчей, каждый патч обрабатывается отдельно.
Токенизация изображений — процесс преобразования патча в дискретный токен (число из фиксированного словаря). В Fuyu это делается через кодовую книгу (codebook) — набор learnable векторов. Каждый патч маппится на ближайший вектор из кодовой книги, его индекс становится токеном.
Кодовая книга (codebook) — матрица размером (K, D), где K — количество токенов (например, 8192), D — размерность эмбеддинга. Используется в VQ-VAE и подобных архитектурах.
2. Архитектура Fuyu-8B: без vision encoder
Fuyu-8B (опубликован Adept в декабре 2023) — это decoder-only LLM (на базе 8B параметров), которая принимает на вход смесь текстовых и визуальных токенов. Процесс:
- Разбиение изображения на патчи. Изображение масштабируется до фиксированного размера (например, 224×224), делится на патчи 16×16. Получается
(14×14 = 196)патчей. - Квантование каждого патча. Каждый патч прогоняется через небольшой patch encoder (свёрточная сеть) и затем через кодовую книгу — выбирается ближайший вектор из codebook. Индекс этого вектора — визуальный токен.
- Формирование последовательности. Визуальные токены вставляются в начало или между текстовыми токенами. Специальные токены-разделители (<image>,
</image>) обозначают границы. - Подача в LLM. Стандартный transformer (decoder) обрабатывает всю последовательность как обычные токены. LLM не знает, что часть токенов — визуальные; она учится предсказывать следующий токен (текстовый или визуальный) на всём корпусе.
Ключевая особенность: нет отдельного vision encoder, который бы выдавал непрерывные эмбеддинги. Визуальная информация сжимается в дискретные токены, которые LLM учится интерпретировать.
Обучение: end-to-end на парах (изображение, текст). Функция потерь — стандартный cross-entropy на текстовых токенах (визуальные токены тоже предсказываются, но loss на них не считается, так как они — вход). Patch encoder и codebook обучаются вместе с LLM.
3. Архитектура GPT-4V: отдельный vision encoder
GPT-4V (OpenAI, 2023) — мультимодальная версия GPT-4. Точная архитектура не раскрыта, но на основе публикаций и анализа можно восстановить общую схему:
- Vision encoder. Предположительно, это ViT-L/14 (Vision Transformer) или аналогичный, предобученный на огромном датасете изображений (CLIP, DINOv2). Encoder выдаёт последовательность визуальных эмбеддингов (например, 256 или 576 токенов для изображения 224×224).
- Проекция / alignment. Визуальные эмбеддинги проходят через проекционный слой (MLP или Q-Former), чтобы привести их размерность к размерности эмбеддингов LLM.
- Cross-attention или concatenation. В GPT-4V, скорее всего, используется cross-attention между визуальными эмбеддингами и текстовыми токенами внутри LLM. Альтернатива — просто конкатенация визуальных эмбеддингов с текстовыми (как в LLaVA), но cross-attention даёт более гибкое взаимодействие.
- LLM. Стандартный decoder transformer (GPT-4) обрабатывает объединённую последовательность.
Отличие от Fuyu: визуальные эмбеддинги непрерывны (не квантованы) и получены мощным предобученным encoder'ом. Это даёт более богатое представление изображения, но требует дополнительных вычислительных ресурсов и этапа alignment.
4. Сравнение архитектур (таблица)
| Характеристика | Fuyu-8B | GPT-4V |
|---|---|---|
| Vision encoder | Нет (patch encoder + codebook) | Отдельный ViT (предположительно) |
| Тип визуальных представлений | Дискретные токены (индексы codebook) | Непрерывные эмбеддинги |
| Способ интеграции с LLM | Прямая подача токенов в LLM | Cross-attention или конкатенация |
| Сложность архитектуры | Низкая (единая модель) | Высокая (два модуля, alignment) |
| Количество параметров | ~8B (все параметры обучаются) | ~1.8T (GPT-4) + encoder |
| Качество понимания изображений | Среднее (потеря из-за квантования) | Высокое (богатые эмбеддинги) |
| Скорость инференса | Высокая (нет отдельного encoder) | Ниже (два прохода) |
| Возможность fine-tuning | Простой end-to-end | Требует осторожности (заморозка encoder) |
| Размер контекста | Ограничен длиной последовательности (визуальные токены занимают много места) | Может быть больше за счёт сжатия encoder'ом |
5. Преимущества Fuyu-8B
- Простота архитектуры. Нет необходимости в отдельном vision encoder, alignment слоях. Всё обучается end-to-end.
- Меньше параметров. Весь визуальный процессор — маленький patch encoder + codebook (несколько миллионов параметров против сотен миллионов у ViT).
- Быстрый инференс. Не нужно прогонять изображение через большой encoder; квантование патчей быстрое.
- Гибкость. Можно подавать изображения любого размера (просто меняется количество патчей), хотя есть ограничение по длине контекста.
- Простой fine-tuning. Можно дообучать модель на новых доменах без заморозки частей.
6. Недостатки Fuyu-8B
- Потеря информации при квантовании. Дискретные токены не могут передать тонкие детали изображения (цвета, текстуры). Качество ниже, чем у непрерывных эмбеддингов.
- Ограниченная разрешающая способность. Каждый патч квантуется в один токен — теряется пространственная структура внутри патча.
- Длинная последовательность. Для изображения 224×224 получается 196 токенов. Для больших изображений (1024×1024) — 4096 токенов, что может превысить контекстное окно.
- Зависимость от кодовой книги. Размер codebook (K) — гиперпараметр; слишком маленький — плохое покрытие, слишком большой — сложность обучения.
- Качество уступает GPT-4V. В бенчмарках (VQA, captioning) Fuyu показывает результаты ниже, чем модели с vision encoder.
7. Преимущества GPT-4V
- Высокое качество. Vision encoder предобучен на миллиардах изображений, даёт богатые представления. Cross-attention позволяет LLM фокусироваться на нужных частях изображения.
- Гибкость в разрешении. Encoder может обрабатывать изображения разных размеров, адаптируя количество патчей.
- Поддержка сложных задач. Распознавание текста на изображениях, понимание графиков, детальное описание сцен.
8. Недостатки GPT-4V
- Сложность архитектуры. Требуется alignment между encoder и LLM, что усложняет обучение и fine-tuning.
- Больше параметров. Vision encoder добавляет сотни миллионов параметров, увеличивая стоимость инференса.
- Меньшая скорость. Два прохода (encoder + LLM) увеличивают latency.
- Закрытость. Точная архитектура неизвестна, сложно воспроизвести.
9. Когда выбирать Fuyu, а когда GPT-4V
| Сценарий | Рекомендуемая модель |
|---|---|
| Мобильное устройство, ограниченные ресурсы | Fuyu-8B (меньше параметров, быстрее) |
| Простые задачи (классификация, грубое описание) | Fuyu-8B |
| Высокое качество (медицина, юриспруденция) | GPT-4V |
| Fine-tuning под специфический домен | Fuyu-8B (проще end-to-end) |
| Обработка больших изображений (4K) | GPT-4V (лучше сжимает) |
10. Пет-проект для закрепления
Задача: Реализовать упрощённую версию Fuyu-8B на PyTorch и сравнить её с LLaVA (модель с vision encoder) на датасете COCO Captions.
Инструменты: Python, PyTorch, Hugging Face Transformers, torchvision.
Шаги:
- Взять маленькую LLM (например, GPT-2 124M) и заменить embedding слой, чтобы он принимал токены изображений.
- Реализовать patch encoder (Conv2d + Linear) и codebook (VQ-VAE стиль). Размер codebook = 512, размерность = 64.
- Написать функцию
image_to_tokens(image), которая делит изображение на патчи 16×16, квантует и возвращает последовательность индексов. - Обучить модель на 10% COCO Captions (пары изображение-текст) с loss только на текстовых токенах. Использовать оптимизатор AdamW, batch size 8.
- Для сравнения взять LLaVA-7B (или её маленькую версию LLaVA-1.5-7B) и зафиксировать encoder, обучить только проектор.
- Оценить обе модели на val-выборке по метрикам BLEU-4, CIDEr.
Ожидаемый результат: Вы увидите, что LLaVA даёт более высокие метрики, но Fuyu обучается быстрее (меньше параметров). Вы также заметите, что Fuyu хуже справляется с детальным описанием (например, цвета, мелкие объекты).
11. Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 538 | Что такое мультимодальные LLM и как они работают? |
| 540 | Как устроен vision encoder в GPT-4V? |
| 541 | Сравнение LLaVA, BLIP-2 и Fuyu |
| 542 | Как обучать мультимодальные модели end-to-end? |
| 543 | Проблема alignment визуальных и текстовых представлений |
| 544 | Использование мультимодальных моделей в RAG |
Навигация
- Предыдущий: 538
- Следующий: 540
- Индекс: 00. Индекс разборов