Я настраиваю модель Llama-3.2-3B-Instruct с помощью специального набора данных. Сценарий обучения работает на одном графическом процессоре (возможно, из-за нехватки памяти), но завершается с ошибкой RuntimeError: чанк ожидает как минимум одномерный тензор на нескольких графических процессорах.
Я использовал отладчик, чтобы посмотреть, что происходит. Кажется, проблемы возникают из-за вызова scatter_map в файле scatter_gather.py, где вместо входных данных (диктант, содержащий 'input_ids', 'attention_mask', 'labels', каждая фигура (8, 1024) - размер пакета, вероятно, 2 * 4 графических процессора и максимальная длина последовательности 1024); и «num_items_in_batch»), в данных фактически остается только «num_items_in_batch».
Я считаю, что делаю что-то неправильно, и это не ошибка. Есть идеи, с чего начать поиск проблемы?
Загрузка набора данных:
dataset_path = "../data/s2s/si/chatml_si_listed_services_and_measurements_t30.json"
dataset = load_dataset("json", data_files=[dataset_path], split="train")
evalset_path = "../data/s2s/si/chatml_si_listed_services_and_measurements_t100.json"
evalset = load_dataset("json", data_files=[evalset_path], split="train")
dataset = dataset.map(preprocess_instances, batched=True)
evalset = evalset.map(preprocess_instances, batched=True)
print("Data set length", len(dataset)) # 64 instances
print("Eval set length", len(evalset)) # 64 instances
Функция предварительной обработки:
def preprocess_instances(batch):
lines_to_tokenize = [
tokenizer.apply_chat_template(chat, tokenize=False) for chat in batch["text"]
]
print(lines_to_tokenize)
# this is a list of strings
tokenized_data = tokenizer(
lines_to_tokenize,
truncation=True,
max_length=1024,
padding="max_length",
return_tensors="pt",
)
# this is a dict of inputs_ids: tensor 2d , attention_mask: tensor 2d
# clone input_ids to labels
tokenized_data["labels"] = tokenized_data["input_ids"].clone()
return tokenized_data
И код, связанный с моей моделью:
os.environ["CUDA_VISIBLE_DEVICES"] = "1,2,3,4"
os.environ["TOKENIZERS_PARALLELISM"] = "false"
base_model_name = "meta-llama/Llama-3.2-3B-Instruct"
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_storage=torch.bfloat16,
)
base_model = AutoModelForCausalLM.from_pretrained(
base_model_name,
)
base_model.config.use_cache = False
peft_config = LoraConfig(
lora_alpha=16,
lora_dropout=0.1,
r=8,
bias="none",
task_type="CAUSAL_LM",
)
tokenizer = AutoTokenizer.from_pretrained(
base_model_name,
trust_remote_code=True,
)
tokenizer.pad_token = tokenizer.eos_token
training_args = TrainingArguments(
output_dir=output_dir,
per_device_train_batch_size=2,
gradient_accumulation_steps=1,
learning_rate=2e-4,
logging_steps=2,
max_steps=100,
eval_strategy="steps",
ddp_find_unused_parameters=False,
#dataset_text_field="text",
)
trainer = SFTTrainer(
model=base_model,
train_dataset=dataset,
eval_dataset=evalset,
peft_config=peft_config,
tokenizer=tokenizer,
args=training_args,
max_seq_length=1024,
)
trainer.train()
Подробнее здесь: https://stackoverflow.com/questions/792 ... e-tuning-l
Ошибка выполнения: патрон ожидает как минимум одномерный тензор при точной настройке Llama с использованием трансформато ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
DataParallel multi-gpu RuntimeError: чанк ожидает как минимум одномерный тензор
Anonymous » » в форуме Python - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Llama 3: получение неизвестной ошибки CUDA при точной настройке Llama 3 в викитексте
Anonymous » » в форуме Python - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Llama 3: получение неизвестной ошибки CUDA при точной настройке Llama 3 в викитексте
Anonymous » » в форуме Python - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-