Я пытаюсь следить за этой статьей на Medium Статья.
У меня были некоторые проблемы с этим, поэтому оставшиеся изменения я внес в объект TrainingArguments, который я добавил gradient_checkpointing_kwargs = {'use_reentrant':False},.
Итак, теперь у меня есть следующие объекты:
peft_training_args = TrainingArguments(
output_dir = output_dir,
warmup_steps=1,
per_device_train_batch_size=1,
gradient_accumulation_steps=4,
max_steps=100, #1000
learning_rate=2e-4,
optim = "paged_adamw_8bit",
logging_steps=25,
logging_dir = "./logs",
save_strategy = "steps",
save_steps=25,
evaluation_strategy = "steps",
eval_steps=25,
do_eval=True,
gradient_checkpointing=True,
gradient_checkpointing_kwargs = {'use_reentrant':False},
report_to = "none",
overwrite_output_dir = 'True',
group_by_length=True,
)
peft_model.config.use_cache = False
peft_trainer = transformers.Trainer(
model=peft_model,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
args=peft_training_args,
data_collator=transformers.DataCollatorForLanguageModeling(tokenizer, mlm=False),
)
И когда я звоню peft_trainer.train(), я получаю следующую ошибку:
AttributeError: 'torch.dtype' object has no attribute 'itemsize'
Я использую Databricks, и моя версия Pytorch 2.0.1+cu118






Если вы используете последнюю версию трансформаторов (v4.39.1), попробуйте перейти на версию 4.38.2. Я решил это таким образом.
pip uninstall -y transformers pip install git+https://github.com/huggingface/transformers huggingface.co/DiscoResearch/mixtral-7b-8expert/discussions/9 возможно, та же проблема.
Это приведет к установке последней версии, что приведет к исходной проблеме и противоположности вашего ответа, лол.
Похоже, что атрибут itemsize не имеет документации в PyTorch 2.0.x, что позволяет предположить, что он не существует в этой версии. (Попробуйте выполнить поиск «itemsize» в документации для версии 2.0 и версии 2.2 самостоятельно.) Вероятная причина этого в том, что один из пакетов, которые вы используете, предполагает версию Pytorch более высокую, чем та, которую вы используете. с использованием.
Более того, если вы посмотрите на блокнот автора статьи Medium для этого руководства здесь, вы увидите, что появляются ошибки установки pip, что указывает на то, что их код не может быть запущен.
Лучшее решение, которое я могу предложить (учитывая, что автор среды, похоже, не предоставил список версий требований) — это создать среду conda, которая попытается разрешить за вас различные зависимости пакетов, или обратиться к автору за помощью. точный файл требований, чтобы вы могли воспроизвести их работу. Если они не могут сделать это за вас, не доверяйте их результатам.
Обновление до torch-2.1.2 устранит эту ошибку.
Сделано, теперь у меня появляется следующая ошибка: TypeError: Accelerator.__init__() got an unexpected keyword argument 'gradient_accumulation_kwargs'
Экосистема немного шаткая, пытаться
pip install git+https://github.com/huggingface/transformers --upgrade
pip install git+https://github.com/huggingface/peft --upgrade
Мне удалось воссоздать вашу проблему на Databricks со следующим кластером:
И затем, основываясь на всех ответах здесь, я смог решить вашу проблему следующим образом:
!pip install -–upgrade git+https://github.com/huggingface/transformers!pip install -–upgrade torch torchvision!pip install -–upgrade accelerate!pip install datasets==2.16.0Я не уверен, имеет ли это значение, но я использовал приведенные выше команды в следующем порядке:
4 >> 1 >> 3 >> 2
Это устраняет вашу проблему и работает как с transformers.Trainer, так и с SFTTrainer, который я видел в вашей статье, импортированный, но никогда не используемый.
Если я это сделаю, я получу ошибку:
ModuleNotFoundError: No module named 'transformers.cache_utils', когда использую следующий код:original_model = AutoModelForCausalLM.from_pretrained(model_name, device_map=device_map, quantization_config=bnb_config, trust_remote_code=True, use_auth_token=True )