Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

OnnxExporterError using dynamo_export #126618

Open
alba-saco opened this issue May 18, 2024 · 5 comments
Open

OnnxExporterError using dynamo_export #126618

alba-saco opened this issue May 18, 2024 · 5 comments
Labels
module: onnx Related to torch.onnx triaged This issue has been looked at a team member, and triaged and prioritized into an appropriate module

Comments

@alba-saco
Copy link

馃悰 Describe the bug

I got an OnnxExporterError trying to export a PyTorch model using dynamo_export. See below:

Traceback (most recent call last):
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/demucs_onnx_export.py", line 15, in <module>
    onnx_program = torch.onnx.dynamo_export(model, padded_mix)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/onnx/_internal/exporter.py", line 1206, in dynamo_export
    raise OnnxExporterError(
torch.onnx.OnnxExporterError: Failed to export the model to ONNX. Generating SARIF report at 'report_dynamo_export.sarif'. SARIF is a standard format for the output of static analysis tools. SARIF logs can be loaded in VS Code SARIF viewer extension, or SARIF web viewer (https://microsoft.github.io/sarif-web-component/). Please report a bug on PyTorch Github: https://github.com/pytorch/pytorch/issues

As requested in the error message, I'm raising an issue and pasting the contents of the SARIF report below (I'm unable to attach it as a file). Please let me know if there is other information I can provide and I would love to stay up to date on efforts to improve this functionality.
Thank you.

{
 "runs":[
  {
   "tool":{
    "driver":{
     "name":"torch.onnx.dynamo_export",
     "contents":[
      "localizedData",
      "nonLocalizedData"
     ],
     "language":"en-US",
     "rules":[],
     "version":"2.1.2"
    }
   },
   "language":"en-US",
   "newlineSequences":[
    "\r\n",
    "\n"
   ],
   "results":[]
  }
 ],
 "version":"2.1.0",
 "schemaUri":"https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/schemas/sarif-schema-2.1.0.json"
}

Versions

Collecting environment information...
PyTorch version: 2.1.2
Is debug build: False
CUDA used to build PyTorch: None
ROCM used to build PyTorch: N/A

OS: macOS 14.3 (arm64)
GCC version: Could not collect
Clang version: 15.0.0 (clang-1500.3.9.4)
CMake version: Could not collect
Libc version: N/A

Python version: 3.11.6 (v3.11.6:8b6ee5ba3b, Oct  2 2023, 11:18:21) [Clang 13.0.0 (clang-1300.0.29.30)] (64-bit runtime)
Python platform: macOS-14.3-arm64-arm-64bit
Is CUDA available: False
CUDA runtime version: No CUDA
CUDA_MODULE_LOADING set to: N/A
GPU models and configuration: No CUDA
Nvidia driver version: No CUDA
cuDNN version: No CUDA
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

CPU:
Apple M3 Pro

Versions of relevant libraries:
[pip3] numpy==1.26.4
[pip3] onnx==1.16.0
[pip3] onnxscript==0.1.0.dev20240518
[pip3] torch==2.1.2
[pip3] torchaudio==2.1.2
[conda] Could not collect
@mikaylagawarecki mikaylagawarecki added module: onnx Related to torch.onnx triaged This issue has been looked at a team member, and triaged and prioritized into an appropriate module labels May 20, 2024
@titaiwangms
Copy link
Collaborator

titaiwangms commented May 21, 2024

Hi @alba-saco ,

sarif should be a file called "report_dynamo_export.sarif", and it's generated when it's failed. If you have it, you can upload that. Alternatively, above this error message, there should an original error stack right above it. Could you paste that? Also, it will be helpful that a simple repro is provided.

@alba-saco
Copy link
Author

Hi @titaiwangms, I assume you meant to tag me as I posted the issue initially.

Below is the original error stack, apologies for the oversight:

Traceback (most recent call last):
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/onnx/_internal/exporter.py", line 1195, in dynamo_export
    ).export()
      ^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/onnx/_internal/exporter.py", line 941, in export
    graph_module = self.options.fx_tracer.generate_fx(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/onnx/_internal/fx/dynamo_graph_extractor.py", line 199, in generate_fx
    graph_module, graph_guard = torch._dynamo.export(
                                ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/eval_frame.py", line 1140, in inner
    result_traced = opt_f(*args, **kwargs)
                    ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/eval_frame.py", line 328, in _fn
    return fn(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/onnx/_internal/fx/dynamo_graph_extractor.py", line 154, in wrapped
    return output_adapter.apply(model_func(*args, **kwargs))
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/eval_frame.py", line 490, in catch_errors
    return callback(frame, cache_entry, hooks, frame_state)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/convert_frame.py", line 133, in _fn
    return fn(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/convert_frame.py", line 389, in _convert_frame_assert
    return _compile(
           ^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/convert_frame.py", line 569, in _compile
    guarded_code = compile_inner(code, one_graph, hooks, transform)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/utils.py", line 189, in time_wrapper
    r = func(*args, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/convert_frame.py", line 491, in compile_inner
    out_code = transform_code_object(code, transform)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/bytecode_transformation.py", line 1028, in transform_code_object
    transformations(instructions, code_options)
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/convert_frame.py", line 458, in transform
    tracer.run()
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 2069, in run
    super().run()
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 719, in run
    and self.step()
        ^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 683, in step
    getattr(self, inst.opname)(inst)
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 1685, in BINARY_OP
    return getattr(self, "BINARY_" + opname)(inst)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 168, in impl
    self.push(fn_var.call_function(self, self.popn(nargs), {}))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/builtin.py", line 599, in call_function
    res = binop_handler(tx, args[0], args[1], options)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/builtin.py", line 238, in user_defined_handler
    return a.call_method(tx, forward_name, [b], {})
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/user_defined.py", line 301, in call_method
    ).call_function(tx, args, kwargs)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/functions.py", line 307, in call_function
    return super().call_function(tx, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/functions.py", line 261, in call_function
    return super().call_function(tx, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/functions.py", line 90, in call_function
    return tx.inline_user_function_return(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 593, in inline_user_function_return
    result = InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 2174, in inline_call
    return cls.inline_call_(parent, func, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 2281, in inline_call_
    tracer.run()
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 719, in run
    and self.step()
        ^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 683, in step
    getattr(self, inst.opname)(inst)
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 392, in wrapper
    return inner_fn(self, inst)
           ^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 1723, in CALL
    self.call_function(fn, args, kwargs)
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 557, in call_function
    self.push(fn.call_function(self, args, kwargs))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/functions.py", line 261, in call_function
    return super().call_function(tx, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/functions.py", line 90, in call_function
    return tx.inline_user_function_return(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 593, in inline_user_function_return
    result = InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 2174, in inline_call
    return cls.inline_call_(parent, func, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 2281, in inline_call_
    tracer.run()
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 719, in run
    and self.step()
        ^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 683, in step
    getattr(self, inst.opname)(inst)
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 392, in wrapper
    return inner_fn(self, inst)
           ^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 1723, in CALL
    self.call_function(fn, args, kwargs)
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 557, in call_function
    self.push(fn.call_function(self, args, kwargs))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/user_defined.py", line 180, in call_function
    return super().call_function(tx, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/base.py", line 306, in call_function
    unimplemented(f"call_function {self} {args} {kwargs}")
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/exc.py", line 172, in unimplemented
    raise Unsupported(msg)
torch._dynamo.exc.Unsupported: call_function UserDefinedClassVariable() [ConstantVariable(int), ConstantVariable(int)] {'_normalize': ConstantVariable(bool)}

from user code:
   File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/demucs/demucs/htdemucs.py", line 534, in forward
    training_length = int(self.segment * self.samplerate)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/fractions.py", line 359, in forward
    return monomorphic_operator(a, b)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/fractions.py", line 496, in _mul
    return Fraction(na * nb, db * da, _normalize=False)

I've just added the repo I was working with if you want to reproduce. The script I was running was demucs_onnx_export.py. It's just a quick test I was doing.

Github didn't give me the option to upload the sarif report to the issue (or here in the comment) which is why I pasted its contents. It grays out the file on selecting as it probably doesn't consider it a valid file extension to upload. You can find it in the github repo I just linked though, under the expected name.

Thank you.

@titaiwangms
Copy link
Collaborator

Hi @alba-saco,

The error stack suggests a dynamo break. dynamo is rapidly changed/improved. Would you mind trying with nightly torch, and see whether it generates the same unsupported error?

@alba-saco
Copy link
Author

Hi @titaiwangms, I just tried the nightly torch and am still getting the same unsupported error. The stack has some minor differences so pasting again for your reference in case it's useful.

Traceback (most recent call last):
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/onnx/_internal/exporter.py", line 1503, in dynamo_export
    ).export()
      ^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/onnx/_internal/exporter.py", line 1236, in export
    graph_module = self.options.fx_tracer.generate_fx(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/onnx/_internal/fx/dynamo_graph_extractor.py", line 213, in generate_fx
    graph_module, graph_guard = torch._dynamo.export(
                                ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/eval_frame.py", line 1306, in inner
    result_traced = opt_f(*args, **kwargs)
                    ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/eval_frame.py", line 414, in _fn
    return fn(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/onnx/_internal/fx/dynamo_graph_extractor.py", line 168, in wrapped
    return output_adapter.apply(model_func(*args, **kwargs), model=model)
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/convert_frame.py", line 1077, in catch_errors
    return callback(frame, cache_entry, hooks, frame_state, skip=1)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/convert_frame.py", line 456, in _convert_frame_assert
    return _compile(
           ^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_utils_internal.py", line 74, in wrapper_function
    return function(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/contextlib.py", line 81, in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/convert_frame.py", line 799, in _compile
    guarded_code = compile_inner(code, one_graph, hooks, transform)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/utils.py", line 210, in time_wrapper
    r = func(*args, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/convert_frame.py", line 618, in compile_inner
    out_code = transform_code_object(code, transform)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/bytecode_transformation.py", line 1167, in transform_code_object
    transformations(instructions, code_options)
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/convert_frame.py", line 177, in _fn
    return fn(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/convert_frame.py", line 564, in transform
    tracer.run()
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 2242, in run
    super().run()
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 884, in run
    while self.step():
          ^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 799, in step
    self.dispatch_table[inst.opcode](self, inst)
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 1817, in BINARY_OP
    return _binary_op_lookup[inst.arg](self, inst)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 231, in impl
    self.push(fn_var.call_function(self, self.popn(nargs), {}))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/builtin.py", line 948, in call_function
    return handler(tx, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/builtin.py", line 832, in builtin_dipatch
    rv = fn(tx, args, kwargs)
         ^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/builtin.py", line 734, in <lambda>
    handlers.append(lambda tx, args, _: binop_handler(tx, *args))
                                        ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/builtin.py", line 319, in user_defined_handler
    return a.call_method(tx, forward_name, [b], {})
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/user_defined.py", line 638, in call_method
    return UserMethodVariable(method, self, source=source).call_function(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/functions.py", line 341, in call_function
    return super().call_function(tx, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/functions.py", line 293, in call_function
    return super().call_function(tx, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/functions.py", line 90, in call_function
    return tx.inline_user_function_return(self, [*self.self_args(), *args], kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 743, in inline_user_function_return
    return InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 2455, in inline_call
    return cls.inline_call_(parent, func, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 2571, in inline_call_
    tracer.run()
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 884, in run
    while self.step():
          ^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 799, in step
    self.dispatch_table[inst.opcode](self, inst)
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 494, in wrapper
    return inner_fn(self, inst)
           ^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 1853, in CALL
    self.call_function(fn, args, kwargs)
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 737, in call_function
    self.push(fn.call_function(self, args, kwargs))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/functions.py", line 293, in call_function
    return super().call_function(tx, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/functions.py", line 90, in call_function
    return tx.inline_user_function_return(self, [*self.self_args(), *args], kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 743, in inline_user_function_return
    return InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 2455, in inline_call
    return cls.inline_call_(parent, func, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 2571, in inline_call_
    tracer.run()
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 884, in run
    while self.step():
          ^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 799, in step
    self.dispatch_table[inst.opcode](self, inst)
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 494, in wrapper
    return inner_fn(self, inst)
           ^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 1853, in CALL
    self.call_function(fn, args, kwargs)
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py", line 737, in call_function
    self.push(fn.call_function(self, args, kwargs))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/user_defined.py", line 445, in call_function
    return super().call_function(tx, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/variables/base.py", line 301, in call_function
    unimplemented(f"call_function {self} {args} {kwargs}")
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/_dynamo/exc.py", line 216, in unimplemented
    raise Unsupported(msg)
torch._dynamo.exc.Unsupported: call_function UserDefinedClassVariable(<class 'fractions.Fraction'>) [ConstantVariable(), ConstantVariable()] {'_normalize': ConstantVariable()}

from user code:
   File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/demucs/demucs/htdemucs.py", line 534, in forward
    training_length = int(self.segment * self.samplerate)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/fractions.py", line 359, in forward
    return monomorphic_operator(a, b)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/fractions.py", line 496, in _mul
    return Fraction(na * nb, db * da, _normalize=False)

Set TORCH_LOGS="+dynamo" and TORCHDYNAMO_VERBOSE=1 for more information


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/demucs_onnx_export.py", line 17, in <module>
    onnx_program = torch.onnx.dynamo_export(model, padded_mix)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/albasaco/Desktop/work/createsafe/demucs_browser/env/lib/python3.11/site-packages/torch/onnx/_internal/exporter.py", line 1514, in dynamo_export
    raise OnnxExporterError(
torch.onnx.OnnxExporterError: Failed to export the model to ONNX. Generating SARIF report at 'report_dynamo_export.sarif'. SARIF is a standard format for the output of static analysis tools. SARIF logs can be loaded in VS Code SARIF viewer extension, or SARIF web viewer (https://microsoft.github.io/sarif-web-component/). Please report a bug on PyTorch Github: https://github.com/pytorch/pytorch/issues

@titaiwangms
Copy link
Collaborator

Hi @alba-saco,

It looks like fraction.Fraction is not supported by dynamo (dynamo is not able to capture FX graph out of this function). Another way that we can test is to feed your model into torch.export.export to see if it works. And if it is, we can then use the generated ExportedProgram to execute dynamo_export. torch.export sometimes works when dynamo_export has graph break because of the different functionalization. However, if even torch.export.export does not work, you would have to file an issue to ask dynamo support fraction.Fraction.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
module: onnx Related to torch.onnx triaged This issue has been looked at a team member, and triaged and prioritized into an appropriate module
Projects
None yet
Development

No branches or pull requests

3 participants