Skip to content

kernel4632/DEQ-RWKV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DEQ-RWKV的LOGO

DEQ-RWKV

结合深度均衡模型(DEQ)与RWKV-v7架构的轻量级AI模型

这是一个实验和学习性质的开源项目,把DEQ(深度均衡模型)算法和RWKV-v7架构结合起来玩一玩🤗


项目是做什么的 🤔

简单来说,这个项目尝试用更少的模型参数来做和RWKV-v7差不多的事,我用DEQ算法来优化模型结构,看看能不能在保持性能的同时,让模型更轻量一些。

💡 多轻量?

  • 传统RWKV-v7:1个768维嵌入的block ≈ 28.7M 文件大小
  • 官方最小的0.1B模型:12个block ≈ 344M 文件大小
  • DEQ-RWKV:仅需 1个block ,你想想🙃

显存优化:由于DEQ特性,中间的多个block只需存一个block的梯度,大幅降低训练的显存占用


主要文件有什么用 📁

文件/目录 功能描述
main.ipynb 用于测试与学习的模型定义和训练流程Jupyter笔记本
train.py 示例调用model.py去训练的参考代码
model.py DEQ-RWKV7架构的完整定义,包括模型结构、前向传播等
wkv7.py CUDA实现的RWKV-v7的wkv模块Python封装接口
tokenizer.py RWKV官方的分词器,负责文本与token的相互转换
vocab.txt RWKV的官方词表
cuda/ 里面是用CUDA写的核心计算代码,也是RWKV官方的
test.jsonl 一个测试训练效果用的数据集,里面是一些已经转成token的数据

注意:main.py里的用到的g1a.pth是rwkv7的官方的某个0.1b模型的参数,可自行下载(哪个都可以),放在主目录就好


怎么用 🚀

如果你想自己捣鼓这个项目,或者学习DEQ算法如何用,直接看代码就好啦~ 训练流程在main.ipynb里写得很清楚(只不过我没怎么写注释😅),如果想看我修改的模型定义,就看model.py


为什么开源 🌟

就是想分享一下我实验了很久的代码😅
如果你觉得有用,可以自己拿去改,或者在这个基础上做更多的实验。
有什么问题或者建议,也欢迎提出来一起讨论


致谢 🙏

  • 🖥️感谢 Mingkai Zhou 赞助的算力支持!
  • 🙌感谢 RWKV 社区提供的开源代码!

About

结合DEQ算法和RWKV-v7架构的实验项目

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published