[GH-ISSUE #27] deepseek-moe模型在进行lora微调训练时loss值会突然变为0一直到最后,导致推理异常。 #25

Open
opened 2026-10-26 21:01:49 +00:00 by bsakaguchi · 4 comments
Owner

Originally created by @hangchen426926 on GitHub (Feb 29, 2024).
Original GitHub issue: https://github.com/deepseek-ai/DeepSeek-MoE/issues/27

现象1:deepseek-moe模型在进行lora微调训练时loss值会突然变为0一直到最后,导致推理异常,输出结果为:!!!。
image

现象2:deepseek-moe模型在checkpoint模型基础上进一步lora微调训练,会报错。
需要将trainer.train(resume_from_checkpoint = resume_from_checkpoint_dir)改为:
trainer.train() 才会启动成功。但保存的checkpoint就会从头开始,而不是从原checkpoint模型开始。

期待回复,谢谢~

Originally created by @hangchen426926 on GitHub (Feb 29, 2024). Original GitHub issue: https://github.com/deepseek-ai/DeepSeek-MoE/issues/27 现象1:deepseek-moe模型在进行lora微调训练时loss值会突然变为0一直到最后,导致推理异常,输出结果为:!!!。 ![image](https://github.com/deepseek-ai/DeepSeek-MoE/assets/56995618/0ee1579e-8aae-41e4-b56f-bf5780912953) 现象2:deepseek-moe模型在checkpoint模型基础上进一步lora微调训练,会报错。 需要将trainer.train(resume_from_checkpoint = resume_from_checkpoint_dir)改为: trainer.train() 才会启动成功。但保存的checkpoint就会从头开始,而不是从原checkpoint模型开始。 期待回复,谢谢~
Author
Owner

@zwd003 commented on GitHub (Mar 1, 2024):

请问报错结果是什么呢,resume需要加载lora的adapter

<!-- gh-comment-id:1972364157 --> @zwd003 commented on GitHub (Mar 1, 2024): 请问报错结果是什么呢,resume需要加载lora的adapter
Author
Owner

@hangchen426926 commented on GitHub (Mar 1, 2024):

请问报错结果是什么呢,resume需要加载lora的adapter

从基础模型开始lora训练时不会报错,推理也不报错,就是loss值会在1个epoch后突然变为0,微调后模型推理返回结果是一堆感叹号。但如果lora微调想在resume上加载lora的adapter,使用trainer.train(resume_from_checkpoint = resume_from_checkpoint_dir)训练会报错额。
image

<!-- gh-comment-id:1972373621 --> @hangchen426926 commented on GitHub (Mar 1, 2024): > 请问报错结果是什么呢,resume需要加载lora的adapter 从基础模型开始lora训练时不会报错,推理也不报错,就是loss值会在1个epoch后突然变为0,微调后模型推理返回结果是一堆感叹号。但如果lora微调想在resume上加载lora的adapter,使用trainer.train(resume_from_checkpoint = resume_from_checkpoint_dir)训练会报错额。 ![image](https://github.com/deepseek-ai/DeepSeek-MoE/assets/56995618/89a714e6-2d60-4c3a-be29-a5c090727046)
Author
Owner

@zyzyyy123 commented on GitHub (Jul 24, 2024):

请问报错结果是什么呢,resume需要加载lora的adapter

从基础模型开始lora训练时不会报错,推理也不报错,就是loss值会在1个epoch后突然变为0,微调后模型推理返回结果是一堆感叹号。但如果lora微调想在resume上加载lora的adapter,使用trainer.train(resume_from_checkpoint = resume_from_checkpoint_dir)训练会报错额。 image

请问你这个问题解决了吗

<!-- gh-comment-id:2247003858 --> @zyzyyy123 commented on GitHub (Jul 24, 2024): > > 请问报错结果是什么呢,resume需要加载lora的adapter > > 从基础模型开始lora训练时不会报错,推理也不报错,就是loss值会在1个epoch后突然变为0,微调后模型推理返回结果是一堆感叹号。但如果lora微调想在resume上加载lora的adapter,使用trainer.train(resume_from_checkpoint = resume_from_checkpoint_dir)训练会报错额。 ![image](https://private-user-images.githubusercontent.com/56995618/309132946-89a714e6-2d60-4c3a-be29-a5c090727046.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE4MDIzNTcsIm5iZiI6MTcyMTgwMjA1NywicGF0aCI6Ii81Njk5NTYxOC8zMDkxMzI5NDYtODlhNzE0ZTYtMmQ2MC00YzNhLWJlMjktYTVjMDkwNzI3MDQ2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI0VDA2MjA1N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQyNjBhM2Q1NDQyYTMzOTgzNGZhNTBlZDU1ZDBiN2RhNzAwMTRmYWMxNTU1ZWZiMjZjMjFmMWNmN2VlMTgwZjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.1seb_c-2CSeFrcA_aa-xp8lmFVcAfpDm1S1i9DKHnEc) 请问你这个问题解决了吗
Author
Owner

@1571859588 commented on GitHub (May 8, 2025):

这个可能是auxiliary loss没有加入到loss计算中导致梯度消失问题,我在复现的时候发现了同样的问题,能够通过刚刚讲的这个方式解决,而官网的代码却忽略了这一点。

另外, 官网的finetune.py在保存模型的时候也存在一些问题,比如kwargs['tokenizer']这个并不存在、使用lora微调后保存的adapter也有问题,有些是空的,导致无法合并等问题

然后是github 上推荐的推理代码也有问题,无法直接使用该推理代码,本人使用其他方式部署该deepseek moe 16b chat模型之后,在推理的时候存在输出概率nan的现象,非nan的概率时出现很多乱码和重复回答的情况,怀疑是超出最大上下文长度的问题,调整了8192\18000\36000\65535等都无法进行正常推理,且随着最大上下文长度的递增,出现nan的现象更加明显,同时检查了模型的config.json等非权重文件都没有发现指明上下文长度的极限值。同时,为了检验是否是下载时候权重文件下载错误的问题,又重新下载了3次,无一例外都是一样的结果。

综上,本人对论文的实验结果保持怀疑态度。

<!-- gh-comment-id:2862440910 --> @1571859588 commented on GitHub (May 8, 2025): 这个可能是auxiliary loss没有加入到loss计算中导致梯度消失问题,我在复现的时候发现了同样的问题,能够通过刚刚讲的这个方式解决,而官网的代码却忽略了这一点。 另外, 官网的finetune.py在保存模型的时候也存在一些问题,比如kwargs['tokenizer']这个并不存在、使用lora微调后保存的adapter也有问题,有些是空的,导致无法合并等问题 然后是github 上推荐的推理代码也有问题,无法直接使用该推理代码,本人使用其他方式部署该deepseek moe 16b chat模型之后,在推理的时候存在输出概率nan的现象,非nan的概率时出现很多乱码和重复回答的情况,怀疑是超出最大上下文长度的问题,调整了8192\18000\36000\65535等都无法进行正常推理,且随着最大上下文长度的递增,出现nan的现象更加明显,同时检查了模型的config.json等非权重文件都没有发现指明上下文长度的极限值。同时,为了检验是否是下载时候权重文件下载错误的问题,又重新下载了3次,无一例外都是一样的结果。 综上,本人对论文的实验结果保持怀疑态度。
Sign in to join this conversation.
No labels
pull-request
WIP
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
deepseek-ai/DeepSeek-MoE#25
No description provided.