/ Модель

Характеристики

Контекст
262 144 токена
Лицензия
OpenRAIL
Архитектура
qwen3_5 · dense
Базовая модель
chandra-ocr-2
Библиотека
transformers
Опубликована
25 мая 2026

chandra-ocr-2-NVFP4A16

Изображение и текст → текст8 профессий

Chandra OCR 2 NVFP4A16 — это неофициальная community-квантизация модели datalab-to/chandra-ocr-2, подготовленная пользователем dangvansam.

469скачиваний за 30 дней3лайкавеса обновлены26 мая 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Модель предназначена для OCR документов и PDF с сохранением структуры и разметки, включая преобразование содержимого в Markdown и обработку макета страниц. Это мультимодальная vision-language модель, принимающая изображения страниц и текстовые инструкции; поддерживает работу через vLLM с OpenAI-совместимым API и через Transformers.

Вариант использует квантизацию NVFP4A16: веса линейных слоёв представлены в 4-битном формате NVFP4, а активации — в FP16. Vision tower, lm_head и отдельные компоненты attention сохранены в FP16/BF16. Размер упакованных весов составляет около 11 ГБ. Максимальная длина контекста в рекомендованной конфигурации vLLM — 16 384 токена. Основное преимущество варианта — высокая скорость при параллельной постраничной обработке на GPU архитектуры Blackwell: в приведённом тесте достигнуто около 5058 мс на страницу, что в 2,5 раза быстрее базовой версии BF16. Для последовательной обработки одного документа преимущество может быть ниже, и в README рекомендуется FP8_DYNAMIC.

Модель лучше всего подходит для пакетного OCR с одновременной обработкой страниц на Blackwell GPU, включая RTX PRO 6000, B100/B200 и RTX 5090. На Hopper она запускается медленнее через программную эмуляцию, а для Ada и более старых архитектур этот формат не рекомендуется. Для работы через vLLM требуется версия не ниже 0.19.1. Модель наследует лицензию OpenRAIL-M исходной модели: разрешены исследовательское и личное использование, а также использование стартапами с доходом менее 2 млн долларов; применение в конкурирующих с API Datalab продуктах запрещено. Для более широкого коммерческого использования предлагается обратиться к условиям Datalab.

Для каких профессий подходит8

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

chandra-ocr-2 — NVFP4A16 (W4A16)

NVFP4A16 (4-bit weight, 16-bit activation) quantization of datalab-to/chandra-ocr-2 produced with llm-compressor and packed as compressed-tensors for native vLLM inference.

Fastest of the three quants we measured on Blackwell under the path that actually matters for real OCR pipelines (page-level concurrent fan-out). ~5058 ms/page = 0.20 pages/s, 2.5× over bf16.

For the original model description, intended uses, accuracy benchmarks (olmOCR-bench, 90-language) and license terms, see the upstream card: https://huggingface.co/datalab-to/chandra-ocr-2.


Quantization recipe

# recipe.yaml (shipped in this repo)
default_stage:
  default_modifiers:
    QuantizationModifier:
      targets: [Linear]
      ignore:
        - lm_head
        - 're:.*visual.*'        # keep vision tower in bf16
        - 're:.*linear_attn.*'   # keep linear-attn fp16
      scheme: NVFP4A16
  • Weights: NVFP4 (4-bit microscaled FP4, Blackwell-native)
  • Activations: FP16
  • lm_head, the entire visual.* ViT tower, and linear_attn.* left in fp16/bf16 (per the upstream Qwen3.5-VL NVFP4 recipe).
  • Calibration: 512 samples × 4096 tokens from HuggingFaceH4/ultrachat_200k.

Hardware requirements

GPU familyCompute capabilityNVFP4 statusRecommended?
Blackwell (RTX PRO 6000, B100/B200, RTX 5090)sm_100+Native FP4 tensor cores✅ ideal
Hopper (H100/H200)sm_90Software emulation via marlinrunnable but slower; prefer FP8_DYNAMIC
Ada (RTX 4090/L40S)sm_89No FP4❌ use FP8_DYNAMIC variant
Ampere / older≤ sm_86No FP4❌ use BF16 / FP8 elsewhere

