Skip to content

[None][feat] Interactive recipe selector with curated configs and button-grid UI#11917

Merged
venkywonka merged 9 commits intoNVIDIA:mainfrom
venkywonka:venky/recipe-db-cleanup
Mar 21, 2026
Merged

[None][feat] Interactive recipe selector with curated configs and button-grid UI#11917
venkywonka merged 9 commits intoNVIDIA:mainfrom
venkywonka:venky/recipe-db-cleanup

Conversation

@venkywonka
Copy link
Collaborator

@venkywonka venkywonka commented Mar 4, 2026

Summary

Overhaul the recipe selector on the Model Recipes documentation page into a polished, dual-source interactive widget that exposes both curated/selected configs and the database (170+ pareto-optimized configs) in one place.

What changed

  • Button-grid UI: Replace cascading dropdowns with a button-grid selector (Model → GPU → ISL/OSL → Concurrency dropdown). Incompatible options are visually greyed out, valid selections highlight in NVIDIA green.
  • Curated "Recommended Configs" panel: When a model is selected, curated configs appear as clickable cards between the Model row and GPU row. Clicking a card immediately resolves to a trtllm-serve command, dimming the database filter chain. Clicking again deselects.
  • Model grouping by display name: Multiple HuggingFace checkpoint IDs that represent the same model (e.g. 3 DeepSeek-R1 NVFP4 variants) are collapsed into a single button. Each generated command still uses the correct HF model ID.
  • Syntax highlighting: Bash highlighting for the command output (export, --config, ${TRTLLM_DIR}), YAML highlighting for the config preview panel.
  • Inline export TRTLLM_DIR: The copyable command now includes export TRTLLM_DIR=/app/tensorrt_llm as the first line, so users get a working 3-liner.
  • Disaggregated config filtering: Configs requiring disaggregated serving (Kimi-K2-Thinking with UCX transceiver, Qwen3 disagg-prefill) are tagged disagg: true in the curated lookup and filtered from the UI. An RST note clarifies these configs are for aggregated (in-flight batched) serving only.
  • Quick Start table removed: The static 11-row RST table is fully replaced by the interactive selector.
  • Performance profile in concurrency: The profile step is merged into the concurrency dropdown (e.g. "64 · Balanced").
  • Friendly model names: Buttons show display names (e.g. "DeepSeek-R1") instead of raw HF IDs.

Data pipeline

lookup.yamlCuratedRecipe (Pydantic) → build_curated_rows()config_db.json (with curated_entries array) → JS widget

Files changed

Area Files
Curated data examples/configs/curated/lookup.yaml
Data models examples/configs/database/database.py
JSON generation scripts/generate_config_table.py
Sphinx extension docs/source/_ext/trtllm_config_selector.py
Widget JS docs/source/_static/config_selector.js
Widget CSS docs/source/_static/config_selector.css
Tests tests/unittest/tools/test_config_selector.js (18 tests)
Docs docs/source/deployment-guide/index.rst + per-model guides

Test plan

  • node --test tests/unittest/tools/test_config_selector.js — 18 tests pass
  • Visual verification at the preview link below
    • Select DeepSeek-R1 → 3 curated cards (Max Throughput H100/H200, Max Throughput B200/GB200, Min Latency B200/GB200)
    • Click a curated card → command resolves, filter chain dims
    • Click card again → deselects
    • Select a curated-only model (e.g. Llama-3.3-70B) → single curated card, no database filters
    • Select DeepSeek-R1 (NVFP4) → curated cards + database filter flow both available
    • Verify dark/light mode styling
  • cd docs && make html builds without errors

Preview

https://venkywonka.github.io/TensorRT-LLM/deployment-guide/index.html#recipe-selector

🤖 Generated with Claude Code

@venkywonka venkywonka requested a review from a team as a code owner March 4, 2026 17:09
@venkywonka venkywonka requested review from chang-l and kaiyux March 4, 2026 17:09
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 4, 2026

📝 Walkthrough

Walkthrough

The changes remove the Performance profile UI component and its associated filtering logic from the config selector, consolidating profile information into concurrency option labels. A deployment guide table linking to pre-configured model scenarios is replaced with text referencing external resources.

Changes

