TypeError:empty_like(): аргумент «вход» (позиция 1) должен быть Tensor, а не NoneTypePython

Программы на Python
Ответить
Anonymous
 TypeError:empty_like(): аргумент «вход» (позиция 1) должен быть Tensor, а не NoneType

Сообщение Anonymous »

Я пытаюсь настроить модель «unsloth/Llama-3.2-11B-Vision-Instruct», используя DPOTrainer от trl. Мой набор данных — trl-lib/rlaif-v, и я проверил, что его формат соответствует требованиям для обучения DPO. Однако когда я запускаю код на Kaggle, во время обучения я сталкиваюсь со следующей ошибкой:

Код: Выделить всё

Copy code
TypeError: empty_like(): argument 'input' (position 1) must be Tensor, not NoneType
Код
Вот соответствующий фрагмент кода:

Код: Выделить всё

model, tokenizer = FastVisionModel.from_pretrained(
"unsloth/Llama-3.2-11B-Vision-Instruct",
load_in_4bit = True, # Use 4bit to reduce memory use. False for 16bit LoRA.
use_gradient_checkpointing = "unsloth", # True or "unsloth" for long context
)
model = FastVisionModel.get_peft_model(
model,
finetune_vision_layers     = True, # False if not finetuning vision layers
finetune_language_layers   = True, # False if not finetuning language layers
finetune_attention_modules = True, # False if not finetuning attention layers
finetune_mlp_modules       = True, # False if not finetuning MLP layers
r = 16,           # The larger, the higher the accuracy, but might overfit
lora_alpha = 16,  # Recommended alpha == r at least
lora_dropout = 0,
bias = "none",
random_state = 3407,
use_rslora = False,  # We support rank stabilized LoRA
loftq_config = None, # And LoftQ
)
from datasets import load_dataset
dataset = load_dataset("trl-lib/rlaif-v", split="train[:1%]")
from trl import DPOConfig, DPOTrainer
training_args = DPOConfig(
output_dir="output",
fp16=True,
gradient_checkpointing=True,
per_device_train_batch_size=2,
gradient_accumulation_steps=32,
num_train_epochs=1,
dataset_num_proc=4, # tokenization will use 32 processes
dataloader_num_workers=4, # data loading will use 32 workers
logging_steps=1,
)
trainer = DPOTrainer(
model,
args=training_args,
train_dataset=dataset,
tokenizer=tokenizer,
)

trainer.train()
Сведения об ошибке
Ошибка возникает на этом этапе обратной трассировки:

Код: Выделить всё

TypeError                                 Traceback (most recent call last)
Cell In[11], line 20
2 training_args = DPOConfig(
3         output_dir="output",
4         fp16=True,
(...)
11         logging_steps=1,
12     )
13 trainer = DPOTrainer(
14         model,
15         args=training_args,
16         train_dataset=dataset,
17         tokenizer=tokenizer,
18     )
---> 20 trainer.train()
...
File /opt/conda/lib/python3.10/site-packages/unsloth_zoo/loss_utils.py:74, in patch_loss_functions..UnslothForCausalLMLoss(logits, labels, vocab_size, num_items_in_batch, ignore_index, **kwargs)
70 def UnslothForCausalLMLoss(
71     logits, labels, vocab_size: int, num_items_in_batch: int = None, ignore_index: int = -100, **kwargs
72 ):
73     shift_logits = logits
---> 74     shift_labels = torch.empty_like(labels)
75     shift_labels[..., :-1] = labels[..., 1:]
76     shift_labels[..., -1] = ignore_index

TypeError: empty_like(): argument 'input' (position 1) must be Tensor, not NoneType
Но я думаю, что формат набора данных dpo правильный.
Как это решить?
Что я пробовал
/>Проверено, что формат набора данных подходит для обучения DPO.
Пытался использовать другие наборы данных, но ошибка не устранена.
Проверено, что набор данных имеет допустимые поля ввода (логиты, метки и т. д.).

Подробнее здесь: https://stackoverflow.com/questions/792 ... -not-nonet
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»