How to append new token and train?
#70
by
NickyNicky
- opened
my code is and error train
def smart_tokenizer_and_embedding_resize( # https://github.com/artidoro/qlora/blob/main/qlora.py
special_tokens_dict,
tokenizer,
model,
):
"""Resize tokenizer and embedding.
Note: This is the unoptimized version that may make your embedding size not be divisible by 64.
"""
num_new_tokens = tokenizer.add_special_tokens(special_tokens_dict)
print("We have add_special_tokens:", num_new_tokens, "tokens")
old_embeddings= model.get_input_embeddings()
print("old_embeddings: ",old_embeddings.weight.data.shape)
# model.resize_token_embeddings(len(tokenizer)+num_new_tokens) #aqui elimina como 12 embeddings pero es el codigo original
model.resize_token_embeddings(old_embeddings.weight.data.shape[0]+num_new_tokens) # implementacion mia donde no elimina los embeddings
print("model: ",model.get_input_embeddings().weight.data.shape)
if num_new_tokens > 0:
input_embeddings = model.get_input_embeddings().weight.data
output_embeddings = model.get_output_embeddings().weight.data
print("input_embeddings:",input_embeddings.shape)
print("output_embeddings:",output_embeddings.shape)
# print("")
# print("output_embeddings:",output_embeddings)
# print("-->>",input_embeddings[:-num_new_tokens]).mean(dim=0, keepdim=True)
input_embeddings_avg = input_embeddings[:-num_new_tokens].mean(dim=0, keepdim=True)
output_embeddings_avg = output_embeddings[:-num_new_tokens].mean(dim=0, keepdim=True)
print("input_embeddings_avg:",input_embeddings_avg.shape)
print("output_embeddings_avg:",output_embeddings_avg.shape)
input_embeddings[-num_new_tokens:] = input_embeddings_avg
output_embeddings[-num_new_tokens:] = output_embeddings_avg
print("")
print(model)
# {'text': " Who made you?<|endoftext|>\n<bot>: I'm h2oGPT, a large language model by H2O.ai, the visionary leader in democratizing AI.\n<|endoftext|>"}
dic = {
'additional_special_tokens': ['<human>:','<bot>:']
}
smart_tokenizer_and_embedding_resize(
special_tokens_dict= dic,
tokenizer=tokenizer,
model=model,
)
########## DATASET
Dataset({
features: ['input_ids', 'attention_mask', 'labels'],
num_rows: 12332
})
########## TRAIN
from torch.optim import AdamW
# optimizer = AdamW(model.parameters(), lr=1e-3)
# Crear el optimizador
# optimizer = AdamW(model.parameters(), lr=1e-4)
training_args = transformers.TrainingArguments(
per_device_train_batch_size=6, # es el tamaรฑo del lote de entrenamiento por dispositivo.
per_device_eval_batch_size=6, # es el tamaรฑo del lote de evaluaciรณn por dispositivo.
gradient_accumulation_steps=3,
logging_steps=4,
num_train_epochs=1,
learning_rate= 1e-3, # #2e-8, 3e-5, 1e-5, 2e-5, (1e-3), 1e-2
# fp16=False,
# # fp16=True, #True,
# auto_find_batch_size=False, # Desactivar la bรบsqueda automรกtica del tamaรฑo de lote
fp16=True,
auto_find_batch_size=True, # Desactivar la bรบsqueda automรกtica del tamaรฑo de lote
save_total_limit=4,
output_dir="./outputs",
optim="adamw_torch",
lr_scheduler_type = 'cosine',
warmup_ratio = 0.03, #0.05,
)
trainer = transformers.Trainer(
model=model,
train_dataset=lm_dataset,
# eval_dataset=val_dataset,
args=training_args,
data_collator=transformers.DataCollatorForLanguageModeling(tokenizer, mlm=False),
)
# Configurar el optimizador en el objeto Trainer
# trainer.optimizer = optimizer
trainer.train()
########## Error
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Traceback (most recent call last) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ in <cell line: 49>:49 โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/transformers/trainer.py:1645 in train โ
โ โ
โ 1642 โ โ inner_training_loop = find_executable_batch_size( โ
โ 1643 โ โ โ self._inner_training_loop, self._train_batch_size, args.auto_find_batch_size โ
โ 1644 โ โ ) โ
โ โฑ 1645 โ โ return inner_training_loop( โ
โ 1646 โ โ โ args=args, โ
โ 1647 โ โ โ resume_from_checkpoint=resume_from_checkpoint, โ
โ 1648 โ โ โ trial=trial, โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/utils/memory.py:132 in decorator โ
โ โ
โ 129 โ โ โ if batch_size == 0: โ
โ 130 โ โ โ โ raise RuntimeError("No executable batch size found, reached zero.") โ
โ 131 โ โ โ try: โ
โ โฑ 132 โ โ โ โ return function(batch_size, *args, **kwargs) โ
โ 133 โ โ โ except Exception as e: โ
โ 134 โ โ โ โ if should_reduce_batch_size(e): โ
โ 135 โ โ โ โ โ gc.collect() โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/transformers/trainer.py:1938 in _inner_training_loop โ
โ โ
โ 1935 โ โ โ โ โ self.control = self.callback_handler.on_step_begin(args, self.state, โ
โ 1936 โ โ โ โ โ
โ 1937 โ โ โ โ with self.accelerator.accumulate(model): โ
โ โฑ 1938 โ โ โ โ โ tr_loss_step = self.training_step(model, inputs) โ
โ 1939 โ โ โ โ โ
โ 1940 โ โ โ โ if ( โ
โ 1941 โ โ โ โ โ args.logging_nan_inf_filter โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/transformers/trainer.py:2759 in training_step โ
โ โ
โ 2756 โ โ โ return loss_mb.reduce_mean().detach().to(self.args.device) โ
โ 2757 โ โ โ
โ 2758 โ โ with self.compute_loss_context_manager(): โ
โ โฑ 2759 โ โ โ loss = self.compute_loss(model, inputs) โ
โ 2760 โ โ โ
โ 2761 โ โ if self.args.n_gpu > 1: โ
โ 2762 โ โ โ loss = loss.mean() # mean() to average on multi-gpu parallel training โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/transformers/trainer.py:2784 in compute_loss โ
โ โ
โ 2781 โ โ โ labels = inputs.pop("labels") โ
โ 2782 โ โ else: โ
โ 2783 โ โ โ labels = None โ
โ โฑ 2784 โ โ outputs = model(**inputs) โ
โ 2785 โ โ # Save past state if it exists โ
โ 2786 โ โ # TODO: this needs to be fixed and made cleaner later. โ
โ 2787 โ โ if self.args.past_index >= 0: โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py:1194 in _call_impl โ
โ โ
โ 1191 โ โ # this function, and just call forward. โ
โ 1192 โ โ if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks o โ
โ 1193 โ โ โ โ or _global_forward_hooks or _global_forward_pre_hooks): โ
โ โฑ 1194 โ โ โ return forward_call(*input, **kwargs) โ
โ 1195 โ โ # Do not call functions when jit is used โ
โ 1196 โ โ full_backward_hooks, non_full_backward_hooks = [], [] โ
โ 1197 โ โ if self._backward_hooks or _global_backward_hooks: โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/utils/operations.py:553 in forward โ
โ โ
โ 550 โ model_forward = ConvertOutputsToFp32(model_forward) โ
โ 551 โ โ
โ 552 โ def forward(*args, **kwargs): โ
โ โฑ 553 โ โ return model_forward(*args, **kwargs) โ
โ 554 โ โ
โ 555 โ # To act like a decorator so that it can be popped when doing `extract_model_from_pa โ
โ 556 โ forward.__wrapped__ = model_forward โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/utils/operations.py:541 in __call__ โ
โ โ
โ 538 โ โ update_wrapper(self, model_forward) โ
โ 539 โ โ
โ 540 โ def __call__(self, *args, **kwargs): โ
โ โฑ 541 โ โ return convert_to_fp32(self.model_forward(*args, **kwargs)) โ
โ 542 โ โ
โ 543 โ def __getstate__(self): โ
โ 544 โ โ raise pickle.PicklingError( โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/torch/amp/autocast_mode.py:14 in decorate_autocast โ
โ โ
โ 11 โ @functools.wraps(func) โ
โ 12 โ def decorate_autocast(*args, **kwargs): โ
โ 13 โ โ with autocast_instance: โ
โ โฑ 14 โ โ โ return func(*args, **kwargs) โ
โ 15 โ decorate_autocast.__script_unsupported = '@autocast() decorator is not supported in โ
โ 16 โ return decorate_autocast โ
โ 17 โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/utils/operations.py:553 in forward โ
โ โ
โ 550 โ model_forward = ConvertOutputsToFp32(model_forward) โ
โ 551 โ โ
โ 552 โ def forward(*args, **kwargs): โ
โ โฑ 553 โ โ return model_forward(*args, **kwargs) โ
โ 554 โ โ
โ 555 โ # To act like a decorator so that it can be popped when doing `extract_model_from_pa โ
โ 556 โ forward.__wrapped__ = model_forward โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/utils/operations.py:541 in __call__ โ
โ โ
โ 538 โ โ update_wrapper(self, model_forward) โ
โ 539 โ โ
โ 540 โ def __call__(self, *args, **kwargs): โ
โ โฑ 541 โ โ return convert_to_fp32(self.model_forward(*args, **kwargs)) โ
โ 542 โ โ
โ 543 โ def __getstate__(self): โ
โ 544 โ โ raise pickle.PicklingError( โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/torch/amp/autocast_mode.py:14 in decorate_autocast โ
โ โ
โ 11 โ @functools.wraps(func) โ
โ 12 โ def decorate_autocast(*args, **kwargs): โ
โ 13 โ โ with autocast_instance: โ
โ โฑ 14 โ โ โ return func(*args, **kwargs) โ
โ 15 โ decorate_autocast.__script_unsupported = '@autocast() decorator is not supported in โ
โ 16 โ return decorate_autocast โ
โ 17 โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/utils/operations.py:553 in forward โ
โ โ
โ 550 โ model_forward = ConvertOutputsToFp32(model_forward) โ
โ 551 โ โ
โ 552 โ def forward(*args, **kwargs): โ
โ โฑ 553 โ โ return model_forward(*args, **kwargs) โ
โ 554 โ โ
โ 555 โ # To act like a decorator so that it can be popped when doing `extract_model_from_pa โ
โ 556 โ forward.__wrapped__ = model_forward โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/utils/operations.py:541 in __call__ โ
โ โ
โ 538 โ โ update_wrapper(self, model_forward) โ
โ 539 โ โ
โ 540 โ def __call__(self, *args, **kwargs): โ
โ โฑ 541 โ โ return convert_to_fp32(self.model_forward(*args, **kwargs)) โ
โ 542 โ โ
โ 543 โ def __getstate__(self): โ
โ 544 โ โ raise pickle.PicklingError( โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/torch/amp/autocast_mode.py:14 in decorate_autocast โ
โ โ
โ 11 โ @functools.wraps(func) โ
โ 12 โ def decorate_autocast(*args, **kwargs): โ
โ 13 โ โ with autocast_instance: โ
โ โฑ 14 โ โ โ return func(*args, **kwargs) โ
โ 15 โ decorate_autocast.__script_unsupported = '@autocast() decorator is not supported in โ
โ 16 โ return decorate_autocast โ
โ 17 โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/utils/operations.py:553 in forward โ
โ โ
โ 550 โ model_forward = ConvertOutputsToFp32(model_forward) โ
โ 551 โ โ
โ 552 โ def forward(*args, **kwargs): โ
โ โฑ 553 โ โ return model_forward(*args, **kwargs) โ
โ 554 โ โ
โ 555 โ # To act like a decorator so that it can be popped when doing `extract_model_from_pa โ
โ 556 โ forward.__wrapped__ = model_forward โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/utils/operations.py:541 in __call__ โ
โ โ
โ 538 โ โ update_wrapper(self, model_forward) โ
โ 539 โ โ
โ 540 โ def __call__(self, *args, **kwargs): โ
โ โฑ 541 โ โ return convert_to_fp32(self.model_forward(*args, **kwargs)) โ
โ 542 โ โ
โ 543 โ def __getstate__(self): โ
โ 544 โ โ raise pickle.PicklingError( โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/torch/amp/autocast_mode.py:14 in decorate_autocast โ
โ โ
โ 11 โ @functools.wraps(func) โ
โ 12 โ def decorate_autocast(*args, **kwargs): โ
โ 13 โ โ with autocast_instance: โ
โ โฑ 14 โ โ โ return func(*args, **kwargs) โ
โ 15 โ decorate_autocast.__script_unsupported = '@autocast() decorator is not supported in โ
โ 16 โ return decorate_autocast โ
โ 17 โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/utils/operations.py:553 in forward โ
โ โ
โ 550 โ model_forward = ConvertOutputsToFp32(model_forward) โ
โ 551 โ โ
โ 552 โ def forward(*args, **kwargs): โ
โ โฑ 553 โ โ return model_forward(*args, **kwargs) โ
โ 554 โ โ
โ 555 โ # To act like a decorator so that it can be popped when doing `extract_model_from_pa โ
โ 556 โ forward.__wrapped__ = model_forward โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/utils/operations.py:541 in __call__ โ
โ โ
โ 538 โ โ update_wrapper(self, model_forward) โ
โ 539 โ โ
โ 540 โ def __call__(self, *args, **kwargs): โ
โ โฑ 541 โ โ return convert_to_fp32(self.model_forward(*args, **kwargs)) โ
โ 542 โ โ
โ 543 โ def __getstate__(self): โ
โ 544 โ โ raise pickle.PicklingError( โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/torch/amp/autocast_mode.py:14 in decorate_autocast โ
โ โ
โ 11 โ @functools.wraps(func) โ
โ 12 โ def decorate_autocast(*args, **kwargs): โ
โ 13 โ โ with autocast_instance: โ
โ โฑ 14 โ โ โ return func(*args, **kwargs) โ
โ 15 โ decorate_autocast.__script_unsupported = '@autocast() decorator is not supported in โ
โ 16 โ return decorate_autocast โ
โ 17 โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/utils/operations.py:553 in forward โ
โ โ
โ 550 โ model_forward = ConvertOutputsToFp32(model_forward) โ
โ 551 โ โ
โ 552 โ def forward(*args, **kwargs): โ
โ โฑ 553 โ โ return model_forward(*args, **kwargs) โ
โ 554 โ โ
โ 555 โ # To act like a decorator so that it can be popped when doing `extract_model_from_pa โ
โ 556 โ forward.__wrapped__ = model_forward โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/utils/operations.py:541 in __call__ โ
โ โ
โ 538 โ โ update_wrapper(self, model_forward) โ
โ 539 โ โ
โ 540 โ def __call__(self, *args, **kwargs): โ
โ โฑ 541 โ โ return convert_to_fp32(self.model_forward(*args, **kwargs)) โ
โ 542 โ โ
โ 543 โ def __getstate__(self): โ
โ 544 โ โ raise pickle.PicklingError( โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/torch/amp/autocast_mode.py:14 in decorate_autocast โ
โ โ
โ 11 โ @functools.wraps(func) โ
โ 12 โ def decorate_autocast(*args, **kwargs): โ
โ 13 โ โ with autocast_instance: โ
โ โฑ 14 โ โ โ return func(*args, **kwargs) โ
โ 15 โ decorate_autocast.__script_unsupported = '@autocast() decorator is not supported in โ
โ 16 โ return decorate_autocast โ
โ 17 โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/peft/peft_model.py:847 in forward โ
โ โ
โ 844 โ โ โ if self.base_model.config.model_type == "mpt": โ
โ 845 โ โ โ โ if inputs_embeds is not None: โ
โ 846 โ โ โ โ โ raise AssertionError("forward in MPTForCausalLM does not support inp โ
โ โฑ 847 โ โ โ โ return self.base_model( โ
โ 848 โ โ โ โ โ input_ids=input_ids, โ
โ 849 โ โ โ โ โ attention_mask=attention_mask, โ
โ 850 โ โ โ โ โ labels=labels, โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py:1194 in _call_impl โ
โ โ
โ 1191 โ โ # this function, and just call forward. โ
โ 1192 โ โ if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks o โ
โ 1193 โ โ โ โ or _global_forward_hooks or _global_forward_pre_hooks): โ
โ โฑ 1194 โ โ โ return forward_call(*input, **kwargs) โ
โ 1195 โ โ # Do not call functions when jit is used โ
โ 1196 โ โ full_backward_hooks, non_full_backward_hooks = [], [] โ
โ 1197 โ โ if self._backward_hooks or _global_backward_hooks: โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/hooks.py:165 in new_forward โ
โ โ
โ 162 โ โ โ with torch.no_grad(): โ
โ 163 โ โ โ โ output = old_forward(*args, **kwargs) โ
โ 164 โ โ else: โ
โ โฑ 165 โ โ โ output = old_forward(*args, **kwargs) โ
โ 166 โ โ return module._hf_hook.post_forward(module, output) โ
โ 167 โ โ
โ 168 โ module.forward = new_forward โ
โ โ
โ /root/.cache/huggingface/modules/transformers_modules/mosaicml/mpt-7b-instruct/1fc4634127ec64a45 โ
โ 716003578b9cfae23265849/modeling_mpt.py:271 in forward โ
โ โ
โ 268 โ โ if inputs_embeds is not None: โ
โ 269 โ โ โ raise NotImplementedError('inputs_embeds has to be None (for hf/peft support โ
โ 270 โ โ outputs = self.transformer(input_ids=input_ids, past_key_values=past_key_values, โ
โ โฑ 271 โ โ logits = self.transformer.wte(outputs.last_hidden_state.to(self.transformer.wte. โ
โ 272 โ โ if self.logit_scale is not None: โ
โ 273 โ โ โ if self.logit_scale == 0: โ
โ 274 โ โ โ โ warnings.warn(f'Multiplying logits by self.logit_scale={self.logit_scale โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py:1194 in _call_impl โ
โ โ
โ 1191 โ โ # this function, and just call forward. โ
โ 1192 โ โ if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks o โ
โ 1193 โ โ โ โ or _global_forward_hooks or _global_forward_pre_hooks): โ
โ โฑ 1194 โ โ โ return forward_call(*input, **kwargs) โ
โ 1195 โ โ # Do not call functions when jit is used โ
โ 1196 โ โ full_backward_hooks, non_full_backward_hooks = [], [] โ
โ 1197 โ โ if self._backward_hooks or _global_backward_hooks: โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
TypeError: Embedding.forward() takes 2 positional arguments but 3 were given
HI, I got the same error
I got the same error too :(