Lazy loading is not working properly
Author: albertvillanova
Pull request: no
Labels: name: bug

### Problem

Lazy loading is not working properly:
- importing transformers takes ~3.5s

### Who can help?

_No response_

### 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

```bash
time python -c "import transformers"
```
```
real	0m3.669s
user	0m4.789s
sys	0m0.311s
```

### Expected behavior

It should take less <0.5s

Comments:
This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md) are likely to be ignored.

As of today, the lazy import continues broken:
```bash
time python -c "import transformers"

real	0m3.639s
user	0m4.863s
sys	0m0.320s
```

CC: @Rocketknight1, @LysandreJik

**TL;DR:** Disable unused backend probing before importing transformers:

```bash
export TRANSFORMERS_NO_TF=1
export TRANSFORMERS_NO_FLAX=1
```

Or in Python:
```python
import os
os.environ["TRANSFORMERS_NO_TF"] = "1"
os.environ["TRANSFORMERS_NO_FLAX"] = "1"
import transformers
```

**Root cause:** `transformers` runs an expensive directory scan (`_create_import_structure_from_path`) at import time across 300+ model directories. Having multiple ML backends (PyTorch + TensorFlow/JAX) installed causes eager probing of all backends, which is the single largest contributor — typically inflating import time from ~1s to ~3.5s. Additionally, use selective imports (`from transformers import AutoModel`) instead of `import transformers` when possible.

If you don't need TF/JAX at all: `pip uninstall tensorflow jax flax` provides the largest speedup.

Related: #44246, #16863

---
*Generated by [OctoScout](https://github.com/tommy-fcy/OctoScout) — AI-assisted ML compatibility diagnosis.*

@albertvillanova I worked on this lately, I pushed a fix ~3weeks ago. see https://github.com/huggingface/transformers/pull/45013

Would you mind trying again with a fresh version of `main`?

This is my timing with torch installed:

```
(venv) m5 ➜transformers git:(tarekziade-otel) ✗ time python -c "import transformers"
python -c "import transformers"  0.30s user 0.09s system 98% cpu 0.393 total
```

I also added a QA test for this to make sure it would not slow down again:

```
✗ python utils/check_import_complexity.py
Import complexity OK: 585 modules (max 1000)
```

and you can use `--display` to see the whole tree


Thanks for addressing this issue, @tarekziade.

Unfortunately, I am still seeing a non-negligible latency:
```bash
time python -c "import transformers"

real	0m2.738s
user	0m1.389s
sys	0m0.144s
```

Could you run `python utils/check_import_complexity.py` and see how many imports you see?
If it's a much bigger number than mine, something is odd, we'll need to run with `--display` so we can investigate what gets pulled where.
If it's like mine, this means your hardware is slower than mine and we would need to see if there are more places we could lazy load.

```bash
python utils/check_import_complexity.py
Import complexity OK: 595 modules (max 1000)
```
<details>
<summary>--display</summary>

```bash
python utils/check_import_complexity.py --display
└── transformers
    ├── transformers.dependency_versions_check
    │   ├── transformers.dependency_versions_table
    │   ├── transformers.utils
    │   │   ├── packaging
    │   │   ├── packaging.version
    │   │   │   └── packaging._structures
    │   │   ├── transformers.utils.auto_docstring
    │   │   │   ├── regex
    │   │   │   │   └── regex._main
    │   │   │   │       └── regex._regex_core
    │   │   │   │           ├── string
    │   │   │   │           │   └── _string
    │   │   │   │           ├── unicodedata
    │   │   │   │           └── regex._regex
    │   │   │   ├── typing_extensions
    │   │   │   │   └── _socket
    │   │   │   ├── transformers.utils.doc
    │   │   │   │   └── textwrap
    │   │   │   └── transformers.utils.generic
    │   │   │       ├── json
    │   │   │       │   ├── json.decoder
    │   │   │       │   │   └── json.scanner
    │   │   │       │   │       └── _json
    │   │   │       │   └── json.encoder
    │   │   │       ├── random
    │   │   │       │   ├── math
    │   │   │       │   ├── bisect
    │   │   │       │   │   └── _bisect
    │   │   │       │   ├── _random
    │   │   │       │   └── _sha512
    │   │   │       ├── numpy
    │   │   │       │   ├── numpy._globals
    │   │   │       │   │   └── numpy._utils
    │   │   │       │   │       └── numpy._utils._convertions
    │   │   │       │   ├── numpy._expired_attrs_2_0
    │   │   │       │   ├── numpy.version
    │   │   │       │   ├── numpy._distributor_init
    │   │   │       │   ├── numpy.__config__
    │   │   │       │   │   └── numpy._core
    │   │   │       │   │       ├── numpy._core.multiarray
    │   │   │       │   │       │   └── numpy._core.overrides
    │   │   │       │   │       │       ├── numpy._utils._inspect
    │   │   │       │   │       │       ├── numpy._core._multiarray_umath
    │   │   │       │   │       │       ├── datetime
    │   │   │       │   │       │       │   └── _datetime
    │   │   │       │   │       │       ├── numpy.exceptions
    │   │   │       │   │       │       ├── numpy._core._exceptions
    │   │   │       │   │       │       ├── numpy._core.printoptions
    │   │   │       │   │       │       │   └── contextvars
    │   │   │       │   │       │       │       └── _contextvars
    │   │   │       │   │       │       └── numpy.dtypes
    │   │   │       │   │       ├── numpy._core.umath
    │   │   │       │   │       ├── numpy._core.numerictypes
    │   │   │       │   │       │   ├── numbers
    │   │   │       │   │       │   ├── numpy._core._string_helpers
    │   │   │       │   │       │   ├── numpy._core._type_aliases
    │   │   │       │   │       │   └── numpy._core._dtype
    │   │   │       │   │       ├── numpy._core.numeric
    │   │   │       │   │       │   ├── numpy._core.shape_base
    │   │   │       │   │       │   │   └── numpy._core.fromnumeric
    │   │   │       │   │       │   │       └── numpy._core._methods
    │   │   │       │   │       │   │           └── pickle
    │   │   │       │   │       │   │               ├── struct
    │   │   │       │   │       │   │               │   └── _struct
    │   │   │       │   │       │   │               ├── _compat_pickle
    │   │   │       │   │       │   │               └── _pickle
    │   │   │       │   │       │   ├── numpy._core._ufunc_config
    │   │   │       │   │       │   ├── numpy._core.arrayprint
    │   │   │       │   │       │   └── numpy._core._asarray
    │   │   │       │   │       ├── numpy._core.records
    │   │   │       │   │       ├── numpy._core.memmap
    │   │   │       │   │       ├── numpy._core.function_base
    │   │   │       │   │       ├── numpy._core._machar
    │   │   │       │   │       ├── numpy._core.getlimits
    │   │   │       │   │       ├── numpy._core.einsumfunc
    │   │   │       │   │       ├── numpy._core._add_newdocs
    │   │   │       │   │       ├── numpy._core._add_newdocs_scalars
    │   │   │       │   │       ├── numpy._core._dtype_ctypes
    │   │   │       │   │       ├── numpy._core._internal
    │   │   │       │   │       │   └── ctypes
    │   │   │       │   │       │       ├── _ctypes
    │   │   │       │   │       │       └── ctypes._endian
    │   │   │       │   │       └── numpy._pytesttester
    │   │   │       │   ├── numpy.lib
    │   │   │       │   │   ├── numpy.lib.array_utils
    │   │   │       │   │   │   └── numpy.lib._array_utils_impl
    │   │   │       │   │   ├── numpy.lib.introspect
    │   │   │       │   │   ├── numpy.lib.mixins
    │   │   │       │   │   ├── numpy.lib.npyio
    │   │   │       │   │   │   └── numpy.lib._npyio_impl
    │   │   │       │   │   │       ├── numpy.lib.format
    │   │   │       │   │   │       │   └── numpy.lib._utils_impl
    │   │   │       │   │   │       │       └── platform
    │   │   │       │   │   │       │           └── subprocess
    │   │   │       │   │   │       │               ├── signal
    │   │   │       │   │   │       │               ├── fcntl
    │   │   │       │   │   │       │               ├── _posixsubprocess
    │   │   │       │   │   │       │               ├── select
    │   │   │       │   │   │       │               └── selectors
    │   │   │       │   │   │       ├── numpy.lib._datasource
    │   │   │       │   │   │       └── numpy.lib._iotools
    │   │   │       │   │   ├── numpy.lib.scimath
    │   │   │       │   │   │   └── numpy.lib._scimath_impl
    │   │   │       │   │   │       └── numpy.lib._type_check_impl
    │   │   │       │   │   │           └── numpy.lib._ufunclike_impl
    │   │   │       │   │   ├── numpy.lib.stride_tricks
    │   │   │       │   │   │   └── numpy.lib._stride_tricks_impl
    │   │   │       │   │   ├── numpy.lib._index_tricks_impl
    │   │   │       │   │   │   ├── numpy.matrixlib
    │   │   │       │   │   │   │   └── numpy.matrixlib.defmatrix
    │   │   │       │   │   │   │       └── numpy.linalg
    │   │   │       │   │   │   │           ├── numpy.linalg.linalg
    │   │   │       │   │   │   │           └── numpy.linalg._linalg
    │   │   │       │   │   │   │               ├── numpy.lib._twodim_base_impl
    │   │   │       │   │   │   │               ├── numpy.linalg._umath_linalg
    │   │   │       │   │   │   │               └── numpy._typing
    │   │   │       │   │   │   │                   ├── numpy._typing._nested_sequence
    │   │   │       │   │   │   │                   ├── numpy._typing._nbit_base
    │   │   │       │   │   │   │                   ├── numpy._typing._nbit
    │   │   │       │   │   │   │                   ├── numpy._typing._char_codes
    │   │   │       │   │   │   │                   ├── numpy._typing._scalars
    │   │   │       │   │   │   │                   ├── numpy._typing._shape
    │   │   │       │   │   │   │                   ├── numpy._typing._dtype_like
    │   │   │       │   │   │   │                   ├── numpy._typing._array_like
    │   │   │       │   │   │   │                   └── numpy._typing._ufunc
    │   │   │       │   │   │   └── numpy.lib._function_base_impl
    │   │   │       │   │   │       └── numpy.lib._histograms_impl
    │   │   │       │   │   ├── numpy.lib._nanfunctions_impl
    │   │   │       │   │   ├── numpy.lib._shape_base_impl
    │   │   │       │   │   ├── numpy.lib._arraysetops_impl
    │   │   │       │   │   ├── numpy.lib._polynomial_impl
    │   │   │       │   │   ├── numpy.lib._arrayterator_impl
    │   │   │       │   │   ├── numpy.lib._arraypad_impl
    │   │   │       │   │   └── numpy.lib._version
    │   │   │       │   └── numpy._array_api_info
    │   │   │       ├── transformers.utils.logging
    │   │   │       │   ├── logging
    │   │   │       │   │   ├── traceback
    │   │   │       │   │   └── atexit
    │   │   │       │   ├── huggingface_hub
    │   │   │       │   ├── huggingface_hub.utils
    │   │   │       │   │   ├── huggingface_hub.errors
    │   │   │       │   │   │   └── httpx
    │   │   │       │   │   │       ├── httpx.__version__
    │   │   │       │   │   │       ├── httpx._api
    │   │   │       │   │   │       │   └── httpx._client
    │   │   │       │   │   │       │       ├── httpx._auth
    │   │   │       │   │   │       │       │   ├── hashlib
    │   │   │       │   │   │       │       │   │   ├── _hashlib
    │   │   │       │   │   │       │       │   │   └── _blake2
    │   │   │       │   │   │       │       │   ├── base64
    │   │   │       │   │   │       │       │   │   └── binascii
    │   │   │       │   │   │       │       │   ├── urllib.request
    │   │   │       │   │   │       │       │   │   ├── email
    │   │   │       │   │   │       │       │   │   ├── http
    │   │   │       │   │   │       │       │   │   ├── http.client
    │   │   │       │   │   │       │       │   │   │   ├── email.parser
    │   │   │       │   │   │       │       │   │   │   │   └── email.feedparser
    │   │   │       │   │   │       │       │   │   │   │       ├── email.errors
    │   │   │       │   │   │       │       │   │   │   │       └── email._policybase
    │   │   │       │   │   │       │       │   │   │   │           ├── email.header
    │   │   │       │   │   │       │       │   │   │   │           │   ├── email.quoprimime
    │   │   │       │   │   │       │       │   │   │   │           │   ├── email.base64mime
    │   │   │       │   │   │       │       │   │   │   │           │   └── email.charset
    │   │   │       │   │   │       │       │   │   │   │           │       └── email.encoders
    │   │   │       │   │   │       │       │   │   │   │           │           └── quopri
    │   │   │       │   │   │       │       │   │   │   │           └── email.utils
    │   │   │       │   │   │       │       │   │   │   │               ├── socket
    │   │   │       │   │   │       │       │   │   │   │               │   └── array
    │   │   │       │   │   │       │       │   │   │   │               └── email._parseaddr
    │   │   │       │   │   │       │       │   │   │   │                   └── calendar
    │   │   │       │   │   │       │       │   │   │   ├── email.message
    │   │   │       │   │   │       │       │   │   │   │   ├── uu
    │   │   │       │   │   │       │       │   │   │   │   ├── email._encoded_words
    │   │   │       │   │   │       │       │   │   │   │   └── email.iterators
    │   │   │       │   │   │       │       │   │   │   └── ssl
    │   │   │       │   │   │       │       │   │   │       └── _ssl
    │   │   │       │   │   │       │       │   │   ├── tempfile
    │   │   │       │   │   │       │       │   │   └── urllib.error
    │   │   │       │   │   │       │       │   │       └── urllib.response
    │   │   │       │   │   │       │       │   ├── httpx._exceptions
    │   │   │       │   │   │       │       │   └── httpx._models
    │   │   │       │   │   │       │       │       ├── http.cookiejar
    │   │   │       │   │   │       │       │       ├── httpx._content
    │   │   │       │   │   │       │       │       │   └── httpx._multipart
    │   │   │       │   │   │       │       │       │       ├── mimetypes
    │   │   │       │   │   │       │       │       │       ├── httpx._types
    │   │   │       │   │   │       │       │       │       └── httpx._utils
    │   │   │       │   │   │       │       │       ├── httpx._decoders
    │   │   │       │   │   │       │       │       ├── httpx._status_codes
    │   │   │       │   │   │       │       │       └── httpx._urls
    │   │   │       │   │   │       │       │           ├── idna
    │   │   │       │   │   │       │       │           │   ├── idna.core
    │   │   │       │   │   │       │       │           │   │   ├── idna.idnadata
    │   │   │       │   │   │       │       │           │   │   └── idna.intranges
    │   │   │       │   │   │       │       │           │   └── idna.package_data
    │   │   │       │   │   │       │       │           └── httpx._urlparse
    │   │   │       │   │   │       │       ├── httpx._config
    │   │   │       │   │   │       │       └── httpx._transports
    │   │   │       │   │   │       │           ├── httpx._transports.asgi
    │   │   │       │   │   │       │           │   └── httpx._transports.base
    │   │   │       │   │   │       │           ├── httpx._transports.default
    │   │   │       │   │   │       │           ├── httpx._transports.mock
    │   │   │       │   │   │       │           └── httpx._transports.wsgi
    │   │   │       │   │   │       └── httpx._main
    │   │   │       │   │   │           ├── click
    │   │   │       │   │   │           │   ├── click.core
    │   │   │       │   │   │           │   │   ├── click.types
    │   │   │       │   │   │           │   │   │   ├── click._compat
    │   │   │       │   │   │           │   │   │   └── click.exceptions
    │   │   │       │   │   │           │   │   │       ├── click.globals
    │   │   │       │   │   │           │   │   │       └── click.utils
    │   │   │       │   │   │           │   │   ├── click._utils
    │   │   │       │   │   │           │   │   ├── click.formatting
    │   │   │       │   │   │           │   │   │   └── click.parser
    │   │   │       │   │   │           │   │   └── click.termui
    │   │   │       │   │   │           │   └── click.decorators
    │   │   │       │   │   │           ├── pygments
    │   │   │       │   │   │           ├── pygments.lexers
    │   │   │       │   │   │           │   ├── pygments.lexers._mapping
    │   │   │       │   │   │           │   ├── pygments.modeline
    │   │   │       │   │   │           │   ├── pygments.plugin
    │   │   │       │   │   │           │   │   └── importlib.metadata
    │   │   │       │   │   │           │   │       ├── csv
    │   │   │       │   │   │           │   │       │   └── _csv
    │   │   │       │   │   │           │   │       ├── zipfile
    │   │   │       │   │   │           │   │       ├── importlib.metadata._adapters
    │   │   │       │   │   │           │   │       │   └── importlib.metadata._text
    │   │   │       │   │   │           │   │       │       └── importlib.metadata._functools
    │   │   │       │   │   │           │   │       ├── importlib.metadata._meta
    │   │   │       │   │   │           │   │       ├── importlib.metadata._collections
    │   │   │       │   │   │           │   │       └── importlib.metadata._itertools
    │   │   │       │   │   │           │   └── pygments.util
    │   │   │       │   │   │           ├── rich
    │   │   │       │   │   │           │   └── rich._extension
    │   │   │       │   │   │           ├── rich.console
    │   │   │       │   │   │           │   ├── getpass
    │   │   │       │   │   │           │   │   └── termios
    │   │   │       │   │   │           │   ├── html
    │   │   │       │   │   │           │   │   └── html.entities
    │   │   │       │   │   │           │   ├── rich._null_file
    │   │   │       │   │   │           │   ├── rich.errors
    │   │   │       │   │   │           │   ├── rich.themes
    │   │   │       │   │   │           │   │   ├── rich.default_styles
    │   │   │       │   │   │           │   │   │   └── rich.style
    │   │   │       │   │   │           │   │   │       └── rich.color
    │   │   │       │   │   │           │   │   │           ├── colorsys
    │   │   │       │   │   │           │   │   │           ├── rich._palettes
    │   │   │       │   │   │           │   │   │           │   └── rich.palette
    │   │   │       │   │   │           │   │   │           │       └── rich.color_triplet
    │   │   │       │   │   │           │   │   │           ├── rich.repr
    │   │   │       │   │   │           │   │   │           └── rich.terminal_theme
    │   │   │       │   │   │           │   │   └── rich.theme
    │   │   │       │   │   │           │   │       └── configparser
    │   │   │       │   │   │           │   ├── rich._emoji_replace
    │   │   │       │   │   │           │   │   └── rich._emoji_codes
    │   │   │       │   │   │           │   ├── rich._export_format
    │   │   │       │   │   │           │   ├── rich._fileno
    │   │   │       │   │   │           │   ├── rich._log_render
    │   │   │       │   │   │           │   │   └── rich.text
    │   │   │       │   │   │           │   │       ├── rich._loop
    │   │   │       │   │   │           │   │       ├── rich._pick
    │   │   │       │   │   │           │   │       ├── rich._wrap
    │   │   │       │   │   │           │   │       │   └── rich.cells
    │   │   │       │   │   │           │   │       │       └── rich._unicode_data
    │   │   │       │   │   │           │   │       │           └── rich._unicode_data._versions
    │   │   │       │   │   │           │   │       ├── rich.align
    │   │   │       │   │   │           │   │       │   └── rich.constrain
    │   │   │       │   │   │           │   │       │       ├── rich.jupyter
    │   │   │       │   │   │           │   │       │       │   └── rich.segment
    │   │   │       │   │   │           │   │       │       └── rich.measure
    │   │   │       │   │   │           │   │       │           └── rich.protocol
    │   │   │       │   │   │           │   │       ├── rich.containers
    │   │   │       │   │   │           │   │       ├── rich.control
    │   │   │       │   │   │           │   │       └── rich.emoji
    │   │   │       │   │   │           │   ├── rich.highlighter
    │   │   │       │   │   │           │   ├── rich.markup
    │   │   │       │   │   │           │   ├── rich.pager
    │   │   │       │   │   │           │   ├── rich.pretty
    │   │   │       │   │   │           │   │   ├── attr
    │   │   │       │   │   │           │   │   │   ├── attr.converters
    │   │   │       │   │   │           │   │   │   │   ├── attr._compat
    │   │   │       │   │   │           │   │   │   │   └── attr._make
    │   │   │       │   │   │           │   │   │   │       ├── attr._config
    │   │   │       │   │   │           │   │   │   │       └── attr.setters
    │   │   │       │   │   │           │   │   │   │           └── attr.exceptions
    │   │   │       │   │   │           │   │   │   ├── attr.filters
    │   │   │       │   │   │           │   │   │   ├── attr.validators
    │   │   │       │   │   │           │   │   │   ├── attr._cmp
    │   │   │       │   │   │           │   │   │   ├── attr._funcs
    │   │   │       │   │   │           │   │   │   ├── attr._next_gen
    │   │   │       │   │   │           │   │   │   └── attr._version_info
    │   │   │       │   │   │           │   │   └── rich.abc
    │   │   │       │   │   │           │   ├── rich.region
    │   │   │       │   │   │           │   ├── rich.scope
    │   │   │       │   │   │           │   │   ├── rich.panel
    │   │   │       │   │   │           │   │   │   ├── rich.box
    │   │   │       │   │   │           │   │   │   └── rich.padding
    │   │   │       │   │   │           │   │   └── rich.table
    │   │   │       │   │   │           │   │       └── rich._ratio
    │   │   │       │   │   │           │   │           └── fractions
    │   │   │       │   │   │           │   │               └── decimal
    │   │   │       │   │   │           │   │                   └── _decimal
    │   │   │       │   │   │           │   ├── rich.screen
    │   │   │       │   │   │           │   └── rich.styled
    │   │   │       │   │   │           ├── rich.progress
    │   │   │       │   │   │           │   ├── mmap
    │   │   │       │   │   │           │   ├── rich.filesize
    │   │   │       │   │   │           │   ├── rich.live
    │   │   │       │   │   │           │   │   ├── rich.file_proxy
    │   │   │       │   │   │           │   │   │   └── rich.ansi
    │   │   │       │   │   │           │   │   └── rich.live_render
    │   │   │       │   │   │           │   ├── rich.progress_bar
    │   │   │       │   │   │           │   └── rich.spinner
    │   │   │       │   │   │           │       └── rich._spinners
    │   │   │       │   │   │           └── rich.syntax
    │   │   │       │   │   │               ├── pygments.lexer
    │   │   │       │   │   │               │   ├── pygments.filter
    │   │   │       │   │   │               │   ├── pygments.filters
    │   │   │       │   │   │               │   │   └── pygments.token
    │   │   │       │   │   │               │   └── pygments.regexopt
    │   │   │       │   │   │               ├── pygments.style
    │   │   │       │   │   │               └── pygments.styles
    │   │   │       │   │   │                   └── pygments.styles._mapping
    │   │   │       │   │   ├── huggingface_hub.utils.tqdm
    │   │   │       │   │   │   ├── tqdm
    │   │   │       │   │   │   │   ├── tqdm._monitor
    │   │   │       │   │   │   │   ├── tqdm._tqdm_pandas
    │   │   │       │   │   │   │   ├── tqdm.cli
    │   │   │       │   │   │   │   │   ├── tqdm.std
    │   │   │       │   │   │   │   │   │   └── tqdm.utils
    │   │   │       │   │   │   │   │   └── tqdm.version
    │   │   │       │   │   │   │   └── tqdm.gui
    │   │   │       │   │   │   ├── tqdm.auto
    │   │   │       │   │   │   │   ├── tqdm.autonotebook
    │   │   │       │   │   │   │   └── tqdm.asyncio
    │   │   │       │   │   │   │       └── asyncio
    │   │   │       │   │   │   │           ├── asyncio.base_events
    │   │   │       │   │   │   │           │   ├── concurrent
    │   │   │       │   │   │   │           │   ├── concurrent.futures
    │   │   │       │   │   │   │           │   │   └── concurrent.futures._base
    │   │   │       │   │   │   │           │   ├── heapq
    │   │   │       │   │   │   │           │   │   └── _heapq
    │   │   │       │   │   │   │           │   ├── asyncio.constants
    │   │   │       │   │   │   │           │   ├── asyncio.coroutines
    │   │   │       │   │   │   │           │   │   ├── asyncio.base_futures
    │   │   │       │   │   │   │           │   │   │   └── asyncio.format_helpers
    │   │   │       │   │   │   │           │   │   └── asyncio.log
    │   │   │       │   │   │   │           │   ├── asyncio.events
    │   │   │       │   │   │   │           │   │   ├── _asyncio
    │   │   │       │   │   │   │           │   │   ├── asyncio.exceptions
    │   │   │       │   │   │   │           │   │   └── asyncio.base_tasks
    │   │   │       │   │   │   │           │   ├── asyncio.futures
    │   │   │       │   │   │   │           │   ├── asyncio.protocols
    │   │   │       │   │   │   │           │   ├── asyncio.sslproto
    │   │   │       │   │   │   │           │   │   └── asyncio.transports
    │   │   │       │   │   │   │           │   ├── asyncio.staggered
    │   │   │       │   │   │   │           │   │   └── asyncio.locks
    │   │   │       │   │   │   │           │   │       ├── asyncio.mixins
    │   │   │       │   │   │   │           │   │       └── asyncio.tasks
    │   │   │       │   │   │   │           │   └── asyncio.trsock
    │   │   │       │   │   │   │           ├── asyncio.runners
    │   │   │       │   │   │   │           ├── asyncio.queues
    │   │   │       │   │   │   │           ├── asyncio.streams
    │   │   │       │   │   │   │           ├── asyncio.subprocess
    │   │   │       │   │   │   │           ├── asyncio.threads
    │   │   │       │   │   │   │           └── asyncio.unix_events
    │   │   │       │   │   │   │               ├── asyncio.base_subprocess
    │   │   │       │   │   │   │               └── asyncio.selector_events
    │   │   │       │   │   │   └── huggingface_hub.constants
    │   │   │       │   │   ├── huggingface_hub.utils._auth
    │   │   │       │   │   │   └── huggingface_hub.utils._runtime
    │   │   │       │   │   ├── huggingface_hub.utils._cache_assets
    │   │   │       │   │   ├── huggingface_hub.utils._cache_manager
    │   │   │       │   │   │   ├── huggingface_hub.utils.logging
    │   │   │       │   │   │   ├── huggingface_hub.utils._parsing
    │   │   │       │   │   │   └── huggingface_hub.utils._terminal
    │   │   │       │   │   ├── huggingface_hub.utils._chunk_utils
    │   │   │       │   │   ├── huggingface_hub.utils._datetime
    │   │   │       │   │   ├── huggingface_hub.utils._detect_agent
    │   │   │       │   │   ├── huggingface_hub.utils._experimental
    │   │   │       │   │   ├── huggingface_hub.utils._fixes
    │   │   │       │   │   │   ├── yaml
    │   │   │       │   │   │   │   ├── yaml.error
    │   │   │       │   │   │   │   ├── yaml.tokens
    │   │   │       │   │   │   │   ├── yaml.events
    │   │   │       │   │   │   │   ├── yaml.nodes
    │   │   │       │   │   │   │   ├── yaml.loader
    │   │   │       │   │   │   │   │   ├── yaml.reader
    │   │   │       │   │   │   │   │   ├── yaml.scanner
    │   │   │       │   │   │   │   │   ├── yaml.parser
    │   │   │       │   │   │   │   │   ├── yaml.composer
    │   │   │       │   │   │   │   │   ├── yaml.constructor
    │   │   │       │   │   │   │   │   └── yaml.resolver
    │   │   │       │   │   │   │   ├── yaml.dumper
    │   │   │       │   │   │   │   │   ├── yaml.emitter
    │   │   │       │   │   │   │   │   ├── yaml.serializer
    │   │   │       │   │   │   │   │   └── yaml.representer
    │   │   │       │   │   │   │   └── yaml.cyaml
    │   │   │       │   │   │   │       └── yaml._yaml
    │   │   │       │   │   │   └── filelock
    │   │   │       │   │   │       ├── filelock._api
    │   │   │       │   │   │       │   └── filelock._error
    │   │   │       │   │   │       ├── filelock._async_read_write
    │   │   │       │   │   │       │   └── filelock._read_write
    │   │   │       │   │   │       │       └── sqlite3
    │   │   │       │   │   │       │           └── sqlite3.dbapi2
    │   │   │       │   │   │       │               └── _sqlite3
    │   │   │       │   │   │       ├── filelock._soft
    │   │   │       │   │   │       │   └── filelock._util
    │   │   │       │   │   │       ├── filelock._unix
    │   │   │       │   │   │       ├── filelock._windows
    │   │   │       │   │   │       ├── filelock.asyncio
    │   │   │       │   │   │       └── filelock.version
    │   │   │       │   │   ├── huggingface_hub.utils._git_credential
    │   │   │       │   │   │   └── huggingface_hub.utils._subprocess
    │   │   │       │   │   ├── huggingface_hub.utils._headers
    │   │   │       │   │   │   └── huggingface_hub.utils._validators
    │   │   │       │   │   │       └── huggingface_hub.utils._typing
    │   │   │       │   │   ├── huggingface_hub.utils._http
    │   │   │       │   │   │   ├── uuid
    │   │   │       │   │   │   │   └── _uuid
    │   │   │       │   │   │   ├── shlex
    │   │   │       │   │   │   └── huggingface_hub.utils._lfs
    │   │   │       │   │   ├── huggingface_hub.utils._pagination
    │   │   │       │   │   ├── huggingface_hub.utils._paths
    │   │   │       │   │   ├── huggingface_hub.utils._safetensors
    │   │   │       │   │   ├── huggingface_hub.utils._telemetry
    │   │   │       │   │   │   └── queue
    │   │   │       │   │   │       └── _queue
    │   │   │       │   │   └── huggingface_hub.utils._xet
    │   │   │       │   └── transformers._typing
    │   │   │       ├── transformers.utils.import_utils
    │   │   │       └── torch
    │   │   ├── transformers.utils.chat_template_utils
    │   │   │   ├── jinja2
    │   │   │   ├── jinja2.bccache
    │   │   │   ├── jinja2.environment
    │   │   │   │   ├── markupsafe
    │   │   │   │   │   └── markupsafe._speedups
    │   │   │   │   ├── jinja2.nodes
    │   │   │   │   │   └── jinja2.utils
    │   │   │   │   ├── jinja2.compiler
    │   │   │   │   │   ├── jinja2.exceptions
    │   │   │   │   │   ├── jinja2.idtracking
    │   │   │   │   │   │   └── jinja2.visitor
    │   │   │   │   │   └── jinja2.optimizer
    │   │   │   │   ├── jinja2.defaults
    │   │   │   │   │   ├── jinja2.filters
    │   │   │   │   │   │   ├── jinja2.async_utils
    │   │   │   │   │   │   └── jinja2.runtime
    │   │   │   │   │   └── jinja2.tests
    │   │   │   │   ├── jinja2.lexer
    │   │   │   │   │   └── jinja2._identifier
    │   │   │   │   └── jinja2.parser
    │   │   │   ├── jinja2.loaders
    │   │   │   ├── jinja2.ext
    │   │   │   │   └── pprint
    │   │   │   ├── jinja2.meta
    │   │   │   ├── jinja2.sandbox
    │   │   │   ├── PIL
    │   │   │   │   └── PIL._version
    │   │   │   └── PIL.Image
    │   │   │       ├── PIL.ExifTags
    │   │   │       ├── PIL.ImageMode
    │   │   │       ├── PIL.TiffTags
    │   │   │       ├── PIL._binary
    │   │   │       ├── PIL._deprecate
    │   │   │       ├── PIL._util
    │   │   │       └── PIL._imaging
    │   │   ├── transformers.utils.constants
    │   │   ├── transformers.utils.hub
    │   │   │   ├── huggingface_hub.file_download
    │   │   │   │   ├── huggingface_hub._local_folder
    │   │   │   │   └── huggingface_hub.utils.sha
    │   │   │   │       └── huggingface_hub.utils.insecure_hashlib
    │   │   │   ├── huggingface_hub.hf_api
    │   │   │   │   ├── concurrent.futures.thread
    │   │   │   │   ├── httpcore
    │   │   │   │   │   ├── httpcore._api
    │   │   │   │   │   │   ├── httpcore._models
    │   │   │   │   │   │   └── httpcore._sync
    │   │   │   │   │   │       ├── httpcore._sync.connection
    │   │   │   │   │   │       │   ├── httpcore._backends
    │   │   │   │   │   │       │   ├── httpcore._backends.sync
    │   │   │   │   │   │       │   │   ├── httpcore._exceptions
    │   │   │   │   │   │       │   │   ├── httpcore._utils
    │   │   │   │   │   │       │   │   └── httpcore._backends.base
    │   │   │   │   │   │       │   ├── httpcore._ssl
    │   │   │   │   │   │       │   │   └── certifi
    │   │   │   │   │   │       │   │       └── certifi.core
    │   │   │   │   │   │       │   │           └── importlib.resources
    │   │   │   │   │   │       │   │               └── importlib._common
    │   │   │   │   │   │       │   │                   └── importlib._adapters
    │   │   │   │   │   │       │   ├── httpcore._synchronization
    │   │   │   │   │   │       │   │   └── anyio
    │   │   │   │   │   │       │   │       ├── anyio._core
    │   │   │   │   │   │       │   │       ├── anyio._core._contextmanagers
    │   │   │   │   │   │       │   │       ├── anyio._core._eventloop
    │   │   │   │   │   │       │   │       │   ├── anyio._core._exceptions
    │   │   │   │   │   │       │   │       │   │   └── exceptiongroup
    │   │   │   │   │   │       │   │       │   │       ├── exceptiongroup._catch
    │   │   │   │   │   │       │   │       │   │       │   └── exceptiongroup._exceptions
    │   │   │   │   │   │       │   │       │   │       ├── exceptiongroup._version
    │   │   │   │   │   │       │   │       │   │       ├── exceptiongroup._formatting
    │   │   │   │   │   │       │   │       │   │       └── exceptiongroup._suppress
    │   │   │   │   │   │       │   │       │   └── sniffio
    │   │   │   │   │   │       │   │       │       ├── sniffio._version
    │   │   │   │   │   │       │   │       │       └── sniffio._impl
    │   │   │   │   │   │       │   │       ├── anyio._core._fileio
    │   │   │   │   │   │       │   │       │   └── anyio.to_thread
    │   │   │   │   │   │       │   │       │       └── anyio.abc
    │   │   │   │   │   │       │   │       │           ├── anyio.abc._eventloop
    │   │   │   │   │   │       │   │       │           ├── anyio.abc._resources
    │   │   │   │   │   │       │   │       │           ├── anyio.abc._sockets
    │   │   │   │   │   │       │   │       │           │   ├── anyio._core._typedattr
    │   │   │   │   │   │       │   │       │           │   └── anyio.abc._streams
    │   │   │   │   │   │       │   │       │           │       └── anyio.abc._tasks
    │   │   │   │   │   │       │   │       │           ├── anyio.abc._subprocesses
    │   │   │   │   │   │       │   │       │           ├── anyio.abc._testing
    │   │   │   │   │   │       │   │       │           ├── anyio._core._synchronization
    │   │   │   │   │   │       │   │       │           │   ├── anyio.lowlevel
    │   │   │   │   │   │       │   │       │           │   ├── anyio._core._tasks
    │   │   │   │   │   │       │   │       │           │   └── anyio._core._testing
    │   │   │   │   │   │       │   │       │           └── anyio.from_thread
    │   │   │   │   │   │       │   │       ├── anyio._core._resources
    │   │   │   │   │   │       │   │       ├── anyio._core._signals
    │   │   │   │   │   │       │   │       ├── anyio._core._sockets
    │   │   │   │   │   │       │   │       │   ├── anyio.streams
    │   │   │   │   │   │       │   │       │   ├── anyio.streams.stapled
    │   │   │   │   │   │       │   │       │   └── anyio.streams.tls
    │   │   │   │   │   │       │   │       ├── anyio._core._streams
    │   │   │   │   │   │       │   │       │   └── anyio.streams.memory
    │   │   │   │   │   │       │   │       ├── anyio._core._subprocesses
    │   │   │   │   │   │       │   │       └── anyio._core._tempfile
    │   │   │   │   │   │       │   ├── httpcore._trace
    │   │   │   │   │   │       │   └── httpcore._sync.http11
    │   │   │   │   │   │       │       ├── h11
    │   │   │   │   │   │       │       │   ├── h11._connection
    │   │   │   │   │   │       │       │   │   ├── h11._events
    │   │   │   │   │   │       │       │   │   │   ├── h11._abnf
    │   │   │   │   │   │       │       │   │   │   └── h11._headers
    │   │   │   │   │   │       │       │   │   │       └── h11._util
    │   │   │   │   │   │       │       │   │   ├── h11._readers
    │   │   │   │   │   │       │       │   │   │   ├── h11._receivebuffer
    │   │   │   │   │   │       │       │   │   │   └── h11._state
    │   │   │   │   │   │       │       │   │   └── h11._writers
    │   │   │   │   │   │       │       │   └── h11._version
    │   │   │   │   │   │       │       └── httpcore._sync.interfaces
    │   │   │   │   │   │       ├── httpcore._sync.connection_pool
    │   │   │   │   │   │       ├── httpcore._sync.http_proxy
    │   │   │   │   │   │       ├── httpcore._sync.http2
    │   │   │   │   │   │       └── httpcore._sync.socks_proxy
    │   │   │   │   │   ├── httpcore._async
    │   │   │   │   │   │   ├── httpcore._async.connection
    │   │   │   │   │   │   │   ├── httpcore._backends.auto
    │   │   │   │   │   │   │   └── httpcore._async.http11
    │   │   │   │   │   │   │       └── httpcore._async.interfaces
    │   │   │   │   │   │   ├── httpcore._async.connection_pool
    │   │   │   │   │   │   ├── httpcore._async.http_proxy
    │   │   │   │   │   │   ├── httpcore._async.http2
    │   │   │   │   │   │   └── httpcore._async.socks_proxy
    │   │   │   │   │   ├── httpcore._backends.mock
    │   │   │   │   │   ├── httpcore._backends.anyio
    │   │   │   │   │   └── httpcore._backends.trio
    │   │   │   │   ├── tqdm.contrib
    │   │   │   │   ├── tqdm.contrib.concurrent
    │   │   │   │   ├── huggingface_hub._buckets
    │   │   │   │   ├── huggingface_hub._commit_api
    │   │   │   │   │   └── huggingface_hub.lfs
    │   │   │   │   ├── huggingface_hub._dataset_viewer
    │   │   │   │   ├── huggingface_hub._eval_results
    │   │   │   │   ├── huggingface_hub._inference_endpoints
    │   │   │   │   ├── huggingface_hub._jobs_api
    │   │   │   │   │   └── huggingface_hub._space_api
    │   │   │   │   ├── huggingface_hub._upload_large_folder
    │   │   │   │   ├── huggingface_hub.community
    │   │   │   │   ├── huggingface_hub.repocard_data
    │   │   │   │   ├── huggingface_hub.utils._deprecation
    │   │   │   │   ├── huggingface_hub.utils._verification
    │   │   │   │   └── huggingface_hub.utils.endpoint_helpers
    │   │   │   ├── huggingface_hub.repocard
    │   │   │   └── huggingface_hub._snapshot_download
    │   │   ├── transformers.utils.kernel_config
    │   │   └── transformers.utils.peft_utils
    │   ├── transformers.utils.versions
    │   ├── tokenizers
    │   └── accelerate
    ├── sentencepiece
    ├── mistral_common
    ├── torchvision
    ├── scipy
    ├── torchaudio
    └── timm

Total modules imported: 595
```
</details>

Thanks a lot! you have the "fastest" version as well at this point. I will see if we can cut more of it

This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md) are likely to be ignored.

