pytorch - 💡(How to fix) Fix [Dynamo] torchvision.io functions raise "RuntimeError when making fake tensor call" instead of graph breaking

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

Error logs

Traceback (most recent call last): Hint: Your code may result in an error when running in eager. Please double check that your code doesn't contain a similar error when actually running eager/uncompiled. You can do this by removing the torch.compile call, or by using torch.compiler.set_stance("force_eager").

Fix Action

Fix / Workaround

Technical Context: The operations in torchvision.io (and their underlying torch.ops.image.* C++ operators) handle image compression and decompression. The output shapes of these functions are data-dependent: Currently, these custom C++ operators do not have FakeTensor (Meta) dispatch rules registered. When Dynamo passes a FakeTensor without backing data to these operators, the dispatcher raises a RuntimeError.

To check the scope of this behavior, I wrote a sweep test for the tensor-based functions in torchvision.io. Out of 23 operations tested, 22 ops raise the exact same RuntimeError. Currently, the workaround is to explicitly decorate the call site with @torch._dynamo.disable.

Executed with TORCH_LOGS="+dynamo" TORCHDYNAMO_VERBOSE=1 python bug.py: (torch) xyt19@Oasis:/tmp$ TORCH_LOGS="+dynamo" TORCHDYNAMO_VERBOSE=1 python bug.py PyTorch version: 2.12.0+cu130 Torchvision version: 0.27.0+cu130 Starting compiled function... I0525 22:52:11.518000 17187 site-packages/torch/_dynamo/utils.py:1992] [0/0] ChromiumEventLogger initialized with id f61d4fc1-7738-4d63-adca-2593c0423362 V0525 22:52:11.519000 17187 site-packages/torch/_dynamo/convert_frame.py:1900] [0/0] torchdynamo start compiling target_function /tmp/bug.py:4, stack (elided 5 frames): V0525 22:52:11.519000 17187 site-packages/torch/_dynamo/convert_frame.py:1900] [0/0] File "/tmp/bug.py", line 20, in <module> V0525 22:52:11.519000 17187 site-packages/torch/_dynamo/convert_frame.py:1900] [0/0] main() V0525 22:52:11.519000 17187 site-packages/torch/_dynamo/convert_frame.py:1900] [0/0] File "/tmp/bug.py", line 16, in main V0525 22:52:11.519000 17187 site-packages/torch/_dynamo/convert_frame.py:1900] [0/0] out = compiled_fn(dummy_img) V0525 22:52:11.519000 17187 site-packages/torch/_dynamo/convert_frame.py:1900] [0/0] I0525 22:52:11.520000 17187 site-packages/torch/_dynamo/symbolic_convert.py:4894] [0/0] Step 1: torchdynamo start tracing target_function /tmp/bug.py:4 I0525 22:52:11.521000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:4002] [0/0] create_env V0525 22:52:11.855000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /tmp/bug.py:5 in target_function (target_function) V0525 22:52:11.855000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] return torchvision.io.encode_png(img) V0525 22:52:11.856000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL torchvision [] V0525 22:52:11.856000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR io [LazyVariableTracker(unrealized: <class 'module'>)] V0525 22:52:11.896000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR encode_png [LazyVariableTracker(unrealized: <class 'module'>)] V0525 22:52:11.897000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST img [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.897000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 1 [LazyVariableTracker(unrealized: <class 'function'>), LazyVariableTracker(unrealized: <class 'torch.Tensor'>)] V0525 22:52:11.898000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5397] [0/0] INLINING <code object encode_png at 0x7f9883c9d790, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py", line 127>, inlined by default V0525 22:52:11.898000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py:142 in encode_png (encode_png) (inline depth: 1) V0525 22:52:11.898000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] if not torch.jit.is_scripting() and not torch.jit.is_tracing(): V0525 22:52:11.908000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL torch [] V0525 22:52:11.908000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR jit [LazyVariableTracker(unrealized: <class 'module'>)] V0525 22:52:11.909000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR is_scripting [LazyVariableTracker(unrealized: <class 'module'>)] V0525 22:52:11.909000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 0 [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.919000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_JUMP_IF_TRUE 28 [ConstantVariable(bool: False)] V0525 22:52:11.919000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL torch [] V0525 22:52:11.919000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR jit [PythonModuleVariable(<module 'torch' from '/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/init.py'>)] V0525 22:52:11.920000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR is_tracing [PythonModuleVariable(<module 'torch.jit' from '/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/jit/init.py'>)] V0525 22:52:11.920000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 0 [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.920000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_JUMP_IF_TRUE 28 [ConstantVariable(bool: False)] V0525 22:52:11.920000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py:143 in encode_png (encode_png) (inline depth: 1) V0525 22:52:11.920000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] _log_api_usage_once(encode_png) V0525 22:52:11.921000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL _log_api_usage_once [] V0525 22:52:11.921000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL encode_png [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.921000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 1 [LazyVariableTracker(unrealized: <class 'function'>), LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.922000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5397] [0/0] INLINING <code object _log_api_usage_once at 0x7f98833024a0, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py", line 769>, inlined by default V0525 22:52:11.922000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py:786 in _log_api_usage_once (_log_api_usage_once) (inline depth: 2) V0525 22:52:11.922000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] module = obj.module V0525 22:52:11.943000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST obj [] V0525 22:52:11.943000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR module [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE STORE_FAST module [LazyVariableTracker(unrealized: <class 'str'>)] V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py:787 in _log_api_usage_once (_log_api_usage_once) (inline depth: 2) V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] if not module.startswith("torchvision"): V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST module [] V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR startswith [LazyVariableTracker(unrealized: <class 'str'>)] V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_CONST torchvision [GetAttrVariable(ConstantVariable(str: 'torchvision.io.image'), startswith)] V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 1 [GetAttrVariable(ConstantVariable(str: 'torchvision.io.image'), startswith), ConstantVariable(str: 'torchvision')] V0525 22:52:11.945000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_JUMP_IF_TRUE 26 [ConstantVariable(bool: True)] V0525 22:52:11.945000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py:789 in _log_api_usage_once (_log_api_usage_once) (inline depth: 2) V0525 22:52:11.945000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] name = obj.class.name V0525 22:52:11.945000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST obj [] V0525 22:52:11.945000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR class [UserFunctionVariable()] V0525 22:52:11.945000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR name [LazyVariableTracker(unrealized: <class 'getset_descriptor'>)] V0525 22:52:11.946000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE STORE_FAST name [LazyVariableTracker(unrealized: <class 'str'>)] V0525 22:52:11.946000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py:790 in _log_api_usage_once (_log_api_usage_once) (inline depth: 2) V0525 22:52:11.946000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] if isinstance(obj, FunctionType): V0525 22:52:11.946000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL isinstance [] V0525 22:52:11.946000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST obj [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>)] V0525 22:52:11.946000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL FunctionType [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), UserFunctionVariable()] V0525 22:52:11.947000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 2 [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), UserFunctionVariable(), LazyVariableTracker(unrealized: <class 'type'>)] V0525 22:52:11.947000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_JUMP_IF_FALSE 50 [ConstantVariable(bool: True)] V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py:791 in _log_api_usage_once (_log_api_usage_once) (inline depth: 2) V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] name = obj.name V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST obj [] V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR name [UserFunctionVariable()] V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE STORE_FAST name [LazyVariableTracker(unrealized: <class 'str'>)] V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py:792 in _log_api_usage_once (_log_api_usage_once) (inline depth: 2) V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] torch._C._log_api_usage_once(f"{module}.{name}") V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL torch [] V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR _C [LazyVariableTracker(unrealized: <class 'module'>)] V0525 22:52:11.949000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR _log_api_usage_once [LazyVariableTracker(unrealized: <class 'module'>)] V0525 22:52:11.949000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST module [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>)] V0525 22:52:11.949000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE FORMAT_VALUE (None, False) [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), ConstantVariable(str: 'torchvision.io.image')] V0525 22:52:11.950000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_CONST . [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), ConstantVariable(str: 'torchvision.io.image')] V0525 22:52:11.950000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST name [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), ConstantVariable(str: 'torchvision.io.image'), ConstantVariable(str: '.')] V0525 22:52:11.950000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE FORMAT_VALUE (None, False) [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), ConstantVariable(str: 'torchvision.io.image'), ConstantVariable(str: '.'), LazyVariableTracker(unrealized: <class 'str'>)] V0525 22:52:11.951000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE BUILD_STRING 3 [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), ConstantVariable(str: 'torchvision.io.image'), ConstantVariable(str: '.'), ConstantVariable(str: 'encode_png')] V0525 22:52:11.951000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 1 [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), ConstantVariable(str: 'torchvision.io.image.encode_png')] V0525 22:52:11.958000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_TOP None [ConstantVariable(NoneType: None)] V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_CONST None [] V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE RETURN_VALUE None [ConstantVariable(NoneType: None)] V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5495] [0/0] DONE INLINING <code object _log_api_usage_once at 0x7f98833024a0, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py", line 769> V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_TOP None [ConstantVariable(NoneType: None)] V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py:144 in encode_png (encode_png) (inline depth: 1) V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] _assert_has_image_ops() V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL _assert_has_image_ops [] V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 0 [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.960000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5397] [0/0] INLINING <code object _assert_has_image_ops at 0x7f9883c6f730, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py", line 20>, inlined by default V0525 22:52:11.960000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py:21 in _assert_has_image_ops (_assert_has_image_ops) (inline depth: 2) V0525 22:52:11.960000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] if not _has_image_ops(): V0525 22:52:11.961000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL _has_image_ops [] V0525 22:52:11.961000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 0 [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.961000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5397] [0/0] INLINING <code object _has_image_ops at 0x7f9883c6f680, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py", line 16>, inlined by default V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py:17 in _has_image_ops (_has_image_ops) (inline depth: 3) V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] return True V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_CONST True [] V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE RETURN_VALUE None [ConstantVariable(bool: True)] V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5495] [0/0] DONE INLINING <code object _has_image_ops at 0x7f9883c6f680, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py", line 16> V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_JUMP_IF_TRUE 14 [ConstantVariable(bool: True)] V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_CONST None [] V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE RETURN_VALUE None [ConstantVariable(NoneType: None)] V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5495] [0/0] DONE INLINING <code object _assert_has_image_ops at 0x7f9883c6f730, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py", line 20> V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_TOP None [ConstantVariable(NoneType: None)] V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py:145 in encode_png (encode_png) (inline depth: 1) V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] output = torch.ops.image.encode_png(input, compression_level) V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL torch [] V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR ops [PythonModuleVariable(<module 'torch' from '/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/init.py'>)] V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR image [LazyVariableTracker(unrealized: <class 'torch._ops._Ops'>)] V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR encode_png [LazyVariableTracker(unrealized: <class 'torch._ops._OpNamespace'>)] V0525 22:52:11.964000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST input [LazyVariableTracker(unrealized: <class 'torch._ops.OpOverloadPacket'>)] V0525 22:52:11.964000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST compression_level [LazyVariableTracker(unrealized: <class 'torch._ops.OpOverloadPacket'>), LazyVariableTracker(unrealized: <class 'torch.Tensor'>)] V0525 22:52:11.964000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 2 [LazyVariableTracker(unrealized: <class 'torch._ops.OpOverloadPacket'>), LazyVariableTracker(unrealized: <class 'torch.Tensor'>), LazyVariableTracker(unrealized: <class 'int'>)] V0525 22:52:11.966000 17187 site-packages/torch/_dynamo/variables/builder.py:4121] [0/0] wrap_to_fake L['img'] (3, 32, 32) StatefulSymbolicContext(dynamic_sizes=[<DimDynamic.STATIC: 2>, <DimDynamic.STATIC: 2>, <DimDynamic.STATIC: 2>], dynamic_strides=[<DimDynamic.INFER_STRIDE: 4>, <DimDynamic.INFER_STRIDE: 4>, <DimDynamic.INFER_STRIDE: 4>], constraint_sizes=[None, None, None], constraint_strides=[None, None, None], specialize_on=[[], [], []], view_base_context=None, shape_ids=None, unbacked_bounds=None, tensor_source=LocalSource(local_name='img', is_input=True, dynamism=None, is_derefed_cell_contents=False), shape_env_to_source_to_symbol_cache={}, excluded_sizes=None) <class 'torch.Tensor'> V0525 22:52:11.968000 17187 site-packages/torch/dynamo/output_graph.py:3928] [0/0] create_graph_input L_img L['img'] FakeTensor(..., size=(3, 32, 32), dtype=torch.uint8) at debug_level 0 before=False V0525 22:52:11.976000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5474] [0/0] FAILED INLINING <code object encode_png at 0x7f9883c9d790, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py", line 127> I0525 22:52:11.980000 17187 site-packages/torch/_dynamo/convert_frame.py:2036] [0/0] run_gc_after_compile: running gc Traceback (most recent call last): File "/tmp/bug.py", line 20, in <module> main() File "/tmp/bug.py", line 16, in main out = compiled_fn(dummy_img) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/eval_frame.py", line 1047, in compile_wrapper result = fn(*args, **kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 2474, in call result = self._torchdynamo_orig_backend( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 2192, in call result = self._inner_convert( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 736, in call result = _compile( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1961, in _compile guarded_code, tracer_output = compile_inner(code, one_graph, hooks) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_utils_internal.py", line 96, in wrapper_function return function(*args, **kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1571, in compile_inner result = _compile_inner(code, one_graph, hooks) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1630, in _compile_inner dynamo_output = compile_frame( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1478, in compile_frame bytecode, tracer_output = transform_code_object(code, transform) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/bytecode_transformation.py", line 1626, in transform_code_object tracer_output = transformations(instructions, code_options) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1450, in transform tracer_output = trace_frame( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 343, in _fn return fn(*args, **kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 911, in trace_frame run_tracer() File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 892, in run_tracer tracer.run() File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1813, in run while self.step(): File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1480, in step self.dispatch_table[inst.opcode](self, inst) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1017, in wrapper return inner_fn(self, inst) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2787, in CALL_FUNCTION self.call_function(fn, args, {}) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1381, in call_function self.push(fn.call_function(self, args, kwargs)) # type: ignore[arg-type] File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/lazy.py", line 294, in realize_and_forward return getattr(self.realize(), name)(*args, **kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 810, in call_function return super().call_function(tx, args, kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 489, in call_function return tx.inline_user_function_return(self, [*self.self_args(), *args], kwargs) # type: ignore[attr-defined] File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1408, in inline_user_function_return return InliningInstructionTranslator.inline_call(self, fn, args, kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 5241, in inline_call return tracer.inline_call() File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 5462, in inline_call self.run() File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1813, in run while self.step(): File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1480, in step self.dispatch_table[inst.opcode](self, inst) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1017, in wrapper return inner_fn(self, inst) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2787, in CALL_FUNCTION self.call_function(fn, args, {}) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1381, in call_function self.push(fn.call_function(self, args, kwargs)) # type: ignore[arg-type] File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/lazy.py", line 294, in realize_and_forward return getattr(self.realize(), name)(args, **kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/torch.py", line 2694, in call_function tensor_variable = wrap_fx_proxy( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/builder.py", line 3090, in wrap_fx_proxy return wrap_fx_proxy_cls(target_cls=TensorVariable, **kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/builder.py", line 3165, in wrap_fx_proxy_cls out: VTTypeAlias = _wrap_fx_proxy( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/builder.py", line 3289, in _wrap_fx_proxy example_value = get_fake_value(proxy.node, tx, allow_non_graph_fake=True) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 3751, in get_fake_value return _get_fake_value_impl(node, tx, allow_non_graph_fake) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 3942, in _get_fake_value_impl _wrap_graph_break_with_torch_runtime_err( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 3740, in _wrap_graph_break_with_torch_runtime_err raise exc.with_traceback(e.traceback) from None File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 3737, in _wrap_graph_break_with_torch_runtime_err gb_fn() File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 3943, in <lambda> lambda: unimplemented( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/exc.py", line 653, in unimplemented raise Unsupported( torch._dynamo.exc.TorchRuntimeError: RuntimeError when making fake tensor call Explanation: Dynamo failed to run FX node with fake tensors: call_function image.encode_png((FakeTensor(..., size=(3, 32, 32), dtype=torch.uint8), 6), **{}): got RuntimeError("The tensor has a non-zero number of elements, but its data is not allocated yet.\nIf you're using torch.compile/export/fx, it is likely that we are erroneously tracing into a custom kernel. To fix this, please wrap the custom kernel into an opaque custom op. Please see the following for details: https://pytorch.org/tutorials/advanced/custom_ops_landing_page.html\nIf you're using Caffe2, Caffe2 uses a lazy allocation, so you will need to call mutable_data() or raw_mutable_data() to actually allocate memory.") Hint: Your code may result in an error when running in eager. Please double check that your code doesn't contain a similar error when actually running eager/uncompiled. You can do this by removing the torch.compile call, or by using torch.compiler.set_stance("force_eager").

Code Example

import torch
import torchvision

def target_function(img):
    return torchvision.io.encode_png(img)


compiled_fn = torch.compile(target_function, fullgraph=False)

def main():
    dummy_img = torch.randint(0, 256, (3, 32, 32), dtype=torch.uint8, device="cpu")
    
    print("Starting compiled function...")
    
    out = compiled_fn(dummy_img)
    print("Success! PNG bytes shape:", out.shape)

if __name__ == "__main__":
    main()
RAW_BUFFERClick to expand / collapse

🐛 Describe the bug

When compiling torchvision.io functions (such as encode_png, decode_jpeg, etc.) with torch.compile, TorchDynamo does not trigger a graph break. Instead, the compilation process is interrupted by a RuntimeError when making fake tensor call during the shape propagation phase.

Technical Context: The operations in torchvision.io (and their underlying torch.ops.image.* C++ operators) handle image compression and decompression. The output shapes of these functions are data-dependent: Currently, these custom C++ operators do not have FakeTensor (Meta) dispatch rules registered. When Dynamo passes a FakeTensor without backing data to these operators, the dispatcher raises a RuntimeError.

Expected Behavior: Ideally, Dynamo should catch the missing Meta registration (or recognize the data-dependent nature of the operation) and safely trigger a Graph Break, falling back to eager execution, rather than raising an unhandled RuntimeError.

Sweep Test Results

To check the scope of this behavior, I wrote a sweep test for the tensor-based functions in torchvision.io. Out of 23 operations tested, 22 ops raise the exact same RuntimeError. Currently, the workaround is to explicitly decorate the call site with @torch._dynamo.disable.

Affected functions include:

  • Encode: encode_png, encode_jpeg
  • Decode: decode_png, decode_jpeg, decode_image
  • File I/O: read_image, write_png, write_jpeg, write_file
  • Raw ops: torch.ops.image.*

Reproducible Proof-of-Concept

<details> <summary>Click to expand a minimal reproducer /summary>
import torch
import torchvision

def target_function(img):
    return torchvision.io.encode_png(img)


compiled_fn = torch.compile(target_function, fullgraph=False)

def main():
    dummy_img = torch.randint(0, 256, (3, 32, 32), dtype=torch.uint8, device="cpu")
    
    print("Starting compiled function...")
    
    out = compiled_fn(dummy_img)
    print("Success! PNG bytes shape:", out.shape)

if __name__ == "__main__":
    main()
</details>

Error logs

Executed with TORCH_LOGS="+dynamo" TORCHDYNAMO_VERBOSE=1 python bug.py: (torch) xyt19@Oasis:/tmp$ TORCH_LOGS="+dynamo" TORCHDYNAMO_VERBOSE=1 python bug.py PyTorch version: 2.12.0+cu130 Torchvision version: 0.27.0+cu130 Starting compiled function... I0525 22:52:11.518000 17187 site-packages/torch/_dynamo/utils.py:1992] [0/0] ChromiumEventLogger initialized with id f61d4fc1-7738-4d63-adca-2593c0423362 V0525 22:52:11.519000 17187 site-packages/torch/_dynamo/convert_frame.py:1900] [0/0] torchdynamo start compiling target_function /tmp/bug.py:4, stack (elided 5 frames): V0525 22:52:11.519000 17187 site-packages/torch/_dynamo/convert_frame.py:1900] [0/0] File "/tmp/bug.py", line 20, in <module> V0525 22:52:11.519000 17187 site-packages/torch/_dynamo/convert_frame.py:1900] [0/0] main() V0525 22:52:11.519000 17187 site-packages/torch/_dynamo/convert_frame.py:1900] [0/0] File "/tmp/bug.py", line 16, in main V0525 22:52:11.519000 17187 site-packages/torch/_dynamo/convert_frame.py:1900] [0/0] out = compiled_fn(dummy_img) V0525 22:52:11.519000 17187 site-packages/torch/_dynamo/convert_frame.py:1900] [0/0] I0525 22:52:11.520000 17187 site-packages/torch/_dynamo/symbolic_convert.py:4894] [0/0] Step 1: torchdynamo start tracing target_function /tmp/bug.py:4 I0525 22:52:11.521000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:4002] [0/0] create_env V0525 22:52:11.855000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /tmp/bug.py:5 in target_function (target_function) V0525 22:52:11.855000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] return torchvision.io.encode_png(img) V0525 22:52:11.856000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL torchvision [] V0525 22:52:11.856000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR io [LazyVariableTracker(unrealized: <class 'module'>)] V0525 22:52:11.896000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR encode_png [LazyVariableTracker(unrealized: <class 'module'>)] V0525 22:52:11.897000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST img [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.897000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 1 [LazyVariableTracker(unrealized: <class 'function'>), LazyVariableTracker(unrealized: <class 'torch.Tensor'>)] V0525 22:52:11.898000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5397] [0/0] INLINING <code object encode_png at 0x7f9883c9d790, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py", line 127>, inlined by default V0525 22:52:11.898000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py:142 in encode_png (encode_png) (inline depth: 1) V0525 22:52:11.898000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] if not torch.jit.is_scripting() and not torch.jit.is_tracing(): V0525 22:52:11.908000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL torch [] V0525 22:52:11.908000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR jit [LazyVariableTracker(unrealized: <class 'module'>)] V0525 22:52:11.909000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR is_scripting [LazyVariableTracker(unrealized: <class 'module'>)] V0525 22:52:11.909000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 0 [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.919000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_JUMP_IF_TRUE 28 [ConstantVariable(bool: False)] V0525 22:52:11.919000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL torch [] V0525 22:52:11.919000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR jit [PythonModuleVariable(<module 'torch' from '/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/init.py'>)] V0525 22:52:11.920000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR is_tracing [PythonModuleVariable(<module 'torch.jit' from '/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/jit/init.py'>)] V0525 22:52:11.920000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 0 [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.920000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_JUMP_IF_TRUE 28 [ConstantVariable(bool: False)] V0525 22:52:11.920000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py:143 in encode_png (encode_png) (inline depth: 1) V0525 22:52:11.920000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] _log_api_usage_once(encode_png) V0525 22:52:11.921000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL _log_api_usage_once [] V0525 22:52:11.921000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL encode_png [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.921000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 1 [LazyVariableTracker(unrealized: <class 'function'>), LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.922000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5397] [0/0] INLINING <code object _log_api_usage_once at 0x7f98833024a0, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py", line 769>, inlined by default V0525 22:52:11.922000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py:786 in _log_api_usage_once (_log_api_usage_once) (inline depth: 2) V0525 22:52:11.922000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] module = obj.module V0525 22:52:11.943000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST obj [] V0525 22:52:11.943000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR module [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE STORE_FAST module [LazyVariableTracker(unrealized: <class 'str'>)] V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py:787 in _log_api_usage_once (_log_api_usage_once) (inline depth: 2) V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] if not module.startswith("torchvision"): V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST module [] V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR startswith [LazyVariableTracker(unrealized: <class 'str'>)] V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_CONST torchvision [GetAttrVariable(ConstantVariable(str: 'torchvision.io.image'), startswith)] V0525 22:52:11.944000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 1 [GetAttrVariable(ConstantVariable(str: 'torchvision.io.image'), startswith), ConstantVariable(str: 'torchvision')] V0525 22:52:11.945000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_JUMP_IF_TRUE 26 [ConstantVariable(bool: True)] V0525 22:52:11.945000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py:789 in _log_api_usage_once (_log_api_usage_once) (inline depth: 2) V0525 22:52:11.945000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] name = obj.class.name V0525 22:52:11.945000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST obj [] V0525 22:52:11.945000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR class [UserFunctionVariable()] V0525 22:52:11.945000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR name [LazyVariableTracker(unrealized: <class 'getset_descriptor'>)] V0525 22:52:11.946000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE STORE_FAST name [LazyVariableTracker(unrealized: <class 'str'>)] V0525 22:52:11.946000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py:790 in _log_api_usage_once (_log_api_usage_once) (inline depth: 2) V0525 22:52:11.946000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] if isinstance(obj, FunctionType): V0525 22:52:11.946000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL isinstance [] V0525 22:52:11.946000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST obj [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>)] V0525 22:52:11.946000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL FunctionType [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), UserFunctionVariable()] V0525 22:52:11.947000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 2 [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), UserFunctionVariable(), LazyVariableTracker(unrealized: <class 'type'>)] V0525 22:52:11.947000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_JUMP_IF_FALSE 50 [ConstantVariable(bool: True)] V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py:791 in _log_api_usage_once (_log_api_usage_once) (inline depth: 2) V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] name = obj.name V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST obj [] V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR name [UserFunctionVariable()] V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE STORE_FAST name [LazyVariableTracker(unrealized: <class 'str'>)] V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py:792 in _log_api_usage_once (_log_api_usage_once) (inline depth: 2) V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] torch._C._log_api_usage_once(f"{module}.{name}") V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL torch [] V0525 22:52:11.948000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR _C [LazyVariableTracker(unrealized: <class 'module'>)] V0525 22:52:11.949000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR _log_api_usage_once [LazyVariableTracker(unrealized: <class 'module'>)] V0525 22:52:11.949000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST module [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>)] V0525 22:52:11.949000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE FORMAT_VALUE (None, False) [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), ConstantVariable(str: 'torchvision.io.image')] V0525 22:52:11.950000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_CONST . [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), ConstantVariable(str: 'torchvision.io.image')] V0525 22:52:11.950000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST name [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), ConstantVariable(str: 'torchvision.io.image'), ConstantVariable(str: '.')] V0525 22:52:11.950000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE FORMAT_VALUE (None, False) [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), ConstantVariable(str: 'torchvision.io.image'), ConstantVariable(str: '.'), LazyVariableTracker(unrealized: <class 'str'>)] V0525 22:52:11.951000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE BUILD_STRING 3 [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), ConstantVariable(str: 'torchvision.io.image'), ConstantVariable(str: '.'), ConstantVariable(str: 'encode_png')] V0525 22:52:11.951000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 1 [LazyVariableTracker(unrealized: <class 'builtin_function_or_method'>), ConstantVariable(str: 'torchvision.io.image.encode_png')] V0525 22:52:11.958000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_TOP None [ConstantVariable(NoneType: None)] V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_CONST None [] V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE RETURN_VALUE None [ConstantVariable(NoneType: None)] V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5495] [0/0] DONE INLINING <code object _log_api_usage_once at 0x7f98833024a0, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/utils.py", line 769> V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_TOP None [ConstantVariable(NoneType: None)] V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py:144 in encode_png (encode_png) (inline depth: 1) V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] _assert_has_image_ops() V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL _assert_has_image_ops [] V0525 22:52:11.959000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 0 [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.960000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5397] [0/0] INLINING <code object _assert_has_image_ops at 0x7f9883c6f730, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py", line 20>, inlined by default V0525 22:52:11.960000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py:21 in _assert_has_image_ops (_assert_has_image_ops) (inline depth: 2) V0525 22:52:11.960000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] if not _has_image_ops(): V0525 22:52:11.961000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL _has_image_ops [] V0525 22:52:11.961000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 0 [LazyVariableTracker(unrealized: <class 'function'>)] V0525 22:52:11.961000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5397] [0/0] INLINING <code object _has_image_ops at 0x7f9883c6f680, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py", line 16>, inlined by default V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py:17 in _has_image_ops (_has_image_ops) (inline depth: 3) V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] return True V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_CONST True [] V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE RETURN_VALUE None [ConstantVariable(bool: True)] V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5495] [0/0] DONE INLINING <code object _has_image_ops at 0x7f9883c6f680, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py", line 16> V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_JUMP_IF_TRUE 14 [ConstantVariable(bool: True)] V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_CONST None [] V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE RETURN_VALUE None [ConstantVariable(NoneType: None)] V0525 22:52:11.962000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5495] [0/0] DONE INLINING <code object _assert_has_image_ops at 0x7f9883c6f730, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py", line 20> V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE POP_TOP None [ConstantVariable(NoneType: None)] V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] TRACE starts_line /home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py:145 in encode_png (encode_png) (inline depth: 1) V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1435] [0/0] [__trace_source] output = torch.ops.image.encode_png(input, compression_level) V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_GLOBAL torch [] V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR ops [PythonModuleVariable(<module 'torch' from '/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/init.py'>)] V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR image [LazyVariableTracker(unrealized: <class 'torch._ops._Ops'>)] V0525 22:52:11.963000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_ATTR encode_png [LazyVariableTracker(unrealized: <class 'torch._ops._OpNamespace'>)] V0525 22:52:11.964000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST input [LazyVariableTracker(unrealized: <class 'torch._ops.OpOverloadPacket'>)] V0525 22:52:11.964000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE LOAD_FAST compression_level [LazyVariableTracker(unrealized: <class 'torch._ops.OpOverloadPacket'>), LazyVariableTracker(unrealized: <class 'torch.Tensor'>)] V0525 22:52:11.964000 17187 site-packages/torch/_dynamo/symbolic_convert.py:1461] [0/0] [__trace_bytecode] TRACE CALL_FUNCTION 2 [LazyVariableTracker(unrealized: <class 'torch._ops.OpOverloadPacket'>), LazyVariableTracker(unrealized: <class 'torch.Tensor'>), LazyVariableTracker(unrealized: <class 'int'>)] V0525 22:52:11.966000 17187 site-packages/torch/_dynamo/variables/builder.py:4121] [0/0] wrap_to_fake L['img'] (3, 32, 32) StatefulSymbolicContext(dynamic_sizes=[<DimDynamic.STATIC: 2>, <DimDynamic.STATIC: 2>, <DimDynamic.STATIC: 2>], dynamic_strides=[<DimDynamic.INFER_STRIDE: 4>, <DimDynamic.INFER_STRIDE: 4>, <DimDynamic.INFER_STRIDE: 4>], constraint_sizes=[None, None, None], constraint_strides=[None, None, None], specialize_on=[[], [], []], view_base_context=None, shape_ids=None, unbacked_bounds=None, tensor_source=LocalSource(local_name='img', is_input=True, dynamism=None, is_derefed_cell_contents=False), shape_env_to_source_to_symbol_cache={}, excluded_sizes=None) <class 'torch.Tensor'> V0525 22:52:11.968000 17187 site-packages/torch/dynamo/output_graph.py:3928] [0/0] create_graph_input L_img L['img'] FakeTensor(..., size=(3, 32, 32), dtype=torch.uint8) at debug_level 0 before=False V0525 22:52:11.976000 17187 site-packages/torch/_dynamo/symbolic_convert.py:5474] [0/0] FAILED INLINING <code object encode_png at 0x7f9883c9d790, file "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py", line 127> I0525 22:52:11.980000 17187 site-packages/torch/_dynamo/convert_frame.py:2036] [0/0] run_gc_after_compile: running gc Traceback (most recent call last): File "/tmp/bug.py", line 20, in <module> main() File "/tmp/bug.py", line 16, in main out = compiled_fn(dummy_img) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/eval_frame.py", line 1047, in compile_wrapper result = fn(*args, **kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 2474, in call result = self._torchdynamo_orig_backend( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 2192, in call result = self._inner_convert( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 736, in call result = _compile( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1961, in _compile guarded_code, tracer_output = compile_inner(code, one_graph, hooks) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_utils_internal.py", line 96, in wrapper_function return function(*args, **kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1571, in compile_inner result = _compile_inner(code, one_graph, hooks) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1630, in _compile_inner dynamo_output = compile_frame( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1478, in compile_frame bytecode, tracer_output = transform_code_object(code, transform) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/bytecode_transformation.py", line 1626, in transform_code_object tracer_output = transformations(instructions, code_options) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1450, in transform tracer_output = trace_frame( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 343, in _fn return fn(*args, **kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 911, in trace_frame run_tracer() File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 892, in run_tracer tracer.run() File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1813, in run while self.step(): File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1480, in step self.dispatch_table[inst.opcode](self, inst) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1017, in wrapper return inner_fn(self, inst) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2787, in CALL_FUNCTION self.call_function(fn, args, {}) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1381, in call_function self.push(fn.call_function(self, args, kwargs)) # type: ignore[arg-type] File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/lazy.py", line 294, in realize_and_forward return getattr(self.realize(), name)(*args, **kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 810, in call_function return super().call_function(tx, args, kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 489, in call_function return tx.inline_user_function_return(self, [*self.self_args(), *args], kwargs) # type: ignore[attr-defined] File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1408, in inline_user_function_return return InliningInstructionTranslator.inline_call(self, fn, args, kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 5241, in inline_call return tracer.inline_call() File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/dynamo/symbolic_convert.py", line 5462, in inline_call self.run() File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1813, in run while self.step(): File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1480, in step self.dispatch_table[inst.opcode](self, inst) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1017, in wrapper return inner_fn(self, inst) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2787, in CALL_FUNCTION self.call_function(fn, args, {}) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1381, in call_function self.push(fn.call_function(self, args, kwargs)) # type: ignore[arg-type] File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/lazy.py", line 294, in realize_and_forward return getattr(self.realize(), name)(args, **kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/torch.py", line 2694, in call_function tensor_variable = wrap_fx_proxy( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/builder.py", line 3090, in wrap_fx_proxy return wrap_fx_proxy_cls(target_cls=TensorVariable, **kwargs) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/builder.py", line 3165, in wrap_fx_proxy_cls out: VTTypeAlias = _wrap_fx_proxy( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/variables/builder.py", line 3289, in _wrap_fx_proxy example_value = get_fake_value(proxy.node, tx, allow_non_graph_fake=True) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 3751, in get_fake_value return _get_fake_value_impl(node, tx, allow_non_graph_fake) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 3942, in _get_fake_value_impl _wrap_graph_break_with_torch_runtime_err( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 3740, in _wrap_graph_break_with_torch_runtime_err raise exc.with_traceback(e.traceback) from None File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 3737, in _wrap_graph_break_with_torch_runtime_err gb_fn() File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 3943, in <lambda> lambda: unimplemented( File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torch/_dynamo/exc.py", line 653, in unimplemented raise Unsupported( torch._dynamo.exc.TorchRuntimeError: RuntimeError when making fake tensor call Explanation: Dynamo failed to run FX node with fake tensors: call_function image.encode_png((FakeTensor(..., size=(3, 32, 32), dtype=torch.uint8), 6), **{}): got RuntimeError("The tensor has a non-zero number of elements, but its data is not allocated yet.\nIf you're using torch.compile/export/fx, it is likely that we are erroneously tracing into a custom kernel. To fix this, please wrap the custom kernel into an opaque custom op. Please see the following for details: https://pytorch.org/tutorials/advanced/custom_ops_landing_page.html\nIf you're using Caffe2, Caffe2 uses a lazy allocation, so you will need to call mutable_data() or raw_mutable_data() to actually allocate memory.") Hint: Your code may result in an error when running in eager. Please double check that your code doesn't contain a similar error when actually running eager/uncompiled. You can do this by removing the torch.compile call, or by using torch.compiler.set_stance("force_eager").

Developer debug context:

For more details about this graph break, please visit: https://meta-pytorch.github.io/compile-graph-break-site/gb/gb4315.html

from user code: File "/tmp/bug.py", line 5, in target_function return torchvision.io.encode_png(img) File "/home/xyt19/miniconda3/envs/torch/lib/python3.10/site-packages/torchvision/io/image.py", line 145, in encode_png output = torch.ops.image.encode_png(input, compression_level)

I0525 22:52:12.002000 17187 site-packages/torch/_dynamo/eval_frame.py:702] TorchDynamo attempted to trace the following frames: [ I0525 22:52:12.002000 17187 site-packages/torch/_dynamo/eval_frame.py:702] * target_function /tmp/bug.py:4 I0525 22:52:12.002000 17187 site-packages/torch/_dynamo/eval_frame.py:702] ] I0525 22:52:12.003000 17187 site-packages/torch/_dynamo/utils.py:916] TorchDynamo compilation metrics: I0525 22:52:12.003000 17187 site-packages/torch/_dynamo/utils.py:916] Function, Runtimes (s) I0525 22:52:12.003000 17187 site-packages/torch/_dynamo/utils.py:916] _compile.compile_inner, 0.4684 I0525 22:52:12.003000 17187 site-packages/torch/_dynamo/utils.py:916] compile_attempt_0, 0.4577 I0525 22:52:12.003000 17187 site-packages/torch/_dynamo/utils.py:916] bytecode_tracing, 0.1220 I0525 22:52:12.003000 17187 site-packages/torch/_dynamo/utils.py:916] get_fake_value, 0.0064 I0525 22:52:12.003000 17187 site-packages/torch/_dynamo/utils.py:916] create_proxy, 0.0069 I0525 22:52:12.003000 17187 site-packages/torch/_dynamo/utils.py:916] wrap_to_fake_tensor_and_record, 0.0030 I0525 22:52:12.003000 17187 site-packages/torch/_dynamo/utils.py:916] variable_builder_call, 0.0507 I0525 22:52:12.003000 17187 site-packages/torch/_dynamo/utils.py:916] gc, 0.0010 V0525 22:52:12.003000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats constrain_symbol_range: CacheInfo(hits=0, misses=0, maxsize=None, currsize=0) V0525 22:52:12.003000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats guard_or_defer_runtime_assert: CacheInfo(hits=0, misses=0, maxsize=256, currsize=0) V0525 22:52:12.003000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats _inner_evaluate_expr: CacheInfo(hits=0, misses=0, maxsize=256, currsize=0) V0525 22:52:12.003000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats _simplify_floor_div: CacheInfo(hits=0, misses=0, maxsize=None, currsize=0) V0525 22:52:12.003000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats _maybe_guard_rel: CacheInfo(hits=0, misses=0, maxsize=256, currsize=0) V0525 22:52:12.003000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats _find: CacheInfo(hits=0, misses=0, maxsize=None, currsize=0) V0525 22:52:12.003000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats has_guarding_hint: CacheInfo(hits=0, misses=0, maxsize=256, currsize=0) V0525 22:52:12.003000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats guarding_hint_or_throw: CacheInfo(hits=0, misses=0, maxsize=256, currsize=0) V0525 22:52:12.003000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats size_hint: CacheInfo(hits=0, misses=0, maxsize=256, currsize=0) V0525 22:52:12.003000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats simplify: CacheInfo(hits=0, misses=0, maxsize=None, currsize=0) V0525 22:52:12.004000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats _update_divisible: CacheInfo(hits=0, misses=0, maxsize=None, currsize=0) V0525 22:52:12.004000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats replace: CacheInfo(hits=0, misses=0, maxsize=None, currsize=0) V0525 22:52:12.004000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats _maybe_evaluate_static: CacheInfo(hits=0, misses=0, maxsize=None, currsize=0) V0525 22:52:12.004000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats get_implications: CacheInfo(hits=0, misses=0, maxsize=None, currsize=0) V0525 22:52:12.004000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats get_axioms: CacheInfo(hits=0, misses=0, maxsize=None, currsize=0) V0525 22:52:12.004000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats _maybe_evaluate_static_worker: CacheInfo(hits=0, misses=0, maxsize=None, currsize=0) V0525 22:52:12.004000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats safe_expand: CacheInfo(hits=0, misses=0, maxsize=256, currsize=0) V0525 22:52:12.004000 17187 site-packages/torch/fx/experimental/symbolic_shapes.py:241] lru_cache_stats uninteresting_files: CacheInfo(hits=6, misses=1, maxsize=None, currsize=1)

Versions

PyTorch version: 2.12.0+cu130 Is debug build: False CUDA used to build PyTorch: 13.0 ROCM used to build PyTorch: N/A

OS: Ubuntu 24.04.4 LTS (x86_64) GCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 Clang version: 18.1.3 (1ubuntu1) CMake version: version 3.28.3 Libc version: glibc-2.39

Python version: 3.10.20 (main, Mar 11 2026, 17:46:40) [GCC 14.3.0] (64-bit runtime) Python platform: Linux-5.15.167.4-microsoft-standard-WSL2-x86_64-with-glibc2.39 Is CUDA available: True CUDA runtime version: 12.0.140

cc @chauhang @penguinwu @voznesenskym @EikanWang @jgong5 @Guobing-Chen @XiaobingSuper @zhuhaozhe @blzheng @wenzhe-nrv @jiayisunx @kadeng @amjames @jataylo @azahed98

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING