Не удалось сгенерировать ответ после точной настройки Bloomz-560M с помощью LoRA.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Не удалось сгенерировать ответ после точной настройки Bloomz-560M с помощью LoRA.

Сообщение Anonymous »

У меня возникли проблемы при создании диалога после точной настройки Bloomz-560m с помощью LoRA.
Во время обучения кажется, что все в порядке, но при генерации выдается сообщение «IndexError: индекс кортежа вне диапазона». ответы. Кроме того, модель больше не могла работать, какие бы входные данные я ни предоставлял.
Вот мой код:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, Trainer, TrainingArguments
from peft import LoraConfig, get_peft_model, TaskType
from torch.utils.data import Dataset
from transformers import Trainer, TrainingArguments

MODEL_NAME = "bigscience/bloomz-560m"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(MODEL_NAME)
lora_config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
inference_mode=False,
r=8,
lora_alpha=16,
lora_dropout=0.1
)

model = get_peft_model(model, lora_config)
class CustomDataset(Dataset):
def __init__(self, input_texts):
self.input_texts = input_texts

def __len__(self):
return len(self.input_texts)

def __getitem__(self, idx):
input_text = self.input_texts[idx]
# Tokenization
encoding = tokenizer(input_text, return_tensors="pt", padding=True, truncation=True)
# Include labels
encoding["labels"] = encoding["input_ids"]
return {key: val.squeeze() for key, val in encoding.items()}

input_texts = [
"Convesation 1:\nQ: 請問什麼是性騷擾?\nA: 性騷擾是指任何不受歡迎的性相關行為...",
"Convesation 2:\nQ: 如何避免性行為帶來的風險?\nA: 為了避免性行為帶來的健康風險...",
"Convesation 3:\nQ: 為什麼性教育對青少年很重要?\nA: 性教育對青少年來說很重要..."
]
dataset = CustomDataset(input_texts)
training_args = TrainingArguments(
output_dir="./lora_bloomz_finetuned",
per_device_train_batch_size=1,
num_train_epochs=3,
learning_rate=2e-5,
logging_steps=10,
save_steps=50,
save_total_limit=2,
report_to="none"
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset
)

trainer.train()
test_prompt = "Q: 什麼是避孕套的作用?\nA:"
inputs = tokenizer(test_prompt, return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_length=100)
print(tokenizer.decode(output[0], skip_special_tokens=True))

Сообщение об ошибке:
IndexError Traceback (most recent call last)
Cell In[10], line 3
1 test_prompt = "Q: 什麼是避孕套的作用?\nA:"
2 inputs = tokenizer(test_prompt, return_tensors="pt").to(model.device)
----> 3 output = model.generate(**inputs, max_length=100)
4 print(tokenizer.decode(output[0], skip_special_tokens=True))

File ~/Desktop/sex-edu-chatbot/.venv/lib/python3.10/site-packages/peft/peft_model.py:1704, in PeftModelForCausalLM.generate(self, *args, **kwargs)
1702 with self._enable_peft_forward_hooks(*args, **kwargs):
1703 kwargs = {k: v for k, v in kwargs.items() if k not in self.special_peft_forward_args}
-> 1704 outputs = self.base_model.generate(*args, **kwargs)
1705 else:
1706 outputs = self.base_model.generate(**kwargs)

File ~/Desktop/sex-edu-chatbot/.venv/lib/python3.10/site-packages/torch/utils/_contextlib.py:115, in context_decorator..decorate_context(*args, **kwargs)
112 @functools.wraps(func)
113 def decorate_context(*args, **kwargs):
114 with ctx_factory():
--> 115 return func(*args, **kwargs)

File ~/Desktop/sex-edu-chatbot/.venv/lib/python3.10/site-packages/transformers/generation/utils.py:1829, in GenerationMixin.generate(self, inputs, generation_config, logits_processor, stopping_criteria, prefix_allowed_tokens_fn, synced_gpus, assistant_model, streamer, negative_prompt_ids, negative_prompt_attention_mask, **kwargs)
1826 batch_size = inputs_tensor.shape[0]
1828 device = inputs_tensor.device
-> 1829 self._prepare_special_tokens(generation_config, kwargs_has_attention_mask, device=device)
...
326 else:
327 # Note: don't use named arguments in `torch.isin`, see https://github.com/pytorch/pytorch/issues/126045
328 return torch.isin(elements, test_elements)

IndexError: tuple index out of range```

I tried using different input data, but it doesn't work.
And the pretrained model originally could translate conversation, but it could not do it after finetuning.


Подробнее здесь: https://stackoverflow.com/questions/790 ... -with-lora
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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