Cohort / File(s) Summary
Config Selector UI Refactoring
docs/source/_static/config_selector.js
Removes Profile UI element, state management for profile, and profile-based filtering. Profile information is now embedded in concurrency option labels. Simplifies filter logic, state reset behavior, and error messaging by eliminating separate profile constraints and change handlers.
Deployment Guide Documentation
docs/source/deployment-guide/index.rst
Replaces embedded pre-configured model scenarios table with textual overview directing users to the configuration database on GitHub and the interactive recipe selector.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The PR title mentions 'Interactive recipe selector with curated configs and button-grid UI' but the actual changes merge the Performance Profile into Concurrency dropdown and simplify the UI from 5 to 4 steps—the button-grid UI aspect is not evident in the provided summary. Clarify whether 'button-grid UI' is implemented in this PR, or revise the title to accurately reflect the main change: merging Performance Profile into the Concurrency dropdown.
✅ Passed checks (1 passed)
Check name Status Explanation
Description check ✅ Passed The PR description comprehensively covers what changed, why, the data pipeline, files affected, and test plan with clear examples and verification steps.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
📝 Coding Plan
  • Generate coding plan for human review comments

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/source/_static/config_selector.js`:
- Around line 472-488: The concurrency dropdown collapses distinct performance
profiles that share the same numeric concurrency because concOpts currently keys
options only by value = String(e.concurrency); update the option generation in
the concEntries -> concOpts pipeline (the concEntries, concOpts,
filteredByState, setSelectOptions and finalEntries code paths) so each option
value is unique per profile (e.g., combine e.concurrency and
e.performance_profile into the option value) while still preserving a numeric
conc field for sorting; update the logic that checks/sets state.concurrency and
any comparisons in filteredByState/finalEntries to use the new composite value
when matching selections so finalEntries cannot return multiple rows for a
selected option.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 9818fc81-c447-4aa2-8960-ab607ea7f209

📥 Commits

Reviewing files that changed from the base of the PR and between 234eb83 and f1136e4.

📒 Files selected for processing (2)
  • docs/source/_static/config_selector.js
  • docs/source/deployment-guide/index.rst

@venkywonka venkywonka marked this pull request as draft March 4, 2026 17:21
@venkywonka
Copy link
Collaborator Author

/bot run

@tensorrt-cicd
Copy link
Collaborator

PR_Github #38333 [ run ] triggered by Bot. Commit: f1136e4 Link to invocation

@tensorrt-cicd
Copy link
Collaborator

PR_Github #38333 [ run ] completed with state SUCCESS. Commit: f1136e4
/LLM/main/L0_MergeRequest_PR pipeline #29709 completed with status: 'SUCCESS'

Link to invocation

@venkywonka venkywonka marked this pull request as ready for review March 11, 2026 16:11
@venkywonka venkywonka changed the title [None][feat] Merge performance profile into concurrency in recipe selector [None][feat] Interactive recipe selector with curated configs and button-grid UI Mar 19, 2026
@venkywonka
Copy link
Collaborator Author

/bot run

Venky Ganesh and others added 9 commits March 19, 2026 20:57
…ecipe selector

Collapse the 5-step cascading dropdown to 4 steps by folding the
"Performance Profile" step into the Concurrency dropdown. Each
concurrency option now shows its profile label (e.g. "64 — Balanced"),
and the selected entry's metadata line displays the profile. Also
replace the 2000+ line config_table.rst include in the deployment guide
index with a brief note pointing to GitHub and the interactive selector.

Signed-off-by: Venkatesh Gvenkatarama <gvenkatarama@nvidia.com>
Signed-off-by: Venky Ganesh <gvenkatarama@eos0442.eos.clusters.nvidia.com>
Keep the deployment guide selector JSON as the single recipes source and drop the stale generated RST table path. This also avoids checking in build-only recipe table artifacts.

Signed-off-by: Venky <23023424+venkywonka@users.noreply.github.com>
…el pattern

Replace dropdown-based Model/GPU/ISL-OSL selectors with interactive
button grids showing compatibility status (available/active/incompatible).
Concurrency remains a dropdown with merged profile labels (e.g. "8 · Low Latency").
Extract pure view-model logic for testability, add CSS custom property
theming for dark mode support, and include unit tests for the selector logic.

Signed-off-by: Venky <23023424+venkywonka@users.noreply.github.com>
Model buttons now display only the friendly display name (e.g.
"DeepSeek-R1") with the raw HuggingFace model ID shown as a muted
subtitle hint. The full HF ID remains in the generated command output
where precision matters.

Signed-off-by: Venky <23023424+venkywonka@users.noreply.github.com>
…x light-mode accent color

Move the interactive recipe selector widget above the Quick Start table
so it is the first thing users see. Use standard NVIDIA green (#76b900)
for active/hover states in light mode instead of dark green (NVIDIA#4831).

Signed-off-by: Venky <23023424+venkywonka@users.noreply.github.com>
Expose curated (hand-tuned) configs alongside database configs in the
interactive recipe selector. When a user selects a model, curated
"Recommended Configs" cards appear above the database filter chain.
Clicking a card immediately resolves to a trtllm-serve command.

Key changes:
- Add scenario/gpu_compatibility/disagg fields to curated lookup.yaml
- Add CuratedRecipe/CuratedRecipeList data models in database.py
- Generate curated_entries in config_db.json via generate_config_table.py
- Curated panel UI with cards, dimming, and toggle behavior in JS
- Normalize model IDs to display names so variants share one button
- Bash and YAML syntax highlighting in command/config output
- Inline export TRTLLM_DIR in the copyable command
- Filter out disaggregated configs (tagged disagg: true in lookup)
- Remove redundant Quick Start table from deployment guide RST
- Add aggregated-only serving note to the page
- 8 new curated-specific JS tests (18 total, all passing)

Signed-off-by: Venky <23023424+venkywonka@users.noreply.github.com>
Model list will grow over time — a dropdown is more compact and
supports type-ahead search. GPU and ISL/OSL remain as button grids
since they have few options per model.

Signed-off-by: Venky <23023424+venkywonka@users.noreply.github.com>
… them out

Only show concurrency values that are valid for the current
model/GPU/ISL-OSL selection. Reduces clutter in the dropdown.

Signed-off-by: Venky <23023424+venkywonka@users.noreply.github.com>
…ase conflicts

Signed-off-by: Venky <23023424+venkywonka@users.noreply.github.com>
@venkywonka venkywonka force-pushed the venky/recipe-db-cleanup branch from a8b9bbb to fc947c4 Compare March 20, 2026 04:01
@venkywonka
Copy link
Collaborator Author

/bot run

@venkywonka venkywonka requested a review from Copilot March 20, 2026 04:43
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR overhauls the Model Recipes documentation experience by replacing the static recipe tables with an interactive, dual-source selector widget that surfaces both curated “recommended” configs and the full database-generated config set.

Changes:

  • Introduces a new JS/CSS widget for interactive recipe selection, including curated cards and updated command/config preview rendering.
  • Extends the config database generation pipeline to optionally ingest curated recipes and emit them into config_db.json.
  • Removes the legacy generated RST recipe table (config_table.rst) and updates docs + tests to align with the new selector approach.

Reviewed changes

Copilot reviewed 13 out of 14 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/unittest/tools/test_config_selector.js Adds unit tests covering selector view-model compatibility logic and curated-entry formatting/filtering.
tests/unittest/tools/test_config_database_sync.py Updates sync tests to validate JSON payload shape/metadata now that RST table generation is removed.
scripts/generate_config_table.py Adds curated recipe ingestion and emits curated_entries into generated config_db.json; removes RST generator.
examples/configs/database/database.py Adds Pydantic models + loader for curated recipe YAML (including config path validation).
examples/configs/curated/lookup.yaml Defines curated recipes, scenarios, GPU compatibility, and disaggregated-serving tagging.
docs/source/deployment-guide/index.rst Removes the static quick-start table and anchors the new recipe selector in the docs flow.
docs/source/deployment-guide/deployment-guide-for-gpt-oss-on-trtllm.md Removes embedded includes of the old recipe database table.
docs/source/deployment-guide/deployment-guide-for-deepseek-r1-on-trtllm.md Removes embedded includes of the old recipe database table.
docs/source/deployment-guide/config_table.rst Deletes the generated static table that previously mirrored the config database.
docs/source/_static/config_selector.js Implements button-grid compatibility UI, curated cards, bash/yaml highlighting, and exports pure view-model helpers for tests.
docs/source/_static/config_selector.css Adds styling for the new selector layout, curated cards, and syntax highlighting tokens.
docs/source/_static/config_db.json Updates the committed static payload to include curated entries + expanded model metadata.
docs/source/_ext/trtllm_config_selector.py Updates Sphinx build hook to generate config_db.json including curated recipes when present.
.gitignore Removes the exception for the now-deleted config_table.rst.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@tensorrt-cicd
Copy link
Collaborator

PR_Github #39692 [ run ] triggered by Bot. Commit: fc947c4 Link to invocation

@tensorrt-cicd
Copy link
Collaborator

PR_Github #39692 [ run ] completed with state SUCCESS. Commit: fc947c4
/LLM/main/L0_MergeRequest_PR pipeline #30890 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

Link to invocation

@venkywonka
Copy link
Collaborator Author

/bot run

@tensorrt-cicd
Copy link
Collaborator

PR_Github #39759 [ run ] triggered by Bot. Commit: fc947c4 Link to invocation

@venkywonka
Copy link
Collaborator Author

/bot run

@tensorrt-cicd
Copy link
Collaborator

PR_Github #39777 [ run ] triggered by Bot. Commit: fc947c4 Link to invocation

@tensorrt-cicd
Copy link
Collaborator

PR_Github #39759 [ run ] completed with state ABORTED. Commit: fc947c4
LLM/main/L0_MergeRequest_PR #30954 (Blue Ocean) completed with status: ABORTED

Link to invocation

@tensorrt-cicd
Copy link
Collaborator

PR_Github #39777 [ run ] completed with state SUCCESS. Commit: fc947c4
/LLM/main/L0_MergeRequest_PR pipeline #30971 completed with status: 'SUCCESS'

CI Report

Link to invocation

@venkywonka venkywonka enabled auto-merge (squash) March 21, 2026 00:53
Copy link
Collaborator

@arysef arysef left a comment

Choose a reason for hiding this comment

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

lgtm

@venkywonka venkywonka merged commit 85c89d8 into NVIDIA:main Mar 21, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants