PyTorch: AttributeError: объект «torch.dtype» не имеет атрибута «itemsize»

Я пытаюсь следить за этой статьей на 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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
2 290
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Если вы используете последнюю версию трансформаторов (v4.39.1), попробуйте перейти на версию 4.38.2. Я решил это таким образом.

Если я это сделаю, я получу ошибку: 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 )

Lidor Eliyahu Shelef 24.03.2024 09:27
pip uninstall -y transformers pip install git+https://github.com/huggingface/transformers huggingface.co/DiscoResearch/mixtral-7b-8expert/discussions/‌​9 возможно, та же проблема.
tommmmmmm 24.03.2024 13:27

Это приведет к установке последней версии, что приведет к исходной проблеме и противоположности вашего ответа, лол.

Lidor Eliyahu Shelef 24.03.2024 18:43

Похоже, что атрибут 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'

Lidor Eliyahu Shelef 30.03.2024 14:05

Экосистема немного шаткая, пытаться

pip install git+https://github.com/huggingface/transformers --upgrade
pip install git+https://github.com/huggingface/peft --upgrade
Ответ принят как подходящий

Мне удалось воссоздать вашу проблему на Databricks со следующим кластером:

  • Среда выполнения: 14,1 мл (включая Apache Spark 3.5.0, графический процессор, Scala 2.12)
  • Тип работника: Standard_NC16as_T4_v3 / Standard_NC6s_vs
  • Тип драйвера: Standard_NC16as_T4_v3 / Standard_NC6s_vs

И затем, основываясь на всех ответах здесь, я смог решить вашу проблему следующим образом:

  1. Обновите свою библиотеку трансформеров с помощью: !pip install -–upgrade git+https://github.com/huggingface/transformers
  2. Обновите версию фонарика через: !pip install -–upgrade torch torchvision
  3. Обновите ускоренную версию через: !pip install -–upgrade accelerate
  4. Использование определенной версии библиотеки наборов данных через: !pip install datasets==2.16.0

Я не уверен, имеет ли это значение, но я использовал приведенные выше команды в следующем порядке: 4 >> 1 >> 3 >> 2

Это устраняет вашу проблему и работает как с transformers.Trainer, так и с SFTTrainer, который я видел в вашей статье, импортированный, но никогда не используемый.

Другие вопросы по теме

Как преобразовать предварительно обученную модель обнимающегося лица в .pt и запустить ее полностью локально?
Как настроить параметры вывода для создания изображений с помощью конвейера Stable Diffusion XL?
Как создать нейронную сеть с несколькими выходами (и несколькими классами) с помощью pytorch?
Промежуточные результаты в прямом методе моей нейронной сети факела имеют require_grad=False
Seq2Seq LSTM не обучается должным образом
ToTensor() не может преобразовать изображение в тензор и встретить ошибку TypeError?
Ошибка формы умножения матрицы PyTorch: «Ошибка выполнения: формы mat1 и mat2 не могут быть умножены»
Ошибка сегментации PyTorch (сброс ядра) при перемещении тензора Pytorch на графический процессор
Неожиданные распечатки мешают работе индикатора выполнения tqdm при обучении PyTorch
Есть ли способ использовать модель PyTorch в нескольких процессах без использования нескольких копий?