I hope this issue does not get closed.

This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md) are likely to be ignored.

I guess this issue is not going to be addressed...

Hi @albertvillanova , I understand the frustration.

To clarify where we are: this was not ignored. We already fixed the main lazy-loading regression and added an import-complexity check so we do not silently regress again. On current `main`, the import tree is around ~595 modules, which is in the expected range for the current implementation.

There may still be smaller optimizations possible, but each additional layer of lazy loading comes with a cost: more indirection, more fragile import paths, more edge cases, and more maintenance burden. At some point this becomes a tradeoff between import latency and code complexity/reliability.

Also, for downstream CLIs, the best optimization may be to avoid importing `transformers` at CLI startup altogether. If the CLI only needs `transformers` for a specific command or code path, it can lazy-import `transformers` only when that functionality is actually used. Once that path is used, we still have to import the relevant parts of `transformers`, so there is only so much we can avoid at the library level without making the internals significantly more complex.

So I do not think we should keep adding more lazy-loading machinery without concrete profiling data showing a specific expensive import path that is both avoidable and worth the added complexity.

@albertvillanova we have tried in different environments to replicate this issue but we have not managed to. Could you try on a different setup (VM, cluster, any other machine) that we can easily replicate so that we may reproduce it on our side?

Unless this is possible, this is likely unfortunately an issue with your local setup.

This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md) are likely to be ignored.