Skip to content

Impossible to load WanTransformer3DModel when offline using the 'from_pretrained' function. #11948

@guillaumejs2403

Description

@guillaumejs2403

Describe the bug

Hi!
I am using the Wan2.1-1.3B-Diffusers transformer for a project. When I load the transformer (but not the complete pipeline), I receive a ConnectionError, even when I pass the local_files_only=True input. However, when I load the complete pipeline, I do not receive an error. Please note that the server I use does not have internet access and, even, when I use the HF_HUB_OFFLINE=1 environment variable, I receive an error message about offline mode.

Reproduction

import torch
from diffusers import WanTransformer3DModel
transformer = WanTransformer3DModel.from_pretrained("Wan-AI/Wan2.1-T2V-1.3B-Diffusers", subfolder="transformer", torch_dtype=torch.bfloat16, local_files_only=True)

Logs

Error log without HF_HUB_OFFLINE=1

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
File ~/.conda/envs/video/lib/python3.11/site-packages/urllib3/connection.py:198, in HTTPConnection._new_conn(self)
    197 try:
--> 198     sock = connection.create_connection(
    199         (self._dns_host, self.port),
    200         self.timeout,
    201         source_address=self.source_address,
    202         socket_options=self.socket_options,
    203     )
    204 except socket.gaierror as e:

File ~/.conda/envs/video/lib/python3.11/site-packages/urllib3/util/connection.py:85, in create_connection(address, timeout, source_address, socket_options)
     84 try:
---> 85     raise err
     86 finally:
     87     # Break explicitly a reference cycle

File ~/.conda/envs/video/lib/python3.11/site-packages/urllib3/util/connection.py:73, in create_connection(address, timeout, source_address, socket_options)
     72     sock.bind(source_address)
---> 73 sock.connect(sa)
     74 # Break explicitly a reference cycle

OSError: [Errno 101] Network is unreachable

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

NewConnectionError                        Traceback (most recent call last)
File ~/.conda/envs/video/lib/python3.11/site-packages/urllib3/connectionpool.py:787, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)
    786 # Make the request on the HTTPConnection object
--> 787 response = self._make_request(
    788     conn,
    789     method,
    790     url,
    791     timeout=timeout_obj,
    792     body=body,
    793     headers=headers,
    794     chunked=chunked,
    795     retries=retries,
    796     response_conn=response_conn,
    797     preload_content=preload_content,
    798     decode_content=decode_content,
    799     **response_kw,
    800 )
    802 # Everything went great!

File ~/.conda/envs/video/lib/python3.11/site-packages/urllib3/connectionpool.py:488, in HTTPConnectionPool._make_request(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)
    487         new_e = _wrap_proxy_error(new_e, conn.proxy.scheme)
--> 488     raise new_e
    490 # conn.request() calls http.client.*.request, not the method in
    491 # urllib3.request. It also calls makefile (recv) on the socket.

File ~/.conda/envs/video/lib/python3.11/site-packages/urllib3/connectionpool.py:464, in HTTPConnectionPool._make_request(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)
    463 try:
--> 464     self._validate_conn(conn)
    465 except (SocketTimeout, BaseSSLError) as e:

File ~/.conda/envs/video/lib/python3.11/site-packages/urllib3/connectionpool.py:1093, in HTTPSConnectionPool._validate_conn(self, conn)
   1092 if conn.is_closed:
-> 1093     conn.connect()
   1095 # TODO revise this, see https://github.com/urllib3/urllib3/issues/2791

File ~/.conda/envs/video/lib/python3.11/site-packages/urllib3/connection.py:753, in HTTPSConnection.connect(self)
    752 sock: socket.socket | ssl.SSLSocket
--> 753 self.sock = sock = self._new_conn()
    754 server_hostname: str = self.host

File ~/.conda/envs/video/lib/python3.11/site-packages/urllib3/connection.py:213, in HTTPConnection._new_conn(self)
    212 except OSError as e:
--> 213     raise NewConnectionError(
    214         self, f"Failed to establish a new connection: {e}"
    215     ) from e
    217 sys.audit("http.client.connect", self, self.host, self.port)

NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x14832727e950>: Failed to establish a new connection: [Errno 101] Network is unreachable

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

MaxRetryError                             Traceback (most recent call last)
File ~/.conda/envs/video/lib/python3.11/site-packages/requests/adapters.py:667, in HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies)
    666 try:
--> 667     resp = conn.urlopen(
    668         method=request.method,
    669         url=url,
    670         body=request.body,
    671         headers=request.headers,
    672         redirect=False,
    673         assert_same_host=False,
    674         preload_content=False,
    675         decode_content=False,
    676         retries=self.max_retries,
    677         timeout=timeout,
    678         chunked=chunked,
    679     )
    681 except (ProtocolError, OSError) as err:

File ~/.conda/envs/video/lib/python3.11/site-packages/urllib3/connectionpool.py:841, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)
    839     new_e = ProtocolError("Connection aborted.", new_e)
--> 841 retries = retries.increment(
    842     method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]
    843 )
    844 retries.sleep()

File ~/.conda/envs/video/lib/python3.11/site-packages/urllib3/util/retry.py:519, in Retry.increment(self, method, url, response, error, _pool, _stacktrace)
    518     reason = error or ResponseError(cause)
--> 519     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
    521 log.debug("Incremented Retry for (url='%s'): %r", url, new_retry)

MaxRetryError: HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /api/models/Wan-AI/Wan2.1-T2V-1.3B-Diffusers (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x14832727e950>: Failed to establish a new connection: [Errno 101] Network is unreachable'))

During handling of the above exception, another exception occurred:

ConnectionError                           Traceback (most recent call last)
Cell In[3], line 1
----> 1 transformer = WanTransformer3DModel.from_pretrained("Wan-AI/Wan2.1-T2V-1.3B-Diffusers", subfolder="transformer", torch_dtype=torch.bfloat16, local_files_only=True)

File ~/.conda/envs/video/lib/python3.11/site-packages/huggingface_hub/utils/_validators.py:114, in validate_hf_hub_args.<locals>._inner_fn(*args, **kwargs)
    111 if check_use_auth_token:
    112     kwargs = smoothly_deprecate_use_auth_token(fn_name=fn.__name__, has_token=has_token, kwargs=kwargs)
--> 114 return fn(*args, **kwargs)

File ~/.conda/envs/video/lib/python3.11/site-packages/diffusers/models/modeling_utils.py:1109, in ModelMixin.from_pretrained(cls, pretrained_model_name_or_path, **kwargs)
   1106 else:
   1107     # in the case it is sharded, we have already the index
   1108     if is_sharded:
-> 1109         resolved_model_file, sharded_metadata = _get_checkpoint_shard_files(
   1110             pretrained_model_name_or_path,
   1111             index_file,
   1112             cache_dir=cache_dir,
   1113             proxies=proxies,
   1114             local_files_only=local_files_only,
   1115             token=token,
   1116             user_agent=user_agent,
   1117             revision=revision,
   1118             subfolder=subfolder or "",
   1119             dduf_entries=dduf_entries,
   1120         )
   1121     elif use_safetensors:
   1122         try:

File ~/.conda/envs/video/lib/python3.11/site-packages/diffusers/utils/hub_utils.py:407, in _get_checkpoint_shard_files(pretrained_model_name_or_path, index_filename, cache_dir, proxies, local_files_only, token, user_agent, revision, subfolder, dduf_entries)
    405 ignore_patterns = ["*.json", "*.md"]
    406 # `model_info` call must guarded with the above condition.
--> 407 model_files_info = model_info(pretrained_model_name_or_path, revision=revision, token=token)
    408 for shard_file in original_shard_filenames:
    409     shard_file_present = any(shard_file in k.rfilename for k in model_files_info.siblings)

File ~/.conda/envs/video/lib/python3.11/site-packages/huggingface_hub/utils/_validators.py:114, in validate_hf_hub_args.<locals>._inner_fn(*args, **kwargs)
    111 if check_use_auth_token:
    112     kwargs = smoothly_deprecate_use_auth_token(fn_name=fn.__name__, has_token=has_token, kwargs=kwargs)
--> 114 return fn(*args, **kwargs)

File ~/.conda/envs/video/lib/python3.11/site-packages/huggingface_hub/hf_api.py:2628, in HfApi.model_info(self, repo_id, revision, timeout, securityStatus, files_metadata, expand, token)
   2626 if expand:
   2627     params["expand"] = expand
-> 2628 r = get_session().get(path, headers=headers, timeout=timeout, params=params)
   2629 hf_raise_for_status(r)
   2630 data = r.json()

File ~/.conda/envs/video/lib/python3.11/site-packages/requests/sessions.py:602, in Session.get(self, url, **kwargs)
    594 r"""Sends a GET request. Returns :class:`Response` object.
    595 
    596 :param url: URL for the new :class:`Request` object.
    597 :param \*\*kwargs: Optional arguments that ``request`` takes.
    598 :rtype: requests.Response
    599 """
    601 kwargs.setdefault("allow_redirects", True)
--> 602 return self.request("GET", url, **kwargs)

File ~/.conda/envs/video/lib/python3.11/site-packages/requests/sessions.py:589, in Session.request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    584 send_kwargs = {
    585     "timeout": timeout,
    586     "allow_redirects": allow_redirects,
    587 }
    588 send_kwargs.update(settings)
--> 589 resp = self.send(prep, **send_kwargs)
    591 return resp

File ~/.conda/envs/video/lib/python3.11/site-packages/requests/sessions.py:703, in Session.send(self, request, **kwargs)
    700 start = preferred_clock()
    702 # Send the request
--> 703 r = adapter.send(request, **kwargs)
    705 # Total elapsed time of the request (approximately)
    706 elapsed = preferred_clock() - start

File ~/.conda/envs/video/lib/python3.11/site-packages/huggingface_hub/utils/_http.py:96, in UniqueRequestIdAdapter.send(self, request, *args, **kwargs)
     94     logger.debug(f"Send: {_curlify(request)}")
     95 try:
---> 96     return super().send(request, *args, **kwargs)
     97 except requests.RequestException as e:
     98     request_id = request.headers.get(X_AMZN_TRACE_ID)

File ~/.conda/envs/video/lib/python3.11/site-packages/requests/adapters.py:700, in HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies)
    696     if isinstance(e.reason, _SSLError):
    697         # This branch is for urllib3 v1.22 and later.
    698         raise SSLError(e, request=request)
--> 700     raise ConnectionError(e, request=request)
    702 except ClosedPoolError as e:
    703     raise ConnectionError(e, request=request)

ConnectionError: (MaxRetryError("HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /api/models/Wan-AI/Wan2.1-T2V-1.3B-Diffusers (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x14832727e950>: Failed to establish a new connection: [Errno 101] Network is unreachable'))"), '(Request ID: d6755ad3-a0a5-4e2c-b147-d8903ad9ef3f)')

ERROR LOG WITH HF_HUB_OFFLINE=1

---------------------------------------------------------------------------
OfflineModeIsEnabled                      Traceback (most recent call last)
Cell In[3], line 1
----> 1 transformer = WanTransformer3DModel.from_pretrained("Wan-AI/Wan2.1-T2V-1.3B-Diffusers", subfolder="transformer", torch_dtype=torch.bfloat16, local_files_only=True)

File ~/.conda/envs/video/lib/python3.11/site-packages/huggingface_hub/utils/_validators.py:114, in validate_hf_hub_args.<locals>._inner_fn(*args, **kwargs)
    111 if check_use_auth_token:
    112     kwargs = smoothly_deprecate_use_auth_token(fn_name=fn.__name__, has_token=has_token, kwargs=kwargs)
--> 114 return fn(*args, **kwargs)

File ~/.conda/envs/video/lib/python3.11/site-packages/diffusers/models/modeling_utils.py:1109, in ModelMixin.from_pretrained(cls, pretrained_model_name_or_path, **kwargs)
   1106 else:
   1107     # in the case it is sharded, we have already the index
   1108     if is_sharded:
-> 1109         resolved_model_file, sharded_metadata = _get_checkpoint_shard_files(
   1110             pretrained_model_name_or_path,
   1111             index_file,
   1112             cache_dir=cache_dir,
   1113             proxies=proxies,
   1114             local_files_only=local_files_only,
   1115             token=token,
   1116             user_agent=user_agent,
   1117             revision=revision,
   1118             subfolder=subfolder or "",
   1119             dduf_entries=dduf_entries,
   1120         )
   1121     elif use_safetensors:
   1122         try:

File ~/.conda/envs/video/lib/python3.11/site-packages/diffusers/utils/hub_utils.py:407, in _get_checkpoint_shard_files(pretrained_model_name_or_path, index_filename, cache_dir, proxies, local_files_only, token, user_agent, revision, subfolder, dduf_entries)
    405 ignore_patterns = ["*.json", "*.md"]
    406 # `model_info` call must guarded with the above condition.
--> 407 model_files_info = model_info(pretrained_model_name_or_path, revision=revision, token=token)
    408 for shard_file in original_shard_filenames:
    409     shard_file_present = any(shard_file in k.rfilename for k in model_files_info.siblings)

File ~/.conda/envs/video/lib/python3.11/site-packages/huggingface_hub/utils/_validators.py:114, in validate_hf_hub_args.<locals>._inner_fn(*args, **kwargs)
    111 if check_use_auth_token:
    112     kwargs = smoothly_deprecate_use_auth_token(fn_name=fn.__name__, has_token=has_token, kwargs=kwargs)
--> 114 return fn(*args, **kwargs)

File ~/.conda/envs/video/lib/python3.11/site-packages/huggingface_hub/hf_api.py:2628, in HfApi.model_info(self, repo_id, revision, timeout, securityStatus, files_metadata, expand, token)
   2626 if expand:
   2627     params["expand"] = expand
-> 2628 r = get_session().get(path, headers=headers, timeout=timeout, params=params)
   2629 hf_raise_for_status(r)
   2630 data = r.json()

File ~/.conda/envs/video/lib/python3.11/site-packages/requests/sessions.py:602, in Session.get(self, url, **kwargs)
    594 r"""Sends a GET request. Returns :class:`Response` object.
    595 
    596 :param url: URL for the new :class:`Request` object.
    597 :param \*\*kwargs: Optional arguments that ``request`` takes.
    598 :rtype: requests.Response
    599 """
    601 kwargs.setdefault("allow_redirects", True)
--> 602 return self.request("GET", url, **kwargs)

File ~/.conda/envs/video/lib/python3.11/site-packages/requests/sessions.py:589, in Session.request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    584 send_kwargs = {
    585     "timeout": timeout,
    586     "allow_redirects": allow_redirects,
    587 }
    588 send_kwargs.update(settings)
--> 589 resp = self.send(prep, **send_kwargs)
    591 return resp

File ~/.conda/envs/video/lib/python3.11/site-packages/requests/sessions.py:703, in Session.send(self, request, **kwargs)
    700 start = preferred_clock()
    702 # Send the request
--> 703 r = adapter.send(request, **kwargs)
    705 # Total elapsed time of the request (approximately)
    706 elapsed = preferred_clock() - start

File ~/.conda/envs/video/lib/python3.11/site-packages/huggingface_hub/utils/_http.py:107, in OfflineAdapter.send(self, request, *args, **kwargs)
    106 def send(self, request: PreparedRequest, *args, **kwargs) -> Response:
--> 107     raise OfflineModeIsEnabled(
    108         f"Cannot reach {request.url}: offline mode is enabled. To disable it, please unset the `HF_HUB_OFFLINE` environment variable."
    109     )

OfflineModeIsEnabled: Cannot reach https://huggingface.co/api/models/Wan-AI/Wan2.1-T2V-1.3B-Diffusers: offline mode is enabled. To disable it, please unset the `HF_HUB_OFFLINE` environment variable.

System Info

  • python=3.11
  • diffusers=0.34
  • pytorch=2.7.1+cu128

Who can help?

@a-r-r-o-w

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions