big_modeling.py не находит offload_dir
Я пытаюсь загрузить большую модель на свой локальный компьютер и пытаюсь переложить часть вычислений на свой процессор, поскольку мой графический процессор не очень хорош (Macbook Air M2). Вот мой код:
from peft import PeftModel
from transformers import AutoTokenizer, GPTJForCausalLM, GenerationConfig
from transformers import BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(llm_int8_enable_fp32_cpu_offload=True)
tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-j-6B")
tokenizer.pad_token = tokenizer.eos_token
tokenizer.pad_token_id = tokenizer.eos_token_id
offload_folder="/Users/matthewberman/Desktop/offload"
model = GPTJForCausalLM.from_pretrained(
"EleutherAI/gpt-j-6B",
device_map="auto",
offload_folder=offload_folder,
quantization_config=quantization_config
)
model = PeftModel.from_pretrained(model, "samwit/dolly-lora", offload_dir=offload_folder)
Однако я получаю эту ошибку:
ValueError: We need an `offload_dir` to dispatch this model according to this `device_map`, the following submodules need to be offloaded: base_model.model.transformer.h.10, base_model.model.transformer.h.11, base_model.model.transformer.h.12, base_model.model.transformer.h.13, base_model.model.transformer.h.14, base_model.model.transformer.h.15, base_model.model.transformer.h.16, base_model.model.transformer.h.17, base_model.model.transformer.h.18, base_model.model.transformer.h.19, base_model.model.transformer.h.20, base_model.model.transformer.h.21, base_model.model.transformer.h.22, base_model.model.transformer.h.23, base_model.model.transformer.h.24, base_model.model.transformer.h.25, base_model.model.transformer.h.26, base_model.model.transformer.h.27, base_model.model.transformer.ln_f, base_model.model.lm_head.
Я определенно указываю на действительный каталог выгрузки, поскольку предыдущий метод успешно использует offload_folder(я вижу, что туда помещаются вещи).
Что я делаю не так?
1 ответ
Попробуйте добавить «offload_folder='./'» в аргумент peftModel.from_pretrained(...).