Skip to content

[codex] Document current video caption models and Qwen migration#2148

Open
lbliii wants to merge 5 commits into
NVIDIA-NeMo:mainfrom
lbliii:codex/docs-video-caption-models
Open

[codex] Document current video caption models and Qwen migration#2148
lbliii wants to merge 5 commits into
NVIDIA-NeMo:mainfrom
lbliii:codex/docs-video-caption-models

Conversation

@lbliii

@lbliii lbliii commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Closes #2145.

Summary

  • replaces the removed qwen variant with explicit qwen2.5 and qwen3 guidance
  • adds a complete Qwen and Nemotron checkpoint and precision matrix, including Nemotron 3 Nano Omni constraints
  • distinguishes same-VLM stage-two refinement from Qwen text-only caption enhancement
  • documents exact stage defaults, data keys, CLI choices, and migration steps

Validation

  • fern check: 0 errors, 103 pre-existing warnings
  • all 7 Python examples parse with ast
  • source audit confirms every current caption and enhancement parser choice is documented
  • fern docs broken-links: only the 22 pre-existing errors outside this page
  • focused caption tests cannot collect on this macOS host because NeMo Curator is Linux-only and the environment contains Linux Torch binaries

Signed-off-by: Lawrence Lane <llane@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Jul 1, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@lbliii lbliii self-assigned this Jul 1, 2026
@lbliii lbliii marked this pull request as ready for review July 1, 2026 21:00
@lbliii lbliii requested a review from a team as a code owner July 1, 2026 21:00
@lbliii lbliii requested review from ayushdg and removed request for a team July 1, 2026 21:00
@greptile-apps

greptile-apps Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR rewrites the video captioning documentation page to replace the removed qwen model variant with explicit qwen2.5 and qwen3 guidance, add nemotron-3-nano-omni coverage, and clarify the distinction between same-VLM stage-two refinement and the separate text-only CaptionEnhancementStage.

  • Replaces the old generic qwen variant with a full 7-variant model table covering both Qwen and all Nemotron checkpoints, with verified Hugging Face model IDs, precision notes, and CLI choices.
  • Restructures the reference sections for CaptionPreparationStage, CaptionGenerationStage, and CaptionEnhancementStage into standalone sections with working code examples, and adds a migration guide for users upgrading from the former qwen identifier.
  • Adds a "Refine or enhance captions" section that clearly separates same-VLM stage-two generation (generate_stage2_caption) from the Qwen-LM enhancement path (CaptionEnhancementStage), including captioning_model_variant usage.

Confidence Score: 5/5

Documentation-only change; all model IDs, parameter defaults, and behavioral descriptions verified against the implementing Python modules.

Every factual claim in the rewritten page was traced to source code: Hugging Face model IDs match _QWEN_VARIANTS_INFO, _NEMOTRON_VARIANTS_INFO, and _HF_MODEL_ID constants; default values match dataclass field declarations; the vllm_kwargs Qwen-only scoping matches the _initialize_model branch logic; the stage2_prompt_text forwarding behavior matches the constructor call sites; and the 131072-token context and tensor-parallel-size-1 constraints for nemotron-3-nano-omni match Nemotron3NanoOmni.setup(). No production code is touched.

No files require special attention.

Important Files Changed