vLLM ≥ 0.19.1 required (compressed-tensors NVFP4A16 VL kernel landed there; v0.17 rejects with Unsupported data_type: nv_fp).

Benchmark (vs. other Chandra-2 quants)

Test bed: RTX PRO 6000 Blackwell Max-Q (96 GB), 14-page Vietnamese financial-statement PDF, vLLM 0.19.1, max-num-seqs=128, max-num-batched-tokens=32768, kv-cache=fp8.

BuildSequential per-docConcurrent per-pageBest ms/pagevs bf16
bf16 baseline12724 ms12642 ms126421.0×
FP8_DYNAMIC5434 ms9525 ms54342.3×
NVFP4A1612280 ms5058 ms50582.5×
NVFP4 (W4A4)10092 ms5794 ms57942.2×

Take-away: NVFP4A16 wins only with concurrent page fan-out (continuous batching). Single-request serial loops favor FP8_DYNAMIC.

Usage

vLLM (OpenAI-compatible server) — recommended

vllm serve dangvansam/chandra-ocr-2-NVFP4A16 \
  --served-model-name chandra \
  --max-model-len 16384 \
  --max-num-seqs 128 \
  --max-num-batched-tokens 32768 \
  --kv-cache-dtype fp8 \
  --gpu-memory-utilization 0.92 \
  --enable-prefix-caching \
  --enable-chunked-prefill \
  --trust-remote-code \
  --mm-processor-kwargs '{"min_pixels": 3136, "max_pixels": 6291456}'
# Client — call exactly like the bf16 original
from openai import OpenAI
import base64, pathlib

client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
img_b64 = base64.b64encode(pathlib.Path("page.png").read_bytes()).decode()

resp = client.chat.completions.create(
    model="chandra",
    messages=[{
        "role": "user",
        "content": [
            {"type": "image_url",
             "image_url": {"url": f"data:image/png;base64,{img_b64}"}},
            {"type": "text", "text": "<ocr_layout>"},
        ],
    }],
    max_tokens=12000,
    temperature=0.0,
)
print(resp.choices[0].message.content)

HuggingFace Transformers

The vision tower is left in bf16, so transformers ≥ 5.2 loads this checkpoint identically to the upstream — only the LLM-side weights are 4-bit. Use the snippet from the upstream card, replacing "datalab-to/chandra-ocr-2" with "dangvansam/chandra-ocr-2-NVFP4A16".

When to pick which Chandra-2 quant

WorkloadPick
Page-concurrent fan-out on BlackwellNVFP4A16 (this repo)
Single sequential request per docFP8_DYNAMIC
Ada / Hopper GPU, FP8 acceptableFP8_DYNAMIC
Max compression, accuracy not criticalNVFP4 (W4A4)
Reference accuracy / older hardwareupstream bf16

Files

  • model.safetensors — NVFP4A16-packed weights (~11 GB)
  • config.json, processor_config.json, preprocessor_config.json, tokenizer.json, tokenizer_config.json, chat_template.jinja, generation_config.json — copied from upstream
  • recipe.yaml — exact llm-compressor recipe used

License & attribution

Inherits the upstream OpenRAIL-M license from datalab-to/chandra-ocr-2. Free for research, personal use, and startups <$2M; not for use competing with Datalab's hosted API. For broader commercial use see Datalab pricing.

This is an unofficial community quant. No additional weights or data were added — only a numerical re-encoding of the upstream model. All credit for the model itself goes to Datalab.

Citation

@misc{chandra_ocr_2,
  author = {Datalab},
  title  = {Chandra OCR 2},
  year   = {2026},
  url    = {https://huggingface.co/datalab-to/chandra-ocr-2}
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers

Нельзя запустить

Готовая квантизация поддерживается только для текстовых LLM (vLLM).

Класс архитектуры
Qwen3_5ForConditionalGeneration
Ревизия весов
b11480b

0 моделей