deps: lazy import optional dependencies gguf and torchvision (#4826)

This commit is contained in:
Juwan Yoo
2025-03-27 14:35:36 -07:00
committed by GitHub
parent b39532587b
commit 188105a21b
3 changed files with 25 additions and 3 deletions

View File

@@ -4,7 +4,6 @@ from dataclasses import dataclass
from typing import Dict, List, Optional, Tuple from typing import Dict, List, Optional, Tuple
import torch import torch
import torchvision.transforms as T
from PIL import Image, ImageOps from PIL import Image, ImageOps
from transformers import ( from transformers import (
AutoProcessor, AutoProcessor,
@@ -76,6 +75,16 @@ class ImageTransform(object):
self.std = std self.std = std
self.normalize = normalize self.normalize = normalize
# only load torchvision.transforms when needed
try:
import torchvision.transforms as T
# FIXME: add version check for gguf
except ImportError as err:
raise ImportError(
"Please install torchvision via `pip install torchvision` to use Deepseek-VL2."
) from err
transform_pipelines = [T.ToTensor()] transform_pipelines = [T.ToTensor()]
if normalize: if normalize:

View File

@@ -14,7 +14,6 @@ from abc import ABC, abstractmethod
from contextlib import contextmanager from contextlib import contextmanager
from typing import Any, Dict, Generator, Iterable, List, Optional, Tuple, cast from typing import Any, Dict, Generator, Iterable, List, Optional, Tuple, cast
import gguf
import huggingface_hub import huggingface_hub
import numpy as np import numpy as np
import torch import torch
@@ -1155,6 +1154,17 @@ class GGUFModelLoader(BaseModelLoader):
See "Standardized tensor names" in See "Standardized tensor names" in
https://github.com/ggerganov/ggml/blob/master/docs/gguf.md for details. https://github.com/ggerganov/ggml/blob/master/docs/gguf.md for details.
""" """
# only load the gguf module when needed
try:
import gguf
# FIXME: add version check for gguf
except ImportError as err:
raise ImportError(
"Please install gguf via `pip install gguf` to use gguf quantizer."
) from err
config = model_config.hf_config config = model_config.hf_config
model_type = config.model_type model_type = config.model_type
# hack: ggufs have a different name than transformers # hack: ggufs have a different name than transformers

View File

@@ -22,7 +22,6 @@ from typing import (
) )
import filelock import filelock
import gguf
import huggingface_hub.constants import huggingface_hub.constants
import numpy as np import numpy as np
import safetensors.torch import safetensors.torch
@@ -464,6 +463,8 @@ def pt_weights_iterator(
def get_gguf_extra_tensor_names( def get_gguf_extra_tensor_names(
gguf_file: str, gguf_to_hf_name_map: Dict[str, str] gguf_file: str, gguf_to_hf_name_map: Dict[str, str]
) -> List[str]: ) -> List[str]:
import gguf
reader = gguf.GGUFReader(gguf_file) reader = gguf.GGUFReader(gguf_file)
expected_gguf_keys = set(gguf_to_hf_name_map.keys()) expected_gguf_keys = set(gguf_to_hf_name_map.keys())
exact_gguf_keys = set([tensor.name for tensor in reader.tensors]) exact_gguf_keys = set([tensor.name for tensor in reader.tensors])
@@ -479,6 +480,8 @@ def gguf_quant_weights_iterator(
them to torch tensors them to torch tensors
""" """
import gguf
reader = gguf.GGUFReader(gguf_file) reader = gguf.GGUFReader(gguf_file)
for tensor in reader.tensors: for tensor in reader.tensors: