Как VLM обрабатывает изображение вместе с текстом
Как visual language model принимает картинку на вход: что делает vision encoder, как появляются visual tokens и как они совмещаются с текстом?
Короткий ответ
Картинку режут на patches, vision encoder превращает их в image embeddings, projection/alignment layer переводит их в пространство LLM, после чего visual tokens подаются вместе с text tokens в language model.
Полный разбор
Типичная VLM архитектура состоит из vision encoder, projection/alignment модуля и LLM. Изображение приводят к нужному размеру, режут на patches, например 14x14 или 16x16, и прогоняют через ViT/CLIP-like encoder. На выходе получается последовательность визуальных embedding vectors.
Дальше эти embeddings через линейную проекцию или небольшой adapter переводятся в размерность и пространство LLM. После этого они становятся visual tokens и добавляются в общий prompt рядом с text tokens. LLM учится отвечать, attending одновременно к текстовым и визуальным токенам.
Для больших картинок важны tiling, patch resolution, positional information и ограничение числа visual tokens: слишком много токенов резко увеличивают compute и KV cache.
Теория
VLM не "понимает jpg напрямую" внутри LLM. Она получает последовательность embedding tokens, подготовленную vision encoder.
Типичные ошибки
- Сказать, что картинка просто конвертируется в текстовое описание до LLM.
- Не упомянуть patches/ViT.
- Не связать число visual tokens с latency и context length.
Как отвечать на собеседовании
- Разложи на три блока: vision encoder, projector, LLM.
- Упомяни patches и visual tokens как аналог text tokens.