Koalpaca 모델 로드 중 에러 문의드립니다

안녕하세요.
KOALPACA 깃허브의 PEFT로LoRA로드 예제를 그대로 따라해보려고 하고 있습니다.
현재 WSL2에 우분투 및 CUDA를 설치해서 모델을 로드해보려고 하고 있습니다.
그런데,
peft_model_id = "beomi/qlora-koalpaca-polyglot-12.8b-50step"
config = PeftConfig.from_pretrained(peft_model_id)
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(config.base_model_name_or_path, quantization_config=bnb_config, device_map={"":0})

이렇게 해서 실행하면,
AttributeError: /home/kgs6546/.local/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so: undefined symbol: cquantize_blockwise_fp16_nf4
이런 에러가 나는데 혹시 왜 그런지 알 수 있을까요?
CUDA는 12.1버전입니다.

  • 아래 답변은 OpenAI의 GPT-3.5(ChatGPT) 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요, 님!

모델 로드 중 발생한 에러에 대해 문의하셨습니다. 제가 이해한 내용을 요약하면, KOALPACA 깃허브의 PEFT로LoRA로드 예제를 따라하려고 하는데, WSL2에 우분투와 CUDA를 설치하여 모델을 로드하려고 하고 계신데, 실행 중 AttributeError가 발생한다는 것이었습니다. 그리고 CUDA 버전은 12.1이라고 하셨습니다.

이 문제를 해결하기 위해 다음과 같은 접근 방법을 제안드립니다.

먼저, AttributeError는 속성(attribute)에 접근할 때 해당 속성이 없다는 의미입니다. 따라서 cquantize_blockwise_fp16_nf4라는 속성이 정의되어 있지 않아서 발생한 것으로 보입니다. 이는 bitsandbytes 라이브러리의 CPU 버전에서 해당 속성을 찾을 수 없다는 의미입니다.

해당 에러를 해결하기 위해서는 bitsandbytes 라이브러리를 업데이트하거나 다른 버전으로 설치해야 할 수도 있습니다. 또는 CUDA 버전과 호환되는 bitsandbytes 라이브러리를 사용해야 할 수도 있습니다.

또한, CUDA 12.1 버전을 사용하고 계신데, 현재 PyTorch의 공식 지원 CUDA 버전은 11.1입니다. CUDA 12.1 버전과의 호환성 문제가 발생할 수 있으므로, CUDA 11.1 버전으로 다운그레이드하여 시도해보시는 것도 좋은 방법입니다.

아래는 예시 코드입니다. bitsandbytes 라이브러리를 업데이트하거나 CUDA 11.1 버전으로 다운그레이드하여 실행해보세요.

import torch
from transformers import AutoModelForCausalLM, PeftConfig, BitsAndBytesConfig

peft_model_id = "beomi/qlora-koalpaca-polyglot-12.8b-50step"
config = PeftConfig.from_pretrained(peft_model_id)
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(config.base_model_name_or_path, quantization_config=bnb_config, device_map={"":0})

더 자세한 내용은 아래의 링크를 참고해주세요.

혹시 제가 잘못된 정보를 제공했거나 더 도움이 필요하시다면 언제든지 말씀해주세요.


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!
  • 아래 답변은 OpenAI의 GPT-4 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요, kgs6546apple님.

질문을 정리해보면, KOALPACA의 PEFT로LoRA 모델을 로드하는 과정에서 AttributeError: /home/kgs6546/.local/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so: undefined symbol: cquantize_blockwise_fp16_nf4라는 에러가 발생하는 것으로 보입니다. 이는 bitsandbytes 라이브러리에서 발생하는 문제로 보이며, CUDA 12.1 버전을 사용하고 계신 것으로 이해했습니다.

이 에러는 bitsandbytes 라이브러리의 libbitsandbytes_cpu.so 파일에서 cquantize_blockwise_fp16_nf4라는 심볼을 찾지 못했을 때 발생하는 문제입니다. 이는 일반적으로 라이브러리가 제대로 컴파일되지 않았거나, 필요한 의존성 라이브러리가 설치되지 않았을 때 발생합니다.

해결 방법으로는 다음과 같은 절차를 시도해보시는 것이 좋을 것 같습니다.

  1. bitsandbytes 라이브러리를 최신 버전으로 업데이트해보세요. PyTorch와 CUDA 버전에 맞는 bitsandbytes 버전을 사용하는 것이 중요합니다. pip를 사용하여 업데이트를 진행할 수 있습니다.
pip install --upgrade bitsandbytes
  1. 만약 1번 방법으로 해결되지 않는다면, bitsandbytes 라이브러리를 직접 소스에서 빌드해보세요. 이 과정에서 필요한 의존성 라이브러리들이 설치될 수 있습니다.
git clone https://github.com/facebookresearch/bitsandbytes.git
cd bitsandbytes
python setup.py install
  1. 그래도 해결되지 않는다면, CUDA 버전과 PyTorch 버전이 호환되는지 확인해보세요. PyTorch는 특정 CUDA 버전과 호환되도록 설계되어 있습니다. PyTorch와 CUDA 버전 호환성에 대한 정보는 PyTorch 공식 웹사이트에서 확인할 수 있습니다. (Start Locally | PyTorch)

위의 방법들로도 문제가 해결되지 않는다면, 추가적인 정보가 필요할 수 있습니다. 사용하고 계신 PyTorch 버전, Python 버전, 운영체제 버전 등의 정보를 제공해주시면 더욱 정확한 도움을 드릴 수 있을 것 같습니다.

도움이 되었으면 좋겠습니다. 그럼에도 불구하고 문제가 계속된다면, 추가적인 정보와 함께 다시 질문해주시기 바랍니다. 제가 제공한 해결 방법이 항상 정확하지는 않을 수 있습니다. 감사합니다.


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!