@@ -98,20 +98,14 @@ def load_pretrained(
9898 :return: The embeddings, tokenizer, config, metadata, weights and mapping.
9999
100100 """
101- # Logic: by setting cached_folder, we no longer have a valid hub identifier.
102- # So, in _get_paths, we always hit a local folder, and never pull from the hub.
103- # If force_download is False, we never set the cached_folder.
104- if not force_download :
105- cached_folder = maybe_get_cached_model_path (str (folder_or_repo_path ))
106- if cached_folder :
107- logger .info (f"Found cached model at { cached_folder } , loading from cache." )
108- folder_or_repo_path = cached_folder
109- else :
110- logger .info (f"No cached model found for { folder_or_repo_path } , loading from hub." )
111-
112101 folder_or_repo_path = Path (folder_or_repo_path )
113102
114- selected_layout = _get_paths (folder_or_repo_path , subfolder , token )
103+ # We resolve a folder or repo path to an actual local folder.
104+ folder = _resolve_folder (
105+ folder_or_repo_path = folder_or_repo_path , token = token , force_download = force_download , subfolder = subfolder
106+ )
107+
108+ selected_layout = _get_paths (folder )
115109 readme_path = folder_or_repo_path / "README.md"
116110
117111 opened_tensor_file = cast (SafeOpenProtocol , safetensors .safe_open (selected_layout .embeddings , framework = "numpy" ))
@@ -139,19 +133,23 @@ def load_pretrained(
139133 return embeddings , tokenizer , config , metadata , weights , mapping
140134
141135
142- def _resolve_folder (folder_or_repo_path : Path , subfolder : str | None , token : str | None ) -> Path :
136+ def _resolve_folder (folder_or_repo_path : Path , subfolder : str | None , token : str | None , force_download : bool ) -> Path :
143137 """Resolve a folder locally or from hugging face hub."""
144- local_candidate = folder_or_repo_path / subfolder if subfolder else folder_or_repo_path
145- if local_candidate .exists ():
146- folder = local_candidate
147- else :
148- folder = Path (huggingface_hub .snapshot_download (str (folder_or_repo_path ), repo_type = "model" , token = token ))
149- return folder / subfolder if subfolder else folder
138+ if folder_or_repo_path .exists ():
139+ return folder_or_repo_path
140+ # We now know we're dealing with either an invalid path, or
141+ # a HF model ID.
142+ if not force_download :
143+ if folder := maybe_get_cached_model_path (str (folder_or_repo_path )):
144+ return folder
145+
146+ folder = Path (huggingface_hub .snapshot_download (str (folder_or_repo_path ), repo_type = "model" , token = token ))
150147
148+ return folder
151149
152- def _get_paths (folder_or_repo_path : Path , subfolder : str | None , token : str | None ) -> Layout :
153- folder = _resolve_folder (folder_or_repo_path , subfolder , token )
154150
151+ def _get_paths (folder : Path ) -> Layout :
152+ """Get all paths by trying out multiple layouts."""
155153 for layout in FOLDER_LAYOUTS :
156154 layout = layout .with_parent (folder )
157155 if layout .is_valid ():
0 commit comments