AssertionError:没有为此优化器记录 inf 检查

zer*_*ero 5 python pytorch alpaca

代码基于https://github.com/tloen/alpaca-lora/blob/main/finetune.py

\n

我这次训练的目标是利用无监督训练数据集让模型理解我的领域中单词的书写方式(基本上是屏蔽语言建模)。我不使用传统教学微调的原因是因为没有足够数量的数据集可供我使用。

\n

我所做的 2 个主要更改如下

\n
    \n
  1. 我不会根据 Llama 的权重进行微调,而是根据现有的 alpaca-lora 的权重进行微调。因此,我将代码编辑如下
  2. \n
\n
from peft import (\n    # LoraConfig,\n    PeftModel,\n    get_peft_model,\n    get_peft_model_state_dict,\n    prepare_model_for_int8_training,\n    set_peft_model_state_dict,\n)\n
Run Code Online (Sandbox Code Playgroud)\n

\n
# config = LoraConfig(\n    #     r=lora_r,\n    #     lora_alpha=lora_alpha,\n    #     target_modules=lora_target_modules,\n    #     lora_dropout=lora_dropout,\n    #     bias="none",\n    #     task_type="CAUSAL_LM",\n    # )\n    # model = get_peft_model(model, config)\n\n    # replace with this to load directly from alpaca\n    LORA_WEIGHTS = "tloen/alpaca-lora-7b"\n    model = PeftModel.from_pretrained(\n        model,\n        LORA_WEIGHTS,\n        torch_dtype=torch.float16,\n    )\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 将数据集编辑为我自己的。(我没有使用提示模板)。我生成数据集的代码如下:
  2. \n
\n
def chunk_text(data):\n    concantenated_text = \'\'\n    all_result = []\n    for i in range(data[\'train\'].num_rows):\n        concantenated_text += data[\'train\'][\'combined\'][i]\n    tokenized_concantenated_text = tokenizer.encode(concantenated_text)[1:]\n    tokenized_prompt = tokenizer.encode("### Text: ")[1:]\n    full_length = len(tokenized_concantenated_text)\n    for i in range(0, full_length, chunk_size):\n        text = tokenized_concantenated_text[i: i+chunk_size+overlap_size] \n        text = tokenized_prompt + text\n        text = tokenizer.decode(text)\n        \n        result = tokenizer(text, padding=False)\n        if result["input_ids"][-1] != tokenizer.eos_token_id:\n            result["input_ids"].append(tokenizer.eos_token_id)\n            result["attention_mask"].append(1)\n\n        result["labels"] = result["input_ids"].copy()\n\n        all_result.append(result)\n    return all_result\n
Run Code Online (Sandbox Code Playgroud)\n

但是,无论我如何调整代码,我都会遇到以下错误。非常感谢提供的任何帮助!

\n
\xe2\x95\xad\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80 Traceback (most recent call last) \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x95\xae\n\xe2\x94\x82 in <cell line: 2>:2                                                                              \xe2\x94\x82\n\xe2\x94\x82                                                                                                  \xe2\x94\x82\n\xe2\x94\x82 /usr/local/lib/python3.9/dist-packages/transformers/trainer.py:1662 in train                     \xe2\x94\x82\n\xe2\x94\x82                                                                                                  \xe2\x94\x82\n\xe2\x94\x82   1659 \xe2\x94\x82   \xe2\x94\x82   inner_training_loop = find_executable_batch_size(                                 \xe2\x94\x82\n\xe2\x94\x82   1660 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   self._inner_training_loop, self._train_batch_size, args.auto_find_batch_size  \xe2\x94\x82\n\xe2\x94\x82   1661 \xe2\x94\x82   \xe2\x94\x82   )                                                                                 \xe2\x94\x82\n\xe2\x94\x82 \xe2\x9d\xb1 1662 \xe2\x94\x82   \xe2\x94\x82   return inner_training_loop(                                                       \xe2\x94\x82\n\xe2\x94\x82   1663 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   args=args,                                                                    \xe2\x94\x82\n\xe2\x94\x82   1664 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   resume_from_checkpoint=resume_from_checkpoint,                                \xe2\x94\x82\n\xe2\x94\x82   1665 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   trial=trial,                                                                  \xe2\x94\x82\n\xe2\x94\x82                                                                                                  \xe2\x94\x82\n\xe2\x94\x82 /usr/local/lib/python3.9/dist-packages/transformers/trainer.py:1991 in _inner_training_loop      \xe2\x94\x82\n\xe2\x94\x82                                                                                                  \xe2\x94\x82\n\xe2\x94\x82   1988 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   xm.optimizer_step(self.optimizer)                             \xe2\x94\x82\n\xe2\x94\x82   1989 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   elif self.do_grad_scaling:                                            \xe2\x94\x82\n\xe2\x94\x82   1990 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   scale_before = self.scaler.get_scale()                            \xe2\x94\x82\n\xe2\x94\x82 \xe2\x9d\xb1 1991 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   self.scaler.step(self.optimizer)                                  \xe2\x94\x82\n\xe2\x94\x82   1992 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   self.scaler.update()                                              \xe2\x94\x82\n\xe2\x94\x82   1993 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   scale_after = self.scaler.get_scale()                             \xe2\x94\x82\n\xe2\x94\x82   1994 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   optimizer_was_run = scale_before <= scale_after                   \xe2\x94\x82\n\xe2\x94\x82                                                                                                  \xe2\x94\x82\n\xe2\x94\x82 /usr/local/lib/python3.9/dist-packages/torch/cuda/amp/grad_scaler.py:368 in step                 \xe2\x94\x82\n\xe2\x94\x82                                                                                                  \xe2\x94\x82\n\xe2\x94\x82   365 \xe2\x94\x82   \xe2\x94\x82   if optimizer_state["stage"] is OptState.READY:                                     \xe2\x94\x82\n\xe2\x94\x82   366 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   self.unscale_(optimizer)                                                       \xe2\x94\x82\n\xe2\x94\x82   367 \xe2\x94\x82   \xe2\x94\x82                                                                                      \xe2\x94\x82\n\xe2\x94\x82 \xe2\x9d\xb1 368 \xe2\x94\x82   \xe2\x94\x82   assert len(optimizer_state["found_inf_per_device"]) > 0, "No inf checks were rec   \xe2\x94\x82\n\xe2\x94\x82   369 \xe2\x94\x82   \xe2\x94\x82                                                                                      \xe2\x94\x82\n\xe2\x94\x82   370 \xe2\x94\x82   \xe2\x94\x82   retval = self._maybe_opt_step(optimizer, optimizer_state, *args, **kwargs)         \xe2\x94\x82\n\xe2\x94\x82   371                                                                                            \xe2\x94\x82\n\xe2\x95\xb0\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x95\xaf\nAssertionError: No inf checks were recorded for this optimizer.\n
Run Code Online (Sandbox Code Playgroud)\n

环境:\nPython: 3.9\ncuda: 11.8

\n

小智 0

你不应该评论配置,并初始化model = get_peft_model(model, config)之后model = PeftModel.from_pretrained(model, LORA_WEIGHTS, torch_dtype=torch.float16)