TensorRT
TensorRT copied to clipboard
🐛 [Bug] Compiler error while running sd_unet model
Bug Description
Compile error when sd_unet model is running with dynamo backend. No compile error when torch_compile is used. This error happens after below commit. chore: Fixes required for LLM models (https://github.com/pytorch/TensorRT/pull/3002)
It seems different device types are used in fake tensor.
...
torch._dynamo.exc.TorchRuntimeError: Failed running call_function
To Reproduce
Steps to reproduce the behavior:
- cd tools/perf
- python perf_run.py --model_torch sd_unet --precision fp16 --inputs="(1, 4, 64, 64);(1);(1, 1, 768)" --batch_size 1 --truncate --backends dynamo --report "output.csv"
Expected behavior
No error.
Environment
Build information about Torch-TensorRT can be found by turning on debug messages
- Torch-TensorRT Version (e.g. 1.0.0): 10.3.0
- PyTorch Version (e.g. 1.0): 2.5.0.dev20240816+cu124
- CPU Architecture: x86_64
- OS (e.g., Linux): linux
- How you installed PyTorch (
conda,pip,libtorch, source): source - Build command you used (if compiling from source): python setup.py develop
- Are you using local sources or building from archives: local sources, latest main branch
- Python version: 3.10.12
- CUDA version: 12.4
- GPU models and configuration: NVIDIA GeForce RTX 4080, SM Capability: 8.9
- Any other relevant information:
Additional context
Error log
WARNING:root:Running <function run_dynamo at 0x7f1521bb9090> failed
Traceback (most recent call last):
File "/root/trt/TensorRT/tools/perf/perf_run.py", line 39, in wrapper_func
return func(*args, **kwargs)
File "/root/trt/TensorRT/tools/perf/perf_run.py", line 251, in run_dynamo
model = torchtrt.compile(
File "/root/trt/TensorRT/py/torch_tensorrt/_compile.py", line 266, in compile
exp_program = dynamo_trace(
File "/root/trt/TensorRT/py/torch_tensorrt/dynamo/_tracer.py", line 83, in trace
exp_program = export(
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/export/init.py", line 173, in export
return _export(
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/export/_trace.py", line 1069, in wrapper
raise e
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/export/_trace.py", line 1042, in wrapper
ep = fn(*args, **kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/export/exported_program.py", line 96, in wrapper
return fn(*args, **kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/export/_trace.py", line 2035, in _export
export_artifact = export_func( # type: ignore[operator]
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/export/_trace.py", line 1276, in _strict_export
return _strict_export_lower_to_aten_ir(
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/export/_trace.py", line 1304, in _strict_export_lower_to_aten_ir
gm_torch_level = _export_to_torch_ir(
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/export/_trace.py", line 552, in _export_to_torch_ir
gm_torch_level, _ = torch._dynamo.export(
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/eval_frame.py", line 1437, in inner
result_traced = opt_f(*args, **kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1736, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1747, in _call_impl
return forward_call(*args, **kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/eval_frame.py", line 469, in _fn
return fn(*args, **kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1736, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1747, in _call_impl
return forward_call(*args, **kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1238, in call
return self._torchdynamo_orig_callable(
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 514, in call
return _compile(
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 902, in _compile
guarded_code = compile_inner(code, one_graph, hooks, transform)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 653, in compile_inner
return _compile_inner(code, one_graph, hooks, transform)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_utils_internal.py", line 85, in wrapper_function
return StrobelightCompileTimeProfiler.profile_compile_time(
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_strobelight/compile_time_profiler.py", line 129, in profile_compile_time
return func(*args, **kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 686, in _compile_inner
out_code = transform_code_object(code, transform)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/bytecode_transformation.py", line 1322, in transform_code_object
transformations(instructions, code_options)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 208, in _fn
return fn(*args, **kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 622, in transform
tracer.run()
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2730, in run
super().run()
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 957, in run
while self.step():
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 869, in step
self.dispatch_table[inst.opcode](self, inst)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 557, in wrapper
return inner_fn(self, inst)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1564, in CALL_FUNCTION
self.call_function(fn, args, {})
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 804, in call_function
self.push(fn.call_function(self, args, kwargs)) # type: ignore[arg-type]
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/nn_module.py", line 441, in call_function
return tx.inline_user_function_return(
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 810, in inline_user_function_return
return InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 2945, in inline_call
return cls.inline_call(parent, func, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 3061, in inline_call
tracer.run()
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 957, in run
while self.step():
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 869, in step
self.dispatch_table[inst.opcode](self, inst)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 557, in wrapper
return inner_fn(self, inst)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1642, in CALL_FUNCTION_EX
self.call_function(fn, argsvars.items, kwargsvars)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 804, in call_function
self.push(fn.call_function(self, args, kwargs)) # type: ignore[arg-type]
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 383, in call_function
return super().call_function(tx, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 322, in call_function
return super().call_function(tx, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 106, in call_function
return tx.inline_user_function_return(self, [*self.self_args(), *args], kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 810, in inline_user_function_return
return InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 2945, in inline_call
return cls.inline_call(parent, func, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 3061, in inline_call
tracer.run()
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 957, in run
while self.step():
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 869, in step
self.dispatch_table[inst.opcode](self, inst)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 557, in wrapper
return inner_fn(self, inst)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1564, in CALL_FUNCTION
self.call_function(fn, args, {})
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 804, in call_function
self.push(fn.call_function(self, args, kwargs)) # type: ignore[arg-type]
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/nn_module.py", line 441, in call_function
return tx.inline_user_function_return(
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 810, in inline_user_function_return
return InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 2945, in inline_call
return cls.inline_call(parent, func, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 3061, in inline_call
tracer.run()
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 957, in run
while self.step():
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 869, in step
self.dispatch_table[inst.opcode](self, inst)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 557, in wrapper
return inner_fn(self, inst)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1642, in CALL_FUNCTION_EX
self.call_function(fn, argsvars.items, kwargsvars)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 804, in call_function
self.push(fn.call_function(self, args, kwargs)) # type: ignore[arg-type]
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 383, in call_function
return super().call_function(tx, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 322, in call_function
return super().call_function(tx, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 106, in call_function
return tx.inline_user_function_return(self, [*self.self_args(), *args], kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 810, in inline_user_function_return
return InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 2945, in inline_call
return cls.inline_call(parent, func, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 3061, in inline_call
tracer.run()
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 957, in run
while self.step():
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 869, in step
self.dispatch_table[inst.opcode](self, inst)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 557, in wrapper
return inner_fn(self, inst)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1564, in CALL_FUNCTION
self.call_function(fn, args, {})
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 804, in call_function
self.push(fn.call_function(self, args, kwargs)) # type: ignore[arg-type]
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/misc.py", line 952, in call_function
return self.obj.call_method(tx, self.name, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/misc.py", line 157, in call_method
).call_function(tx, [self.objvar] + args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 322, in call_function
return super().call_function(tx, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 106, in call_function
return tx.inline_user_function_return(self, [*self.self_args(), *args], kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 810, in inline_user_function_return
return InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 2945, in inline_call
return cls.inline_call(parent, func, args, kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 3061, in inline_call
tracer.run()
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 957, in run
while self.step():
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 869, in step
self.dispatch_table[inst.opcode](self, inst)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 557, in wrapper
return inner_fn(self, inst)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1564, in CALL_FUNCTION
self.call_function(fn, args, {})
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 804, in call_function
self.push(fn.call_function(self, args, kwargs)) # type: ignore[arg-type]
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/torch.py", line 817, in call_function
tensor_variable = wrap_fx_proxy(
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/builder.py", line 1895, in wrap_fx_proxy
return wrap_fx_proxy_cls(target_cls=TensorVariable, **kwargs)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/variables/builder.py", line 1982, in wrap_fx_proxy_cls
example_value = get_fake_value(proxy.node, tx, allow_non_graph_fake=True)
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 2049, in get_fake_value
raise TorchRuntimeError(str(e)).with_traceback(e.traceback) from None
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 1981, in get_fake_value
ret_val = wrap_fake_exception(
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 1466, in wrap_fake_exception
return fn()
File "/root/.pyenv/versions/3.10.14/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 1982, in