Skip to content

Torch Compile Error: torch._dynamo.exc.Unsupported: hasattr: TensorVariable() #3357

Closed
@dblunk88

Description

@dblunk88

Describe the bug

Getting this error:

  0%|          | 0/100 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "/home/david/PycharmProjects/local_diffusion/deepfloyd.py", line 61, in <module>
    image = pipe(
  File "/home/david/.local/lib/python3.10/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
    return func(*args, **kwargs)
  File "/home/david/PycharmProjects/local_diffusion/diffusers/src/diffusers/pipelines/deepfloyd_if/pipeline_if.py", line 791, in __call__
    noise_pred = self.unet(
  File "/home/david/.local/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/eval_frame.py", line 280, in _fn
    return fn(*args, **kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/eval_frame.py", line 433, in catch_errors
    return callback(frame, cache_size, hooks, frame_state)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 122, in _fn
    return fn(*args, **kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 337, in _convert_frame_assert
    return _compile(
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/utils.py", line 177, in time_wrapper
    r = func(*args, **kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 407, in _compile
    out_code = transform_code_object(code, transform)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/bytecode_transformation.py", line 1000, in transform_code_object
    transformations(instructions, code_options)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 392, in transform
    tracer.run()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2006, in run
    super().run()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 703, in run
    and self.step()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 663, in step
    getattr(self, inst.opname)(inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 385, in wrapper
    return inner_fn(self, inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1135, in CALL_FUNCTION_EX
    self.call_function(fn, argsvars.items, kwargsvars.items)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 554, in call_function
    self.push(fn.call_function(self, args, kwargs))
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 306, in call_function
    return super().call_function(tx, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 269, in call_function
    return super().call_function(tx, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 102, in call_function
    return tx.inline_user_function_return(
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 590, in inline_user_function_return
    result = InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2111, in inline_call
    return cls.inline_call_(parent, func, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2189, in inline_call_
    tracer.run()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 703, in run
    and self.step()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 663, in step
    getattr(self, inst.opname)(inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 385, in wrapper
    return inner_fn(self, inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1095, in CALL_FUNCTION
    self.call_function(fn, args, {})
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 554, in call_function
    self.push(fn.call_function(self, args, kwargs))
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 269, in call_function
    return super().call_function(tx, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 102, in call_function
    return tx.inline_user_function_return(
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 590, in inline_user_function_return
    result = InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2111, in inline_call
    return cls.inline_call_(parent, func, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2189, in inline_call_
    tracer.run()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 703, in run
    and self.step()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 663, in step
    getattr(self, inst.opname)(inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 385, in wrapper
    return inner_fn(self, inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1147, in CALL_FUNCTION_KW
    self.call_function(fn, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 554, in call_function
    self.push(fn.call_function(self, args, kwargs))
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 269, in call_function
    return super().call_function(tx, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 102, in call_function
    return tx.inline_user_function_return(
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 590, in inline_user_function_return
    result = InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2111, in inline_call
    return cls.inline_call_(parent, func, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2189, in inline_call_
    tracer.run()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 703, in run
    and self.step()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 663, in step
    getattr(self, inst.opname)(inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 385, in wrapper
    return inner_fn(self, inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1095, in CALL_FUNCTION
    self.call_function(fn, args, {})
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 554, in call_function
    self.push(fn.call_function(self, args, kwargs))
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 102, in call_function
    return tx.inline_user_function_return(
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 590, in inline_user_function_return
    result = InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2111, in inline_call
    return cls.inline_call_(parent, func, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2189, in inline_call_
    tracer.run()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 703, in run
    and self.step()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 663, in step
    getattr(self, inst.opname)(inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 385, in wrapper
    return inner_fn(self, inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1135, in CALL_FUNCTION_EX
    self.call_function(fn, argsvars.items, kwargsvars.items)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 554, in call_function
    self.push(fn.call_function(self, args, kwargs))
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 269, in call_function
    return super().call_function(tx, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 102, in call_function
    return tx.inline_user_function_return(
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 590, in inline_user_function_return
    result = InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2111, in inline_call
    return cls.inline_call_(parent, func, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2189, in inline_call_
    tracer.run()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 703, in run
    and self.step()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 663, in step
    getattr(self, inst.opname)(inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 385, in wrapper
    return inner_fn(self, inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1095, in CALL_FUNCTION
    self.call_function(fn, args, {})
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 554, in call_function
    self.push(fn.call_function(self, args, kwargs))
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/functions.py", line 102, in call_function
    return tx.inline_user_function_return(
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 590, in inline_user_function_return
    result = InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2111, in inline_call
    return cls.inline_call_(parent, func, args, kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 2189, in inline_call_
    tracer.run()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 703, in run
    and self.step()
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 663, in step
    getattr(self, inst.opname)(inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 385, in wrapper
    return inner_fn(self, inst)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1095, in CALL_FUNCTION
    self.call_function(fn, args, {})
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 554, in call_function
    self.push(fn.call_function(self, args, kwargs))
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/builtin.py", line 584, in call_function
    result = handler(tx, *args, **kwargs)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/builtin.py", line 941, in call_hasattr
    return obj.call_hasattr(tx, name).add_options(self, obj, attr)
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/variables/base.py", line 225, in call_hasattr
    unimplemented(f"hasattr: {repr(self)}")
  File "/home/david/.local/lib/python3.10/site-packages/torch/_dynamo/exc.py", line 133, in unimplemented
    raise Unsupported(msg)
torch._dynamo.exc.Unsupported: hasattr: TensorVariable()

from user code:
   File "/home/david/.local/lib/python3.10/site-packages/accelerate/utils/operations.py", line 100, in recursively_apply
    elif test_type(data):
  File "/home/david/.local/lib/python3.10/site-packages/accelerate/utils/operations.py", line 131, in _has_to_method
    return hasattr(t, "to")

Set torch._dynamo.config.verbose=True or TORCHDYNAMO_VERBOSE=1 for more information


You can suppress this exception and fall back to eager by setting:
    import torch._dynamo
    torch._dynamo.config.suppress_errors = True

Reproduction

using the same code as in #3313

Logs

No response

System Info

newest diffusers, Ubuntu 22.04, Python3.10, nightly version of pytorch

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingstaleIssues that haven't received updates

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions