Source code for oumi.utils.model_caching

# Copyright 2025 - Oumi
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from pathlib import Path

from huggingface_hub import hf_hub_download

from oumi.utils.logging import logger

HUGGINGFACE_CACHE = ".cache/huggingface"


[docs] def get_local_filepath_for_gguf( repo_id: str, filename: str, cache_dir=HUGGINGFACE_CACHE ) -> str: """Return a local path for the provided GGUF file, downloading it if necessary. Args: repo_id: HuggingFace Hub repo ID (e.g., `bartowski/Llama-3.2-3B-Instruct-GGUF`) filename: HuggingFace Hub filename (e.g., `Llama-3.2-3B-Instruct-Q8_0.gguf`) cache_dir: Local path to cached models. Defaults to `HUGGINGFACE_CACHE`. Returns: A local path caching the GGUF file. """ # Ensure that the filename corresponds to a `GGUF` file. if Path(filename).suffix != ".gguf": raise ValueError(f"The `filename` provided is not a `.gguf` file: `{filename}`") # Ensure the cache directory exists. If not, create it. cache_dir = Path(cache_dir) cache_dir.mkdir(parents=True, exist_ok=True) gguf_local_file_path = cache_dir / filename # Check if the file is already cached; if not, download it. if gguf_local_file_path.exists(): logger.info(f"Loading GGUF file from cache ({str(gguf_local_file_path)}).") return gguf_local_file_path.absolute().as_posix() else: logger.info(f"Downloading GGUF file `{filename}` from HuggingFace.") try: gguf_local_file_path = Path( hf_hub_download( repo_id=repo_id, filename=filename, local_dir=cache_dir.as_posix() ) ) except Exception: logger.exception( f"Failed to download the GGUF file `{filename}` from HuggingFace " f"Hub's repo id `{repo_id}`." ) return gguf_local_file_path.absolute().as_posix()