Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
14 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ docs/source/performance/perf-benchmarking.md @NVIDIA/trtllm-bench-reviewers
# Without approval from a member of this team, PRs cannot be merged to release branches.
# * @NVIDIA/trt-llm-release-branch-approval

### Telemetry / privacy review
# Golden manifest is the privacy-review artifact; route it and the usage package to the privacy owner.
/tensorrt_llm/usage/llm_args_golden_manifest.json @NVIDIA/trt-llm-oss-compliance
/tensorrt_llm/usage/ @NVIDIA/trt-llm-oss-compliance
### Usage telemetry / privacy review
/tensorrt_llm/usage/ @NVIDIA/trt-llm-usage-telemetry-devs
/tests/unittest/usage/ @NVIDIA/trt-llm-usage-telemetry-devs
/tensorrt_llm/usage/llm_args_golden_manifest.json @NVIDIA/trt-llm-usage-telemetry-devs @NVIDIA/trt-llm-oss-compliance @NVIDIA/trt-llm-noncommitted-api-review-committee
2 changes: 2 additions & 0 deletions .github/workflows/llm-api-compatibility.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ jobs:
const referencePrefixes = [
'tests/unittest/api_stability/references/',
'tests/unittest/api_stability/references_committed/',
'tensorrt_llm/llmapi/llm_args.py',
'tensorrt_llm/usage/llm_args_golden_manifest.json',
];
// Keep these names in sync with the PR template and API-change guide.
const compatibleApiLabel = 'api-compatible';
Expand Down
70 changes: 2 additions & 68 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1325,55 +1325,22 @@ common-files: &common_files |
tests/unittest/utils/test_util.py |
tests/unittest/utils/torch_ref.py |
tests/unittest/utils/util.py |
triton_backend/all_models/disaggregated_serving/disaggregated_serving_bls/1/model.py |
triton_backend/all_models/gpt/postprocessing/1/model.py |
triton_backend/all_models/gpt/preprocessing/1/model.py |
triton_backend/all_models/gpt/tensorrt_llm/1/model.py |
triton_backend/all_models/inflight_batcher_llm/postprocessing/1/model.py |
triton_backend/all_models/inflight_batcher_llm/preprocessing/1/model.py |
triton_backend/all_models/inflight_batcher_llm/tensorrt_llm/1/model.py |
triton_backend/all_models/inflight_batcher_llm/tensorrt_llm_bls/1/lib/decode.py |
triton_backend/all_models/inflight_batcher_llm/tensorrt_llm_bls/1/lib/triton_decoder.py |
triton_backend/all_models/inflight_batcher_llm/tensorrt_llm_bls/1/model.py |
triton_backend/all_models/llmapi/tensorrt_llm/1/helpers.py |
triton_backend/all_models/llmapi/tensorrt_llm/1/model.py |
triton_backend/all_models/multimodal/multimodal_encoders/1/model.py |
triton_backend/all_models/multimodal/multimodal_encoders/1/multimodal_utils.py |
triton_backend/all_models/tests/test_decode.py |
triton_backend/all_models/tests/test_llmapi_python_backend.py |
triton_backend/all_models/tests/test_multi_image_preprocess.py |
triton_backend/all_models/tests/test_multimodal_encoders.py |
triton_backend/all_models/tests/test_python_backend.py |
triton_backend/all_models/tests/test_triton_decoder.py |
triton_backend/all_models/whisper/whisper_bls/1/fbank.py |
triton_backend/all_models/whisper/whisper_bls/1/model.py |
triton_backend/all_models/whisper/whisper_bls/1/tokenizer.py |
triton_backend/ci/L0_backend_trtllm/base_metrics_verification_tests.py |
triton_backend/ci/L0_backend_trtllm/custom_metrics_verification_tests.py |
triton_backend/inflight_batcher_llm/client/__init__.py |
triton_backend/inflight_batcher_llm/client/e2e_grpc_speculative_decoding_client.py |
triton_backend/inflight_batcher_llm/client/end_to_end_grpc_client.py |
triton_backend/inflight_batcher_llm/client/inflight_batcher_llm_client.py |
triton_backend/scripts/launch_triton_server.py |
triton_backend/tools/__init__.py |
triton_backend/tools/fill_template.py |
triton_backend/tools/gpt/benchmark_core_model.py |
triton_backend/tools/gpt/client.py |
triton_backend/tools/gpt/client_async.py |
triton_backend/tools/gpt/end_to_end_test.py |
triton_backend/tools/gpt/gen_input_data.py |
triton_backend/tools/inflight_batcher_llm/benchmark_core_model.py |
triton_backend/tools/inflight_batcher_llm/end_to_end_test.py |
triton_backend/tools/inflight_batcher_llm/speculative_decoding_test.py |
triton_backend/tools/inflight_batcher_llm/test_max_queue_size.py |
triton_backend/tools/llmapi_client.py |
triton_backend/tools/multimodal/client.py |
triton_backend/tools/tests/__init__.py |
triton_backend/tools/tests/test_fill_template.py |
triton_backend/tools/tests/test_llmapi_cancel.py |
triton_backend/tools/utils/__init__.py |
triton_backend/tools/utils/utils.py |
triton_backend/tools/whisper/client.py
triton_backend/tools/utils/utils.py
)$

# Used by ruff hooks: main ruff (exclude: *legacy_files) and
Expand Down Expand Up @@ -2699,55 +2666,22 @@ legacy-files: &legacy_files |
tests/unittest/utils/test_util.py |
tests/unittest/utils/torch_ref.py |
tests/unittest/utils/util.py |
triton_backend/all_models/disaggregated_serving/disaggregated_serving_bls/1/model.py |
triton_backend/all_models/gpt/postprocessing/1/model.py |
triton_backend/all_models/gpt/preprocessing/1/model.py |
triton_backend/all_models/gpt/tensorrt_llm/1/model.py |
triton_backend/all_models/inflight_batcher_llm/postprocessing/1/model.py |
triton_backend/all_models/inflight_batcher_llm/preprocessing/1/model.py |
triton_backend/all_models/inflight_batcher_llm/tensorrt_llm/1/model.py |
triton_backend/all_models/inflight_batcher_llm/tensorrt_llm_bls/1/lib/decode.py |
triton_backend/all_models/inflight_batcher_llm/tensorrt_llm_bls/1/lib/triton_decoder.py |
triton_backend/all_models/inflight_batcher_llm/tensorrt_llm_bls/1/model.py |
triton_backend/all_models/llmapi/tensorrt_llm/1/helpers.py |
triton_backend/all_models/llmapi/tensorrt_llm/1/model.py |
triton_backend/all_models/multimodal/multimodal_encoders/1/model.py |
triton_backend/all_models/multimodal/multimodal_encoders/1/multimodal_utils.py |
triton_backend/all_models/tests/test_decode.py |
triton_backend/all_models/tests/test_llmapi_python_backend.py |
triton_backend/all_models/tests/test_multi_image_preprocess.py |
triton_backend/all_models/tests/test_multimodal_encoders.py |
triton_backend/all_models/tests/test_python_backend.py |
triton_backend/all_models/tests/test_triton_decoder.py |
triton_backend/all_models/whisper/whisper_bls/1/fbank.py |
triton_backend/all_models/whisper/whisper_bls/1/model.py |
triton_backend/all_models/whisper/whisper_bls/1/tokenizer.py |
triton_backend/ci/L0_backend_trtllm/base_metrics_verification_tests.py |
triton_backend/ci/L0_backend_trtllm/custom_metrics_verification_tests.py |
triton_backend/inflight_batcher_llm/client/__init__.py |
triton_backend/inflight_batcher_llm/client/e2e_grpc_speculative_decoding_client.py |
triton_backend/inflight_batcher_llm/client/end_to_end_grpc_client.py |
triton_backend/inflight_batcher_llm/client/inflight_batcher_llm_client.py |
triton_backend/scripts/launch_triton_server.py |
triton_backend/tools/__init__.py |
triton_backend/tools/fill_template.py |
triton_backend/tools/gpt/benchmark_core_model.py |
triton_backend/tools/gpt/client.py |
triton_backend/tools/gpt/client_async.py |
triton_backend/tools/gpt/end_to_end_test.py |
triton_backend/tools/gpt/gen_input_data.py |
triton_backend/tools/inflight_batcher_llm/benchmark_core_model.py |
triton_backend/tools/inflight_batcher_llm/end_to_end_test.py |
triton_backend/tools/inflight_batcher_llm/speculative_decoding_test.py |
triton_backend/tools/inflight_batcher_llm/test_max_queue_size.py |
triton_backend/tools/llmapi_client.py |
triton_backend/tools/multimodal/client.py |
triton_backend/tools/tests/__init__.py |
triton_backend/tools/tests/test_fill_template.py |
triton_backend/tools/tests/test_llmapi_cancel.py |
triton_backend/tools/utils/__init__.py |
triton_backend/tools/utils/utils.py |
triton_backend/tools/whisper/client.py
triton_backend/tools/utils/utils.py
)$
# <<<< END AUTO-GENERATED >>>>

Expand Down
5 changes: 4 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ Python and C++ codebase supporting TensorRT engine-based and PyTorch-based execu
- `git commit -s` (DCO sign-off required). Never attribute AI tools in sign-off line. Always rely on `git` to do the sign off instead of directly adding sign off in commit message.
- Do not add co-authors to the git commit message unless explicitly instructed to do so by the user.
- `pre-commit` hooks run on commit — if files are modified by hooks, re-stage and commit again
- LLM args or nested-config changes must run `python3 scripts/generate_llm_args_golden_manifest.py` and commit
`tensorrt_llm/usage/llm_args_golden_manifest.json`; new fields require telemetry/privacy CODEOWNER approval
- PR title format: `[JIRA/NVBUG/None][type] description` (e.g., `[TRTLLM-5516][perf] optimize cuda graph padding`)
- Set `LLM_MODELS_ROOT` env var when running tests that need model weights

Expand Down Expand Up @@ -145,8 +147,9 @@ Key files:
The `gh` CLI uses `~/.config/gh` by default for authentication. Different GitHub hosts or forks may require a different config directory. **Before running any `gh` command** (e.g., `gh pr create`, `gh api`, `gh pr comment`):

1. Check if the user has specified a custom `GH_CONFIG_DIR` (e.g., in `CLAUDE.local.md` or environment). If so, use it.
2. If not explicitly set, **ask the user** whether the default `~/.config/gh` is correct or if a different directory should be used. This is especially relevant when the PR target is a fork (e.g., `nv-auto-deploy/TensorRT-LLM`) rather than `NVIDIA/TensorRT-LLM`.
2. If not explicitly set, default to `~/.config/gh`; do not ask for confirmation.
3. Prefix all `gh` commands with the resolved config dir: `GH_CONFIG_DIR=<path> gh ...`
4. If the command fails due to missing authentication or the wrong GitHub host/account, report the failure and ask for the correct `GH_CONFIG_DIR`.

## CI / Testing

Expand Down
3 changes: 3 additions & 0 deletions CODING_GUIDELINES.md
Original file line number Diff line number Diff line change
Expand Up @@ -551,6 +551,9 @@ When defining any user-facing configuration classes (particularly `LlmArgs` or a
- Prefer `PositiveInt`, `NonNegativeInt`, `NonNegativeFloat`, `PositiveFloat`, `Field(gt=0)`, `Field(ge=0)`, etc. for numeric constraints instead of defining custom validators
- Use `Field(min_length=1)` to enforce minimum length of a list

- After changing LLM args or nested configs, run `python3 scripts/generate_llm_args_golden_manifest.py` and commit
`tensorrt_llm/usage/llm_args_golden_manifest.json`; new fields require telemetry/privacy CODEOWNER approval.

**Validation:**
- Use `@field_validator` and `@model_validator` instead of manual `validate()` or `is_valid()` methods
- Raise `ValueError` instead of using assertions
Expand Down
Loading
Loading