Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请教如何调整model的参数配置 #40

Open
yiyuanli939 opened this issue Sep 22, 2024 · 6 comments
Open

请教如何调整model的参数配置 #40

yiyuanli939 opened this issue Sep 22, 2024 · 6 comments

Comments

@yiyuanli939
Copy link

yiyuanli939 commented Sep 22, 2024

在README.md 中,有一个提示是“2.3 在./model/LMConfig.py 中调整model的参数配置“。能请教一下如何比如将模型调成最小的吗?

@yiyuanli939 yiyuanli939 changed the title 请教2.3 请教如何调整model的参数配置 Sep 22, 2024
@WangRongsheng
Copy link

现在LMconfig就是配置的最小参数:https://github.com/jingyaogong/minimind/blob/master/model/LMConfig.py

@jingyaogong
Copy link
Owner

在README.md 中,有一个提示是“2.3 在./model/LMConfig.py 中调整model的参数配置“。能请教一下如何比如将模型调成最小的吗?

有提到哦

Model Name params len_vocab n_layers d_model kv_heads q_heads share+route TopK
minimind-v1-small 26M 6400 8 512 8 16 - -
minimind-v1-moe 4×26M 6400 8 512 8 16 2+4 2
minimind-v1 108M 6400 16 768 8 16 - -
dim就是token-dimension 默认= 512
n_layers 就是 TransformerBlock的层数 默认= 8

“将模型调成最小的”不知道你说的是调整成我训练过的几个版本里最小的
512+8=26.88M
还是继续尝试缩小,比如
256+8=7.54M
128+8=2.39M

@yiyuanli939
Copy link
Author

非常感谢二位的帮助和指出!!

@yiyuanli939
Copy link
Author

在README.md 中,有一个提示是“2.3 在./model/LMConfig.py 中调整model的参数配置“。能请教一下如何比如将模型调成最小的吗?

有提到哦

Model Name params len_vocab n_layers d_model kv_heads q_heads share+route TopK
minimind-v1-small 26M 6400 8 512 8 16 - -
minimind-v1-moe 4×26M 6400 8 512 8 16 2+4 2
minimind-v1 108M 6400 16 768 8 16 - -

dim就是token-dimension 默认= 512
n_layers 就是 TransformerBlock的层数 默认= 8

“将模型调成最小的”不知道你说的是调整成我训练过的几个版本里最小的 512+8=26.88M 还是继续尝试缩小,比如 256+8=7.54M 128+8=2.39M

当时还不太明白,现在明白了。Mac上一些加速不支持(比如bfloat16,autocast)。已经尝试通过把模型调成128 + 4来减少训练时间了。

@jingyaogong
Copy link
Owner

在README.md 中,有一个提示是“2.3 在./model/LMConfig.py 中调整model的参数配置“。能请教一下如何比如将模型调成最小的吗?

有提到哦
Model Name params len_vocab n_layers d_model kv_heads q_heads share+route TopK
minimind-v1-small 26M 6400 8 512 8 16 - -
minimind-v1-moe 4×26M 6400 8 512 8 16 2+4 2
minimind-v1 108M 6400 16 768 8 16 - -

dim就是token-dimension 默认= 512
n_layers 就是 TransformerBlock的层数 默认= 8

“将模型调成最小的”不知道你说的是调整成我训练过的几个版本里最小的 512+8=26.88M 还是继续尝试缩小,比如 256+8=7.54M 128+8=2.39M

当时还不太明白,现在明白了。Mac上一些加速不支持(比如bfloat16,autocast)。已经尝试通过把模型调成128 + 4来减少训练时间了。

对的,用更小的参数训练必然更快,能跑通流程,但是效果肯定就完全丧失了

128+4 对应1.6M大小模型,160万参数
512+8 对应26M大小模型,2600万参数

可以简单的理解成,需要一个模型刷题,刷成千上万的题,全人类的语言百科都给他刷一遍,但是只给它分配了160万的记忆细胞,一定是学完就忘,白学一遍,对草履虫弹琴。

想象一下,160万参数模型,权重文件占10MB左右的文件。训练假设学了10GB的文本语料,相当于把10GB的文件知识点全部无损压缩到10MB模型权重里面去,压缩率是1000倍。听起来不可思议,确实是不可能的。

但是0~1M量级的模型,也有很多它用武之地。
可以做成bert衍生出简单的文本分类情感标注任务,不需要模型那么强的逻辑和记忆力。
在视觉里就多了,检测、识别、逆问题......当然gan/vae/diffusion的生成任务也还是免谈,太小了

具备2600万记忆细胞的 512+8 模型尚可勉强一战,越大越好,参数多多益善。

@yiyuanli939
Copy link
Author

在README.md 中,有一个提示是“2.3 在./model/LMConfig.py 中调整model的参数配置“。能请教一下如何比如将模型调成最小的吗?

有提到哦
Model Name params len_vocab n_layers d_model kv_heads q_heads share+route TopK
minimind-v1-small 26M 6400 8 512 8 16 - -
minimind-v1-moe 4×26M 6400 8 512 8 16 2+4 2
minimind-v1 108M 6400 16 768 8 16 - -

dim就是token-dimension 默认= 512
n_layers 就是 TransformerBlock的层数 默认= 8

“将模型调成最小的”不知道你说的是调整成我训练过的几个版本里最小的 512+8=26.88M 还是继续尝试缩小,比如 256+8=7.54M 128+8=2.39M

当时还不太明白,现在明白了。Mac上一些加速不支持(比如bfloat16,autocast)。已经尝试通过把模型调成128 + 4来减少训练时间了。

对的,用更小的参数训练必然更快,能跑通流程,但是效果肯定就完全丧失了

128+4 对应1.6M大小模型,160万参数 512+8 对应26M大小模型,2600万参数

可以简单的理解成,需要一个模型刷题,刷成千上万的题,全人类的语言百科都给他刷一遍,但是只给它分配了160万的记忆细胞,一定是学完就忘,白学一遍,对草履虫弹琴。

想象一下,160万参数模型,权重文件占10MB左右的文件。训练假设学了10GB的文本语料,相当于把10GB的文件知识点全部无损压缩到10MB模型权重里面去,压缩率是1000倍。听起来不可思议,确实是不可能的。

但是0~1M量级的模型,也有很多它用武之地。 可以做成bert衍生出简单的文本分类情感标注任务,不需要模型那么强的逻辑和记忆力。 在视觉里就多了,检测、识别、逆问题......当然gan/vae/diffusion的生成任务也还是免谈,太小了

具备2600万记忆细胞的 512+8 模型尚可勉强一战,越大越好,参数多多益善。

学到了!不过macbook本地很多cuda加速不能用,如果直接改的话一个epoch预计要350min,太恐怖了。可能还是得先本地先跑一轮然后之后尝试租用一些云上的英伟达GPU再去做512+8。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants