Repository navigation
从MiniMind-LLM微调扩散语言模型 #618
jingyaogong
announced in
Announcements
Replies: 2 comments 2 replies
|
老哥是什么方向的,感觉自己代码能力比较差,该咋办 |
0 replies
|
sir I'm a newbie, where is the dataset for training the LLM? I found the text is not coherent, is it due to the lack of training set or training steps? |
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
dLM(Diffusion Language Model,扩散语言模型)最近讨论度挺高。本文记录了一个极简实现:以尽可能少的改动,将已有的 AR(Autoregressive,自回归)MiniMind 续训为 dLM。
PS:当前效果仍属初级,生成的连贯性与逻辑性均有不足。
这类内容不会合入主分支,原因有三:
本帖提供:
核心改动只有三处:
关于训练策略,一个值得一提的观察:AR → dLM 的 A2D 微调并不需要解冻全部参数。FFN 层主要负责存储知识,而 AR → dLM 的核心变化在于注意力模式(从因果变为双向),因此冻结 FFN 仅训练 Attention 层即可取得不错的效果。更极端地,只训练 Q、K 投影也能获得一个可用的 dLM,这也很好地体现了 A2D 迁移的参数效率。
完整代码
将以下代码按目录结构放置到对应位置即可运行。
model/model_minimind_dllm.py(dLLM 模型定义)trainer/train_dllm.py(训练脚本)eval_dllm.py(评估脚本)scripts/chat_dllm.py(TUI 对话)scripts/web_dllm.py(Web Demo)快速开始
Step 1:按上述目录结构放置代码文件
参考目录结构:
Step 2:训练(或直接下载已训练权重)
可直接下载预训练好的
dllm_768.pth放到out/目录:训练默认基于 minimind-3 的
full_sft_768.pth权重做 A2D 微调(请提前准备,主页说明中可获取):Step 3:评估
推理结果:
小结
上述结果基于约 1.6GB SFT 数据的 A2D(AR-to-dLM)微调,总训练时长约 1 小时。模型已具备基本的问答与语法能力,但在连贯性和逻辑性上仍有明显不足,这基本符合预期。作为最小可行验证,它足以表明从 AR 到 dLM 的迁移路径是可行的。
有诸多改进空间,包括:
block_size与steps两个超参数的敏感性问题从更宏观的视角看,dLM 与 AR 在生成质量上仍存在显著差距。Discrete Diffusion 不像 Continuous Diffusion 那样有完备的数学框架作为支撑,其本质更接近 Masked Prediction 的延伸,尚未展现出真正的范式优势。工程层面的问题同样突出:双向注意力要求每一步去噪都对 Block 内所有 token 做全量 Attention,无法像 AR 那样通过 KV Cache 实现增量解码,推理效率与 AR 存在量级差距。此外,CoT 推理、并发解码等适配问题也远未解决,这条路线在理论深度和工程生态上都尚不成熟。
扩散语言模型是一个有价值的研究方向,本帖仅作抛砖引玉,感兴趣的读者欢迎 fork 自行探索。
如有问题可在 Discussion 中交流,但不保证及时回复。
All reactions