[None][feat] Interactive recipe selector with curated configs and button-grid UI#11917
Conversation
📝 WalkthroughWalkthroughThe 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
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes 🚥 Pre-merge checks | ✅ 1 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
Comment |
There was a problem hiding this comment.
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
📒 Files selected for processing (2)
docs/source/_static/config_selector.jsdocs/source/deployment-guide/index.rst
|
/bot run |
|
PR_Github #38333 [ run ] triggered by Bot. Commit: |
|
PR_Github #38333 [ run ] completed with state |
|
/bot run |
…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>
a8b9bbb to
fc947c4
Compare
|
/bot run |
There was a problem hiding this comment.
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.
|
PR_Github #39692 [ run ] triggered by Bot. Commit: |
|
PR_Github #39692 [ run ] completed with state
|
|
/bot run |
|
PR_Github #39759 [ run ] triggered by Bot. Commit: |
|
/bot run |
|
PR_Github #39777 [ run ] triggered by Bot. Commit: |
|
PR_Github #39759 [ run ] completed with state |
|
PR_Github #39777 [ run ] completed with state |
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
trtllm-servecommand, dimming the database filter chain. Clicking again deselects.export,--config,${TRTLLM_DIR}), YAML highlighting for the config preview panel.export TRTLLM_DIR: The copyable command now includesexport TRTLLM_DIR=/app/tensorrt_llmas the first line, so users get a working 3-liner.disagg: truein the curated lookup and filtered from the UI. An RST note clarifies these configs are for aggregated (in-flight batched) serving only.Data pipeline
lookup.yaml→CuratedRecipe(Pydantic) →build_curated_rows()→config_db.json(withcurated_entriesarray) → JS widgetFiles changed
examples/configs/curated/lookup.yamlexamples/configs/database/database.pyscripts/generate_config_table.pydocs/source/_ext/trtllm_config_selector.pydocs/source/_static/config_selector.jsdocs/source/_static/config_selector.csstests/unittest/tools/test_config_selector.js(18 tests)docs/source/deployment-guide/index.rst+ per-model guidesTest plan
node --test tests/unittest/tools/test_config_selector.js— 18 tests passcd docs && make htmlbuilds without errorsPreview
https://venkywonka.github.io/TensorRT-LLM/deployment-guide/index.html#recipe-selector
🤖 Generated with Claude Code