Как обучать лору?
Я перепробовал разные варианты в oobabooga, с monkey patch и без, модель загружается только через AutoGPTQ, но при обучении лоры происходит ошибка: ValueError: Target modules [‘q_proj’, ‘v_proj’] not found in the base model. Please check the target modules and try again.
. При этом, лоры на LLaMA обучать получалось, но тут модель другой архитектуры, GPT-2 (хотя модель и называется GPT-3.5), что, видимо, и вызывает ошибку. Информацию по обучению именно лоры тоже найти не удалось, есть полный файнтюнинг, но тоже для старых GPT-3 (или 2, мутно у них с этим как-то). Или есть отдельные скрипты для этого?
Для старта можно взять:
https://github.com/qwopqwop200/gptqlora
Но он немножко кривой и нужно использовать PEFT версии 0.4.0, в свежей поломали для GPT2
pip install peft==0.4.0
Возможно PEFT 0.4.0 и для ooaboga подойдёт
Спасибо! Получилось запустить обучение через oobabooga на вашей модели zlsl/l_erotic_kink_chat, загрузив её через Transformers, проблема проявлялась на fffrrt/ruGPT-3.5-13B-GPTQ — видимо, там как-то иначе квантизовано (она загружается только через AutoGPTQ). Попробую ещё iashchak/ruGPT-3.5-13B-gptq-4bits.
А какую вы базовую модель использовали для обучения? Пробую разные, везде какие-то нюансы. Хотелось бы 4-битную ruGPT-3.5, которую можно загрузить для обучения лоры, gptqlora не может загрузить ничего, не находит некие файлы (где-то конфиг квантизации, а где-то вообще без уточнений). У меня 3090 Ti с 24 Гб, так что только квантизованные могут использовать, больше ничего не влезет.
Обучаю на 4-bit GPTQ, нужно токенизер подкинуть, если его там нет, также base_model нужно указать, либо симлинк сделать pytorch_model.bin
Модель ruGPT-3.5-13B-GPTQ
А можно полную команду для запуска? Вот у меня есть скачанная fffrrt_ruGPT-3.5-13B-GPTQ
, делаю python gptqlora.py --model_path fffrrt_ruGPT-3.5-13B-GPTQ
, результат:
Traceback (most recent call last):
File "/mnt/2Tb/gptqlora/gptqlora.py", line 792, in <module>
train()
File "/mnt/2Tb/gptqlora/gptqlora.py", line 601, in train
model = get_accelerate_model(args, checkpoint_dir)
File "/mnt/2Tb/gptqlora/gptqlora.py", line 282, in get_accelerate_model
model = AutoGPTQForCausalLM.from_quantized(
File "/mnt/2Tb/textgen/lib/python3.10/site-packages/auto_gptq/modeling/auto.py", line 108, in from_quantized
return quant_func(
File "/mnt/2Tb/textgen/lib/python3.10/site-packages/auto_gptq/modeling/_base.py", line 791, in from_quantized
raise FileNotFoundError(f"Could not find model in {model_name_or_path}")
FileNotFoundError: Could not find model in fffrrt_ruGPT-3.5-13B-GPTQ
Пробую другую модель: python gptqlora.py --model_path iashchak_ruGPT-3.5-13B-gptq-4bits
(там не хватало quantize_config.json
, скопировал из предыдущей), результат идентичный тому, что выше. Не пойму, что именно ему надо.
Так, какой-то прогресс есть с iashchak_ruGPT-3.5-13B-gptq-4bits
— в quantize_config.json
прописал "model_file_base_name": "pytorch_model"
, с fffrrt_ruGPT-3.5-13B-GPTQ
решается добавлением use_safetensors=True,
в параметры AutoGPTQForCausalLM.from_quantized
(в этом случае не надо менять quantize_config.json
), но при этом перестаёт работать первая модель — видимо, надо это делать параметром командной строки, автор поленился...
Загрузил модифицированный _gptqlora.py
В src - исходная модель
В src_lora можно положить LoRA для продолжения тренировки
python _gptqlora.py
--cache_dir .cache
--logging_dir $RUN_NAME
--model_path src
--dataset dataset
--output_dir "$LORA_NAME"
--overwrite_output_dir True
--do_train
--num_train_epochs 3
--report_to tensorboard
--save_total_limit 8
--per_device_train_batch_size "$BATCH_SIZE"
--num_train_epochs 1
--log_level detail
--logging_strategy steps
--logging_first_step
--logging_steps 2
--save_steps "$SAVE_STEPS"
--save_safetensors
--gradient_checkpointing True
--gradient_accumulation_steps "$GAS"
--lora_r "$RANK"
--lora_alpha "$ALPHA"
--lora_dropout "$DROPOUT"
--learning_rate "$LR"
--adam8bit
--max_steps "$MAX_STEPS" \
для обучения - dataset.json с полями input, output
Большое спасибо! Попробую.
--adam8bit
если памяти много можно убрать