Filename Overview
fern/versions/main/pages/curate-video/process-data/captions-preview.mdx Documentation rewrite adding qwen2.5/qwen3/nemotron-3-nano-omni coverage; all HF model IDs, parameter defaults, and behavioral claims verified against source code.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[CaptionPreparationStage] -->|writes llm_inputs| B[PreviewStage]
    B --> C[CaptionGenerationStage]
    C -->|writes caption| D{Stage-two?}
    D -->|generate_stage2_caption=True - same VLM reruns| E[Refined caption replaces first pass]
    D -->|No| F[Caption ready]
    E --> F
    F --> G{Enhance?}
    G -->|CaptionEnhancementStage reads caption key| H[Qwen-LM text-only model]
    H -->|writes enhanced_caption/qwen_lm| I[Enhanced caption stored separately]
    G -->|No| J[Done]
    I --> J
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[CaptionPreparationStage] -->|writes llm_inputs| B[PreviewStage]
    B --> C[CaptionGenerationStage]
    C -->|writes caption| D{Stage-two?}
    D -->|generate_stage2_caption=True - same VLM reruns| E[Refined caption replaces first pass]
    D -->|No| F[Caption ready]
    E --> F
    F --> G{Enhance?}
    G -->|CaptionEnhancementStage reads caption key| H[Qwen-LM text-only model]
    H -->|writes enhanced_caption/qwen_lm| I[Enhanced caption stored separately]
    G -->|No| J[Done]
    I --> J
Loading

Reviews (5): Last reviewed commit: "Merge branch 'main' into codex/docs-vide..." | Re-trigger Greptile

| `sampling_fps` | float | 2.0 | Frames per second sampled from the source clip. |
| `window_size` | int | 256 | Number of sampled frames in each caption window. |
| `remainder_threshold` | int | 128 | Minimum remaining frames required to create a final shorter window. |
| `preprocess_dtype` | str | `"float32"` | Raw-frame dtype. The example CLI accepts `float32`, `float16`, `bfloat16`, or `uint8` and defaults to `float16`. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 preprocess_dtype default is contradicted in the same cell

The Default column records "float32" but the Description ends with "and defaults to float16". A reader who only glances at the Default column will set float32, while a reader who reads the full sentence will choose float16 — and both will believe they are matching the canonical default. If the Python class constructor defaults to float32 and the example script defaults to float16, state both separately (e.g., "Python default: float32; CLI default: float16") rather than having the two halves of the row disagree.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

| `fp8` | bool | `False` | Quantize Qwen weights to FP8. Select `nemotron-fp8` for the Nemotron FP8 checkpoint. |
| `max_output_tokens` | int | 512 | Maximum tokens generated for each caption. |
| `disable_mmcache` | bool | `False` | Disable the vLLM multimodal cache for Qwen. The example CLI disables it unless `--captioning-use-vllm-mmcache` is set. |
| `vllm_kwargs` | dict | `{}` | Additional keyword arguments forwarded to the Qwen vLLM constructor. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 vllm_kwargs description is scoped to Qwen only

The description says "forwarded to the Qwen vLLM constructor", but vllm_kwargs is a generic escape-hatch on CaptionGenerationStage that should also be usable with Nemotron variants. Describing it as Qwen-only will cause users to skip it when working with Nemotron checkpoints.

Suggested change
| `vllm_kwargs` | dict | `{}` | Additional keyword arguments forwarded to the Qwen vLLM constructor. |
| `vllm_kwargs` | dict | `{}` | Additional keyword arguments forwarded to the vLLM constructor for any variant. |

Signed-off-by: Lawrence Lane <llane@nvidia.com>
@lbliii lbliii force-pushed the codex/docs-video-caption-models branch from dfd8c61 to 934a406 Compare July 2, 2026 02:10
Signed-off-by: Lawrence Lane <llane@nvidia.com>
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

@lbliii

lbliii commented Jul 7, 2026

Copy link
Copy Markdown
Contributor Author

@ayushdg friendly ping on this docs PR for the #2118 release-docs workstream — when you have a moment, could you take a look at the video caption model matrix and Qwen migration?

Docs preview: https://nvidia-preview-codex-docs-video-caption-models.docs.buildwithfern.com/nemo/curator

Thanks!

@lbliii lbliii added the docs-release-26.06 Documentation work tracked by the 26.06 release epic (#2118) label Jul 13, 2026 — with ChatGPT Codex Connector
@ayushdg ayushdg requested review from suiyoubi and weijiac0619 and removed request for ayushdg July 13, 2026 21:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs-release-26.06 Documentation work tracked by the 26.06 release epic (#2118)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Docs] Update video caption model matrix and Qwen migration

1 participant