Skip to content

[data] tracking: VLM SFT benchmark — high-res & interleaved multi-image dataset support #3133

Open

Description

@yaoyu-33

Summary

Track end-to-end support for high-resolution image and interleaved multi-image datasets in the VLM SFT benchmark pipeline (Energon-based).

Driven by user requests to cover corner cases where encoder bottlenecks appear (e.g., 10+ images per sample, very large image sizes).

Phase 1 — Functional Test (throughput + loss convergence)

Qwen-VL model
Verify data loading via Energon, confirm images are properly processed, throughput holds up, and loss converges. (needs data sample balance for vision encoder)

  • TIGER-Lab/Mantis-Instruct — interleaved multi-image (10+ images/sample), throughput verification + Energon image processing
  • Ahren09/InfoVQA — high-res infographic images, throughput + loss convergence
  • lmms-lab/LLaVA-Video-178K — video pipeline functional check

Functional test checklist (per dataset)

  • datasets.load_dataset() loads successfully
  • Data format parseable by current VLM data pipeline (Energon)
  • Images/video decode correctly (especially large images, multi-image, video)
  • Single forward pass without OOM
  • 10-50 step training run completes without errors, loss converges
  • For video: confirm on-the-fly loading support

Changes note:

  • Adding proper support for video
  • Adding control and processing logic for max_num_images, max_num_frames, max_visual_tokens
  • Fixing issue when sequence truncation truncating visual tokens (e.g. when running with PP>1, sequence length needs to constant)
  • Adding wrapper QwenVLEnergonProvider to bring VLM-specific knobs to CLI
    => General setup:
    • max_pixels: upper-bound for media height/width, resize if exceeding
    • max_num_images, max_num_frames: upper-bound for number of medias, dropping if exceeding
    • max_visual_tokens: upper-bound for number of media tokens, dropping if exceeding

Records:

Nemotron-Omni

  • TIGER-Lab/Mantis-Instruct — interleaved multi-image (10+ images/sample), throughput verification + Energon image processing
  • Ahren09/InfoVQA — high-res infographic images, throughput + loss convergence
  • lmms-lab/LLaVA-Video-178K — video pipeline functional check

Functional test checklist (per dataset)

  • datasets.load_dataset() loads successfully
  • Data format parseable by current VLM data pipeline (Energon)
  • Images/video decode correctly (especially large images, multi-image, video)
  • Single forward pass without OOM
  • 10-50 step training run completes without errors, loss converges
  • For video: confirm on-the-fly loading support

Records:

Lastest updates:

  • Full verified with video dataset (lmms-lab/LLaVA-Video-178K). Including: fine-tuning, loss curve inspection, running inference. Note: video VLM always uses none-dynamic resolution path.
  • Full verified with images dataset (TIGER-Lab/Mantis-Instruct, Ahren09/InfoVQA) on dynamic resolution path. Including: fine-tuning, loss curve inspection, running inference.
  • Updated Nemotron-Omni's README.md adding more details/instructions on input processing modes (dynamic/non-dynamic resolution).
  • Exposing existing issues:

Phase 2 — Benchmark + Perf Optimization

After functional tests pass, move to performance reproduction and benchmark accuracy.

  • TIGER-Lab/Mantis-Instruct — interleaved multi-image (10+ images/sample), throughput verification + Energon image processing
  • Ahren09/InfoVQA — (continued) benchmark accuracy for high-res
  • lmms-lab/LLaVA-Video-178K — (continued) video perf benchmark
  • ~~lmms-lab/LLaVA-NeXT-Interleave-Bench~~~~ — perf reproduction for interleaved multi-image (17 GB, 39K rows)~~
  • ~~HuggingFaceFV/finevideo~~~~ — stretch: long video + audio~~

Tokens stats and data processing time:

Dataset Text (Mean / Median) Vision (Mean / Median) Combined (Mean / Median) Batch Generator Time
MedPix (baseline) 129.9 / 87.5 268.1 / 264.0 398.0 / 342.0 0.2%
InfoVQA 129.9 / 87.5 2228.0 / 2318.5 2267.5 / 2561.0 0.5%
MedPix 625.8 / 475.5 588.3 / 566.0 1214.1 / 886.5 0.1%
LLaVA-Video 578.7 / 562.0 1992.8 / 1920.0 2571.6 / 2418.0 1.4%

Link to measured performance: https://docs.google.com/spreadsheets/d/1MlPPv2UA-rDC-VhrniRN384-XwcYn5S5YkReJ1c4YVU/edit?usp=sharing

Since these datasets are vision heavy (either containing multiple images, videos or high-resolution), the main gain comes from improving the vision module efficiency. One method is by enabling data parallelism for vision module across CP ranks. The input images/frames tensors will be sharded along the number of images dimension (data parallel). Each shard will run on a CP rank. The results will then gathered before sending to LLM. This mechanism (vision data parallel across CP ranks) are similar to LLava implementation in Megatron-LM.

Related changes regarding enabling DP for vision module:

Dataset Summary

Dataset Category HF Link Size
TIGER-Lab/Mantis-Instruct Multi-image interleaved HF 462 MB, 1M rows
Ahren09/InfoVQA High-res image HF 2 GB, 30K rows
lmms-lab/LLaVA-Video-178K Video HF 645 MB annotations + videos, 1.6M rows
lmms-lab/LLaVA-NeXT-Interleave-Bench Interleaved benchmark HF 17 GB, 39K rows
HuggingFaceFV/finevideo Long video + audio HF Large

Context

  • All benchmarking and validation should be conducted within an Energon-based setup.
  • Users specifically care about samples with 10+ image paths per sample, which expose encoder bottlenecks.
  • MP-DocVQA and MINT-1T-PDF were considered but excluded since Mantis-Instruct and LLaVA-NeXT-Interleave-Bench already cover 10+ image interleaved samples.
Pinned by huvunvidia

Activity

  1. added
    trackingTracking issue for an ongoing project with smaller steps
    on Apr 3, 2026
  2. yaoyu-33 commented on Apr 20, 2026

    @yaoyu-33
    ContributorAuthor

    Update (2026-04-19) — Sync with Jihyeon (Naver)

    dist_train with CP

    • Will be formally integrated into main. Shifang is still working on it, targeting wrap-up this week.

    Vision forward speed / rebalancing

    • From Naver's profiling: vision forward pass is taking significant time in mBridge, especially pronounced with 10+ images per sample (likely because the vision encoder is mostly HF-format).
    • Rebalancing insight: after sequence packing, additionally considering the number of vision tokens per pack when rebalancing across DP workers (so that lengths are as similar as possible) led to noticeable speed improvements on Naver's side.
    • We agreed this is a feature we should cover — doesn't look too hard, targeting Phase 1.

    Mantis dataset — image token count

    • Jihyeon flagged that the Mantis paper assumes 576 image tokens when reporting sequence length, which feels simplified vs. real-world. We should confirm images are not resized to that scale during our training — agreed this makes sense to verify.

    Phase 2 — dataset & eval plan (open items)

    • lmms-lab/LLaVA-NeXT-Interleave-Bench is an evaluation benchmark. Jihyeon suggested using the corresponding training dataset (m4-instruct) for training, then evaluating on LLaVA-NeXT-Interleave-Bench (or a subset).
    • Need to check with Chen on dataset selection.
    • Phase 2 evaluation benchmarks have not been discussed yet — will leave notes in this ticket as the plan develops.
  3. yaoyu-33 commented on Apr 21, 2026

    @yaoyu-33
    ContributorAuthor

    @huvunvidia : please also create a histogram maybe for datasets vision resolutions etc. in phase1

  4. added
    area:dataDataset builders, preprocessing, and samplers
    featureNew capabilities, enhancements, or enablement work
    on May 12, 2026
  5. huvunvidia commented on May 12, 2026

    @huvunvidia
    Contributor

    Histograms of images dataset, which contains multiple sub-dataset with different resolutions for references:

  6. huvunvidia commented on Sep 1, 2026

    @huvunvidia
    Contributor

    Issue progress update:

    • All 3 datasets (InfoVQA, Mantis and LLava-video) have been verified to work with Qwen3-VL and Nemotron-Omni.
    • Performance for Nemotron-Omni across 3 datasets will be shared privately with customer. One important efficiency improvement feature (vision DP module across CP) was implemented and merged with PRs (5645, 5646), details already updated in the issue content.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:dataDataset builders, preprocessing, and samplersfeatureNew capabilities, enhancements, or enablement worktrackingTracking issue for an ongoing project with smaller stepsx-naver

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions