Skip to content

bug in new transformers: 'Florence2ForConditionalGeneration' object has no attribute '_supports_sdpa' #39974

@pseudotensor

Description

@pseudotensor

System Info

transformers 4.55.0
python 3.10
ubuntu 22

Who can help?

@amyeroberts, @qubvel

Information

  • The official example scripts
  • My own modified scripts

Tasks

  • An officially supported task in the examples folder (such as GLUE/SQuAD, ...)
  • My own task or dataset (give details below)

Reproduction

#!/usr/bin/env python3
"""
Minimal reproduction script for Florence-2 AttributeError: '_supports_sdpa'
"""

import torch
import sys

def main():
    print("Loading Florence-2 model...")
    print(f"PyTorch version: {torch.__version__}")
    print(f"Transformers version: {__import__('transformers').__version__}")
    print(f"Python version: {sys.version}")
    
    try:
        from transformers import AutoConfig
        
        # Load config
        config = AutoConfig.from_pretrained(
            "microsoft/Florence-2-base", 
            trust_remote_code=True
        )
        print(f"Config loaded: {type(config)}")
        
        # Use AutoModelForCausalLM to trigger the error
        from transformers import AutoModelForCausalLM
        
        # This should trigger the _supports_sdpa error during model initialization
        print("Loading model with AutoModelForCausalLM...")
        model = AutoModelForCausalLM.from_pretrained(
            "microsoft/Florence-2-base",
            config=config,
            trust_remote_code=True
        )
        print("Success!")
        
    except AttributeError as e:
        if "_supports_sdpa" in str(e):
            print(f"SUCCESS: Reproduced the _supports_sdpa error!")
            print(f"AttributeError: {e}")
            import traceback
            traceback.print_exc()
            return True
        else:
            print(f"Different AttributeError: {e}")
            import traceback
            traceback.print_exc()
            return False
    except Exception as e:
        print(f"Other error: {e}")
        import traceback
        traceback.print_exc()
        return False

if __name__ == "__main__":
    success = main()
    if success:
        print("\n? Successfully reproduced the _supports_sdpa error!")
    else:
        print("\n? Could not reproduce the _supports_sdpa error")(h2ogpt)

gives:

Loading Florence-2 model...
PyTorch version: 2.6.0+cu124
Transformers version: 4.55.0
Python version: 3.10.18 | packaged by conda-forge | (main, Jun  4 2025, 14:45:41) [GCC 13.3.0]
Config loaded: <class 'transformers_modules.microsoft.Florence-2-base.5ca5edf5bd017b9919c05d08aebef5e4c7ac3bac.configuration_florence2.Florence2Config'>
Loading model with AutoModelForCausalLM...
SUCCESS: Reproduced the _supports_sdpa error!
AttributeError: 'Florence2ForConditionalGeneration' object has no attribute '_supports_sdpa'
Traceback (most recent call last):
  File "/home/jon/h2ogpt_internal/florence2_minimal_repro.py", line 30, in main
    model = AutoModelForCausalLM.from_pretrained(
  File "/home/jon/miniconda3/envs/h2ogpt/lib/python3.10/site-packages/transformers/models/auto/auto_factory.py", line 593, in from_pretrained
    return model_class.from_pretrained(
  File "/home/jon/miniconda3/envs/h2ogpt/lib/python3.10/site-packages/transformers/modeling_utils.py", line 316, in _wrapper
    return func(*args, **kwargs)
  File "/home/jon/miniconda3/envs/h2ogpt/lib/python3.10/site-packages/transformers/modeling_utils.py", line 4986, in from_pretrained
    model = cls(config, *model_args, **model_kwargs)
  File "/home/jon/.cache/huggingface/modules/transformers_modules/microsoft/Florence-2-base/5ca5edf5bd017b9919c05d08aebef5e4c7ac3bac/modeling_florence2.py", line 2535, in __init__
    super().__init__(config)
  File "/home/jon/miniconda3/envs/h2ogpt/lib/python3.10/site-packages/transformers/modeling_utils.py", line 2227, in __init__
    self.config._attn_implementation_internal = self._check_and_adjust_attn_implementation(
  File "/home/jon/miniconda3/envs/h2ogpt/lib/python3.10/site-packages/transformers/modeling_utils.py", line 2758, in _check_and_adjust_attn_implementation
    return self.get_correct_attn_implementation(applicable_attn_implementation, is_init_check)
  File "/home/jon/miniconda3/envs/h2ogpt/lib/python3.10/site-packages/transformers/modeling_utils.py", line 2763, in get_correct_attn_implementation
    if not self._supports_sdpa:
  File "/home/jon/miniconda3/envs/h2ogpt/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1928, in __getattr__
    raise AttributeError(
AttributeError: 'Florence2ForConditionalGeneration' object has no attribute '_supports_sdpa'

? Successfully reproduced the _supports_sdpa error!


Expected behavior

Shouldn't fail, unsure which transformers it started on.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions