Itinai.com it company office background blured photography by 83d4babd 14b1 46f9 81ea 8a75bac63327 0

Как избавиться от задержки токена: Zamba2‑VL в 10 раз быстрее

Itinai.com it company office background blured photography by 83d4babd 14b1 46f9 81ea 8a75bac63327 0

Что такое Zamba2‑VL

Zamba2‑VL — семейство открытых моделей vision‑language, построенных на гибридном ядре SSM‑Transformer (Mamba2 + Transformer). Выпущены три версии: 1.2 B, 2.7 B и 7 B параметров. Архитектура соответствует популярному шаблону LLaVA: визуальный энкодер (Vision Transformer из Qwen2.5‑VL) → лёгкий MLP‑адаптер → языковая модель, умеющая обрабатывать перемежающиеся токены изображения и текста. Поддерживается как одно‑, так и мульти‑изображение, а также «grounding» (указание на объекты в картинке).

Архитектура

В основе — гибрид Mamba2‑state‑space‑слоёв и небольшого количества общих трансформер‑блоков. Mamba2 обеспечивает линейную сложность O(n) при фиксированном размере состояния, а трансформер‑блоки сохраняют способность к контекстному поиску. Каждый блок снабжён уникальным LoRA‑адаптером. В качестве токенизатора используется Mistral v0.1, модель предобучена на 100 B токенов мультимодальных и чисто текстовых данных.

Качество модели и бенчмарки

Оценка проведена по 14 стандартным наборам: от распознавания таблиц и диаграмм до визуального счёта и общих reasoning‑задач. Ниже – сравнение ключевых метрик для модели 2.7 B.

  • DocVQA (test) — 90.9 (в отличие от 95.3 у Qwen3‑VL‑4B)
  • ChartQA (test) — 79.6 (лучше, чем у Qwen3‑VL‑2B, но хуже InternVL3.5‑2B)
  • OCRBench — 73.6 (отстаёт от InternVL3.5‑2B = 83.4)
  • CountBenchQA — 87.5 (выдающийся результат)
  • PixMoCount (test) — 82.5 (существенно лучше, чем у InternVL3.5‑2B = 32.8)
  • MMMU (val) — 37.7 (ниже у более крупных моделей)
  • MathVista (mini) — 51.0 (отстаёт от Qwen3‑VL‑4B = 63.6)

Итого: сильные стороны — подсчёт объектов и понимание документов; слабые — глубокие knowledge‑reasoning задачи.

Почему инференс быстрее

Традиционный трансформер растёт квадратично O(n²) от длины токенов, а мульти‑модальные входы легко приводят к нескольким тысячам визуальных токенов. Zamba2‑VL использует рекуррентное состояние фиксированного размера и почти линейный предзаполняемый проход O(n). На предзаполнении в 32 k токенов модель демонстрирует почти порядок‑меньшую задержку time‑to‑first‑token (TTFT) по сравнению с аналогичными трансформер‑VLM.

Практические сценарии

  • Извлечение данных из документов — отличные результаты DocVQA позволяют автоматизировать обработку счетов, накладных и форм.
  • Подсчёт товаров и инвентаризация — модель «видит» и считает объекты, что полезно в рознице и складском учёте.
  • Граундент‑интерфейсы — возможность указывать на конкретные элементы UI или продукта.
  • Локальные помощники — 1.2 B версия работает на смартфонах и edge‑устройствах благодаря низкому TTFT.
  • Обработка длинных визуальных контекстов — мульти‑страничные PDF, короткие видеоклипы.

Начало работы

Все три модели доступны в коллекции Zyphra Zamba2‑VL на Hugging Face. Инференс реализован в форке transformers от Zyphra (v4.57.1). Для быстрой работы требуются CUDA‑GPU и оптимизированные Mamba2‑ядра.

Установка зависимостей:

pip install "transformers @ git+https://github.com/Zyphra/transformers.git@zamba2-vl"
pip install qwen-vl-utils==0.0.2 flash_attn
pip install --no-build-isolation "causal-conv1d @ git+https://github.com/Zyphra/z-causal-conv1d.git@zamba2-vl"
pip install --no-build-isolation "mamba-ssm @ git+https://github.com/Zyphra/mamba.git@zamba2-vl"

Пример однократного запроса:

from transformers import Zamba2_VLForConditionalGeneration, Zamba2_VLProcessor
import torch, requests
from PIL import Image
from qwen_vl_utils import process_vision_info

device = "cuda" processor = Zamba2_VLProcessor.from_pretrained("Zyphra/Zamba2-VL-2.7B", temporal_patch_size=1) model = Zamba2_VLForConditionalGeneration.from_pretrained( "Zyphra/Zamba2-VL-2.7B", device_map=device, torch_dtype=torch.bfloat16, attn_implementation="flash_attention_2", )

url = "http://images.cocodataset.org/val2017/000000039769.jpg" image = Image.open(requests.get(url, stream=True).raw) question = "What do you see in the image? Give us some detail." num_img_tokens = 3400

conversation = [ {"role": "user", "content": [ {"type": "image", "image": image, "max_pixels": num_img_tokens 28 28, "min_pixels": 10 28 28}, {"type": "text", "text": question}, ]}, ] prompt = processor.apply_chat_template(conversation, add_generationprompt=True) images, = process_vision_info(conversation) inputs = processor(text=prompt, images=images, add_special_tokens=True, return_tensors="pt") inputs = {k: v.to(device) for k, v in inputs.items()}

outputs = model.generate(**inputs, max_new_tokens=100) print(processor.tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:]))

Для работы с другими размерами замените идентификатор модели на Zamba2-VL-1.2B или Zamba2-VL-7B.

Сильные и слабые стороны

Плюсы:

  • Первый открытый VLM‑семейство на гибридном SSM‑Transformer‑бэкенде.
  • О десяток раз меньше TTFT по сравнению с трансформер‑базой.
  • Выдающиеся результаты в визуальном подсчёте и документном понимании.
  • Три размера для edge‑устройств, средних серверов и 7 B‑развёртываний.
  • Apache 2.0, публичные веса и работающий код.

Минусы:

  • Артефакт исследовательского характера; требует самостоятельного хостинга.
  • Отстаёт в knowledge‑reasoning (MMMU, MathVista) от более крупных моделей.
  • OCRBench хуже, чем у Qwen3‑VL и InternVL3.5 аналогичного размера.
  • Оптимизированные ядра работают только на CUDA‑GPU; CPU‑путь слишком медленный.

Ключевые выводы

  • Zamba2‑VL — открытые модели 1.2 B, 2.7 B и 7 B под лицензией Apache 2.0.
  • Гибрид Mamba2 + Transformer обеспечивает почти линейный предзаполняемый проход.
  • TTFT снижен примерно на порядок по сравнению с традиционными трансформер‑VLM.
  • Сильные стороны — визуальный подсчёт и обработка документов; слабые — глубокий reasoning.
  • Веса, код и документация доступны на Hugging Face и GitHub.

Запустите свой ИИ проект бесплатно

ИИ-агенты искусственный интеллект онлайн для бизнеса

Лучший ИИ онлайн