Обязательно установите атрибут decoder_start_token_id конфигурации модели. ОшибкаPython

Программы на Python
Ответить
Anonymous
 Обязательно установите атрибут decoder_start_token_id конфигурации модели. Ошибка

Сообщение Anonymous »

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

from transformers import AutoProcessor, MusicgenForConditionalGeneration, EncodecModel

model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")
processor = AutoProcessor.from_pretrained("facebook/musicgen-small")

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("facebook/musicgen-small")
decoder_start_token = ""
model.config.decoder_start_token_id = tokenizer.convert_tokens_to_ids(decoder_start_token)
Но я установил здесь model.config.decoder_start_token_id.

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

from peft import LoraConfig, TaskType
import torch.nn as nn

target_modules = [
name for name, module in model.named_modules()
if isinstance(module, (nn.Linear))
]

peft_config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
target_modules=target_modules,
inference_mode=False,
r=8,
lora_alpha=32,
lora_dropout=0.1
)

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

from peft import get_peft_model

peft_model = get_peft_model(model, peft_config)

peft_model.print_trainable_parameters()

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

from transformers import TrainingArguments, Trainer

training_args = TrainingArguments(
output_dir="./musicgen_results",
learning_rate=1e-3,
per_device_train_batch_size=8,
per_device_eval_batch_size=8,
num_train_epochs=2,
weight_decay=0.01,
eval_strategy="epoch",
save_strategy="epoch",
load_best_model_at_end=True,
report_to="none"
)

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

from transformers import EncodecModel
import torch

def preprocess_function(example):
audio = example["audio_path"]
encodec_model = EncodecModel.from_pretrained("facebook/encodec_32khz")

audio_array = example["audio_path"]["array"]
sampling_rate = 32000

audio_tensor = torch.tensor(audio_array, dtype=torch.float32)
audio_tensor = audio_tensor.unsqueeze(0).unsqueeze(0)

audio_inputs = encodec_model.encode(audio_tensor)
audio_tokens = audio_inputs.audio_codes
example["labels"] = audio_tokens
example.update(processor(
audio=audio["array"],
text=example["description"],
sampling_rate=32000
))
return example

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

train_dataset = train_dataset.map(preprocess_function, remove_columns=["description", "audio_path"])
eval_dataset = eval_dataset.map(preprocess_function, remove_columns=["description", "audio_path"])

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

from torch.nn.utils.rnn import pad_sequence
from transformers import DataCollatorForSeq2Seq

trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
)

trainer.train()
но здесь,
/usr/local/lib/python3.10/dist-packages/transformers/models/musicgen/modeling_musicgen.py в сдвиге_tokens_right(input_ids,pad_token_id, decoder_start_token_id)
102Shifted_input_ids[..., 1:] = input_ids[..., :-1].clone()
103, если decoder_start_token_id равен None:
--> 104 поднять ValueError("Обязательно установите атрибут decoder_start_token_id в конфигурации модели.")
105shifted_input_ids[..., 0] = decoder_start_token_id
106
ValueError: обязательно установите атрибут decoder_start_token_id конфигурации модели.

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

from transformers import AutoProcessor, MusicgenForConditionalGeneration, EncodecModel

model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")
processor = AutoProcessor.from_pretrained("facebook/musicgen-small")

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("facebook/musicgen-small")
decoder_start_token = ""
model.config.decoder_start_token_id = tokenizer.convert_tokens_to_ids(decoder_start_token)
Здесь я установил model.config.decoder_start_token_id. Но происходит ошибка.
Я не понимаю, почему это происходит. Я установил model.config.decoder_start_token_id

Подробнее здесь: https://stackoverflow.com/questions/793 ... onfigurati
Ответить

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

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

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

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

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