Merge pull request #670 from akemimadoka/fix-win

Fix RuntimeError on Windows caused by integer overflow in np.prod
This commit is contained in:
Atream 2025-02-27 17:40:27 +08:00 committed by GitHub
commit 0422152cf3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -27,6 +27,7 @@ import torch
import KTransformersOps import KTransformersOps
from .custom_loader import SafeTensorLoader from .custom_loader import SafeTensorLoader
import ctypes import ctypes
import math
class GGMLQuantizationType(IntEnum): class GGMLQuantizationType(IntEnum):
F32 = 0 F32 = 0
@ -230,7 +231,7 @@ class GGUFLoader:
shape = [read_value(f, DATA_TYPES["uint64"]) for _ in range(shape_len)] shape = [read_value(f, DATA_TYPES["uint64"]) for _ in range(shape_len)]
ggml_type = read_value(f, DATA_TYPES["uint32"]) ggml_type = read_value(f, DATA_TYPES["uint32"])
bad_offset = read_value(f, DATA_TYPES["uint64"]) bad_offset = read_value(f, DATA_TYPES["uint64"])
n_elems = int(np.prod(shape)) n_elems = int(math.prod(shape))
block_size, type_size = GGML_QUANT_SIZES[ggml_type] block_size, type_size = GGML_QUANT_SIZES[ggml_type]
n_bytes = n_elems * type_size // block_size n_bytes = n_elems * type_size // block_size
np_dims = tuple(reversed(shape)) np_dims = tuple(reversed(shape))