System Info
- GPU: 8× NVIDIA H200 (SM90), 2,015 GB host RAM
- TensorRT-LLM: 1.3.0rc16 (verified against the source tree)
- Container: nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc16
- Model: Qwen3.5-397B-A17B (bf16; hybrid full-attention + Gated DeltaNet)
- Serving: trtllm-serve, TP8
Who can help?
No response
Information
Tasks
Reproduction
trtllm-serve Qwen3.5-397B-A17B --backend pytorch --tp_size 8
Expected behavior
The model loads within available host RAM (it fits in GPU across 8×H200). The AutoDeploy backend loads the same checkpoint on the same node using ~69 GB committed host RAM (mmap-shared).
actual behavior
The PyTorch backend exhausts host RAM during weight load and OOMs the node. Measured peak committed host RAM (the OOM-relevant metric):
| Deployment |
Modeling path |
Loader behavior |
Peak committed host |
Result |
| Qwen3.5 AutoDeploy (accelerate, mmap) |
— |
mmap/shared |
69 GB |
served (~10 min) |
| Qwen3.5 PyTorch (qwen3_5/qwen3_next) |
accumulates, never frees |
~2,013 GB |
OOM |
never served (54 min) |
additional notes
Root cause (read against the 1.3.0rc16 tree):
- The shared reader
HfWeightLoader._load_safetensors_file (tensorrt_llm/_torch/models/checkpoints/hf/weight_loader.py) uses safetensors.torch.load_file (no mmap) → each of the 8 TP ranks materializes a private host copy.
- Per-model
load_weights diverges:
deepseek_v3 (modeling_deepseekv3.py) drains the host dict as it streams to GPU via .cuda() + weights.mark_consumed(...) → host stays bounded and releases.
qwen3_5 / qwen3_next (modeling_qwen3_next.py) does not call .cuda()/mark_consumed
during load → the host weight dict is never drained → it accumulates → ~8× checkpoint →
~2 TB → OOM.
Before submitting a new issue...
System Info
Who can help?
No response
Information
Tasks
examplesfolder (such as GLUE/SQuAD, ...)Reproduction
Expected behavior
The model loads within available host RAM (it fits in GPU across 8×H200). The AutoDeploy backend loads the same checkpoint on the same node using ~69 GB committed host RAM (mmap-shared).
actual behavior
The PyTorch backend exhausts host RAM during weight load and OOMs the node. Measured peak committed host RAM (the OOM-relevant metric):
additional notes
Root cause (read against the 1.3.0rc16 tree):
HfWeightLoader._load_safetensors_file(tensorrt_llm/_torch/models/checkpoints/hf/weight_loader.py) usessafetensors.torch.load_file(no mmap) → each of the 8 TP ranks materializes a private host copy.load_weightsdiverges:deepseek_v3(modeling_deepseekv3.py) drains the host dict as it streams to GPU via.cuda()+weights.mark_consumed(...)→ host stays bounded and releases.qwen3_5/qwen3_next(modeling_qwen3_next.py) does not call.cuda()/mark_consumedduring load → the host weight dict is never drained → it accumulates → ~8× checkpoint →
~2 TB → OOM.
Before submitting a new issue...