Install latest BitsandBytes

#44
by codegood - opened

I cannot use the model with transformers==4.33.3, but when I upgrade transformers to the latest version I get the below error. I don't get this error when using the previous version.

ImportError: Using load_in_8bit=True requires Accelerate: pip install accelerate and the latest version of bitsandbytes pip install -i https://test.pypi.org/simple/ bitsandbytes or pip install bitsandbytes`

My code:

model =AutoModelForCausalLM.from_pretrained( # Initiating the model
model_id,
device_map="auto",
offload_folder = "/content/drive/MyDrive/Mistral7B",
trust_remote_code=True,
quantization_config=bnb_config,
torch_dtype="auto",
use_flash_attention_2 = True,
# revision = "4a426d8015bef5a0cb3acff8d4474ee9ab4071d5"

)

@codegood Have you found a fix? I have been struggling with the same error on Azure ML Studio. Thanks

No, not yet. Looking to get some update from the developers.

in your bnb_config remove load_in_8bit=true. or whatever bit you are trying to use.

@omidai then the model will be too big to load. That's the power of BnB.

correct, in my case, I just started with a fresh environment and installed all packages again then It was resolved. It seems there is a hidden package dependency.

@omida I've attempted this a few times using the latest packages, but it still doesn't seem to work for me. Could you please share the packages versions you're using?

Mistral AI_ org

hi everyone,
To benefit from quantization load_in_8bit or load_in_4bit , please make sure to install the latest bitsandbytes package:

pip install -U bitsandbytes

I would also advise to use load_in_4bit for a more memory efficient inference. Let us know how that goes

I've attempted today again to install the latest package versions (accelerate==0.23.0 and bitsandbytes==0.41.1), but it still doesn't seem to be working, neither in 4-bit nor in 8-bit.

Hi @Ayoba
I see OK - can you share a full reproducible snippet here?

Hi @ybelkada , I'm also facing the same issue. Please help with the fix :

Steps to recreate:

!pip install -U bitsandbytes
!pip install -U git+https://github.com/huggingface/transformers.git
!pip install -U git+https://github.com/huggingface/peft.git
!pip install -U git+https://github.com/huggingface/accelerate.git
!pip install -U datasets scipy ipywidgets matplotlib
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

base_model_id = "mistralai/Mistral-7B-v0.1"
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)

model = AutoModelForCausalLM.from_pretrained(base_model_id, quantization_config=bnb_config)

ERROR :
```bash

ImportError Traceback (most recent call last)
Cell In[1], line 12
4 base_model_id = "mistralai/Mistral-7B-v0.1"
5 bnb_config = BitsAndBytesConfig(
6 load_in_4bit=True,
7 bnb_4bit_use_double_quant=True,
8 bnb_4bit_quant_type="nf4",
9 bnb_4bit_compute_dtype=torch.bfloat16
10 )
---> 12 model = AutoModelForCausalLM.from_pretrained(base_model_id, quantization_config=bnb_config)

File ~/transformers/src/transformers/models/auto/auto_factory.py:565, in _BaseAutoModelClass.from_pretrained(cls, pretrained_model_name_or_path, *model_args, **kwargs)
563 elif type(config) in cls._model_mapping.keys():
564 model_class = _get_model_class(config, cls._model_mapping)
--> 565 return model_class.from_pretrained(
566 pretrained_model_name_or_path, *model_args, config=config, **hub_kwargs, **kwargs
567 )
568 raise ValueError(
569 f"Unrecognized configuration class {config.class} for this kind of AutoModel: {cls.name}.\n"
570 f"Model type should be one of {', '.join(c.name for c in cls._model_mapping.keys())}."
571 )

File ~/transformers/src/transformers/modeling_utils.py:2634, in PreTrainedModel.from_pretrained(cls, pretrained_model_name_or_path, config, cache_dir, ignore_mismatched_sizes, force_download, local_files_only, token, revision, use_safetensors, *model_args, **kwargs)
2632 if load_in_8bit or load_in_4bit:
2633 if not (is_accelerate_available() and is_bitsandbytes_available()):
-> 2634 raise ImportError(
2635 "Using load_in_8bit=True requires Accelerate: pip install accelerate and the latest version of"
2636 " bitsandbytes pip install -i https://test.pypi.org/simple/ bitsandbytes or"
2637 " pip install bitsandbytes" 2638 ) 2640 if torch_dtype is None: 2641 # We force thedtypeto be float16, this is a requirement frombitsandbytes 2642 logger.info( 2643 f"Overriding torch_dtype={torch_dtype} withtorch_dtype=torch.float16due to " 2644 "requirements ofbitsandbytes` to enable model loading in 8-bit or 4-bit. "
2645 "Pass your own torch_dtype to specify the dtype of the remaining non-linear layers or pass"
2646 " torch_dtype=torch.float16 to remove this warning."
2647 )

ImportError: Using load_in_8bit=True requires Accelerate: pip install accelerate and the latest version of bitsandbytes pip install -i https://test.pypi.org/simple/ bitsandbytes or pip install bitsandbytes`
```

Hi @sukkritsharma

I just ran :

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

base_model_id = "mistralai/Mistral-7B-v0.1"
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)

model = AutoModelForCausalLM.from_pretrained(base_model_id, quantization_config=bnb_config)
tokenizer = AutoTokenizer.from_pretrained(base_model_id)

text = "Hello my name is"
input_ids = tokenizer.encode(text, return_tensors="pt").to(0)

output = model.generate(input_ids, do_sample=False, max_length=10)
print(tokenizer.decode(output[0], skip_special_tokens=True))

On a fresh new environment and it seemed to work fine on my end. Can you re-try everything on a fresh new environment?

On Windows, I had the same problem. If you try:

torch.cuda.is_available()

it would show as False because the cuda version it needs was different from the cuda version that pytorch uses.

Hence, I found this solution from here: https://github.com/TimDettmers/bitsandbytes/issues/793#issuecomment-1806979077

Instead of installing bitsandbytes from the latest pip package, install it using the following command:

python.exe -m pip install https://github.com/TimDettmers/bitsandbytes/releases/download/0.41.0/bitsandbytes-0.41.0-py3-none-any.whl

Hope this helps

Sign up or log in to comment