Removed prod for Python <= 3.7 compatibility.

This commit is contained in:
Tim Dettmers 2022-08-08 05:20:36 -07:00
parent 26efb154c8
commit 62441815bc
2 changed files with 9 additions and 7 deletions

View File

@ -1,10 +1,14 @@
from dataclasses import dataclass import operator
import torch import torch
import math
import bitsandbytes as bnb import bitsandbytes as bnb
import bitsandbytes.functional as F import bitsandbytes.functional as F
from dataclasses import dataclass
from functools import reduce # Required in Python 3
def prod(iterable):
return reduce(operator.mul, iterable, 1)
tensor = torch.Tensor tensor = torch.Tensor
""" """
@ -12,8 +16,6 @@ tensor = torch.Tensor
This is particularly important for small models where outlier features This is particularly important for small models where outlier features
are less systematic and occur with low frequency. are less systematic and occur with low frequency.
""" """
class GlobalOutlierPooler(object): class GlobalOutlierPooler(object):
_instance = None _instance = None
@ -201,7 +203,7 @@ class MatMul8bitLt(torch.autograd.Function):
def forward(ctx, A, B, out=None, state=MatmulLtState()): def forward(ctx, A, B, out=None, state=MatmulLtState()):
# default to pytorch behavior if inputs are empty # default to pytorch behavior if inputs are empty
ctx.is_empty = False ctx.is_empty = False
if math.prod(A.shape) == 0: if prod(A.shape) == 0:
ctx.is_empty = True ctx.is_empty = True
ctx.A = A ctx.A = A
ctx.B = B ctx.B = B

View File

@ -18,7 +18,7 @@ def read(fname):
setup( setup(
name=f"bitsandbytes", name=f"bitsandbytes",
version=f"0.31.4", version=f"0.31.5",
author="Tim Dettmers", author="Tim Dettmers",
author_email="dettmers@cs.washington.edu", author_email="dettmers@cs.washington.edu",
description="8-bit optimizers and matrix multiplication routines.", description="8-bit optimizers and matrix multiplication routines.",