所需先决条件
- 我已阅读了文档 https://github.com/baichuan-inc/baichuan-7B/blob/HEAD/README.md 。
- 我已在 Issue Tracker 和 Discussions 中搜索,但尚未报告此问题。(如果有,请在那里加1或评论。)
- 请先在 Discussion 中提问。
问题
回溯(最近一次调用):
文件 "/mnt/workspace/LLaMA-Efficient-Tuning/src/train_sft.py",第97行,main()函数
文件 "/mnt/workspace/LLaMA-Efficient-Tuning/src/train_sft.py",第69行,main函数中的 main()
train_result = trainer.train()
文件 "/home/pai/envs/llama_etuning/lib/python3.10/site-packages/transformers/trainer.py",第1645行,train函数
返回 inner_training_loop(
文件 "/home/pai/envs/llama_etuning/lib/python3.10/site-packages/transformers/trainer.py",第1987行,inner_training_loop函数中的 inner_training_loop
self.accelerator.clip_grad_norm(
文件 "/home/pai/envs/llama_etuning/lib/python3.10/site-packages/accelerate/accelerator.py",第1893行,clip_grad_norm_函数
self.unscale_gradients()
文件 "/home/pai/envs/llama_etuning/lib/python3.10/site-packages/accelerate/accelerator.py",第1856行,unscale_gradients函数中的 self.scaler.unscale_(opt)
文件 "/home/pai/envs/llama_etuning/lib/python3.10/site-packages/torch/cuda/amp/grad_scaler.py",第275行,unscale_ 函数
引发 RuntimeError("unscale_() 在自上次更新以来已经在此优化器上调用过。")
RuntimeError: unscale_() 在自上次更新以来已经在此优化器上调用过。
3条答案
按热度按时间gzjq41n41#
这个错误是由于在优化器上调用了
unscale_()
方法,但该方法已经在上次更新之后被调用过了。为了解决这个问题,你可以尝试以下方法:scaler.scale(loss)
,并在更新梯度之后调用scaler.step(opt)
和scaler.update()
。scaler.scale(loss)
,并在更新梯度之后调用scaler.step(opt)
和scaler.update()
。enyaitl32#
请参考这篇:huggingface/transformers#24245,看起来像是transformers某个版本的bug,将其替换为评论中提到的内容。
!pip install git+https://github.com/huggingface/transformers@de9255de27abfcae4a1f816b904915f0b1e23cd9
就可以了。
pkln4tw63#
换成指定的transformers==4.29.1就好了