1. 为什么我要做这个项目?
现在市面上有很多大模型,比如GPT、LLaMA这些,动不动就是几十亿甚至上千亿参数。但说实话,这些模型对硬件要求太高了,普通开发者根本玩不起。我就想:能不能做一个既好用又能在普通电脑上跑起来的模型呢? 这其实也是目前大部分人的期望, 能有一个可以本地部署的ai小型项目,实现完全私有化并且有一定的智能能力。
于是就有了这个KHAOSZ项目,1B参数,中英双语,支持对话、文本生成、RAG检索,而且训练代码都是开源的!
2. 模型是怎么工作的?
1. Transformer基础
我们的模型基于Transformer架构,堆叠了24层。每层都包含:
- 注意力机制:让模型关注重要信息
- 前馈神经网络:处理信息
- 归一化层:稳定训练过程
自回归模型:像猜谜语一样
想象一下,你在和朋友玩猜谜语游戏。朋友说:”今天天气真…”,你猜下一个词可能是”好”、”晴朗”、”糟糕”等等。
我们的模型也是这样的!它会把一句话拆成很多小片段(token),然后根据前面已经出现的词,猜下一个词可能是什么。
举个例子:
1 | 输入:"今天天气真" |
然后我们通过一些参数(temperature、top_k、top_p)来控制猜词的随机性,最后选一个词出来,加到句子后面继续猜,直到遇到结束符号。
注意力机制:让模型”专注”
模型内部有一个很重要的机制叫注意力。简单说就是,当模型在猜下一个词的时候,它会关注前面哪些词更重要。
比如在句子”小明去超市买了苹果和香蕉”中,当模型要猜”买了”后面是什么时,它会特别关注”超市”这个词,因为超市里卖的东西通常都是食物。
因果掩码:不能偷看未来
这里有个很重要的规则:模型在猜当前词的时候,不能偷看后面的词。就像考试时不能看后面的答案一样。
我们用一个特殊的”掩码”来实现这个功能:
1 | [0, -inf, -inf, -inf] # 只能看到第一个词 |
其中-inf代表无限小,经过softmax处理后变成0,这样模型就”看不到”未来的词了。
2. GQA:省内存的注意力
传统的注意力机制每个头都有独立的Key和Value,这样很占内存。我们用了GQA(分组查询注意力):
- 24个查询头(Query Heads)
- 但只有4个键值头(Key-Value Heads)
相当于24个人共用4个笔记本,大大节省了内存!
3. RoPE:让模型理解位置
模型需要知道词在句子中的位置。我们用了旋转位置编码(RoPE),这是一种很巧妙的方法,让模型能理解”第一个词”、”第二个词”这样的位置关系。
4. 权重绑定:省参数的技巧
我们让输入层和输出层共用权重,这样能节省大约0.1B参数!相当于输入和输出用同一本词典,不用准备两本。
3. 训练过程
三种训练模式
我们支持三种训练方式:
- 预训练(seq):让模型学会基本的语言规律
- 监督微调(sft):教模型按照指令回答问题
- 直接偏好优化(dpo):让模型学会选择更好的回答
训练优化技巧
为了在有限硬件上训练,我们用了很多技巧:
- 梯度累积:小batch多次累积,模拟大batch效果
- 混合精度:用bfloat16节省显存
- 分布式训练:多GPU并行训练
- 检查点保存:支持断点续训
4. 怎么用这个模型?
简单对话
1 | from khaosz import Khaosz |
流式输出(打字机效果)
1 | response_size = 0 |
检索增强(RAG)
如果你想让模型回答特定领域的问题,可以用RAG功能:
1 | # 模型会先检索相关知识,再生成回答 |
5. 怎么训练自己的模型?
准备数据
把你的文本数据整理好,可以是中文、英文或混合文本。建议先用分词器处理一下,保存成token格式。
安装依赖
1 | pip install -r requirements.txt |
开始训练
1 | python tools/train.py \ |
6. 项目特色
优点
- 轻量高效:1B参数,普通显卡就能跑
- 双语支持:中英文都表现不错
- 完整流程:从预训练到微调都有
- 易于使用:API设计得很简单
局限性
- 规模限制:相比大模型,复杂任务能力有限
- 过拟合风险:数据少时容易记住训练数据
- 多语言支持:主要针对中英文
7. 未来计划
接下来我打算:
- 尝试更大的模型规模(7B、13B)
- 加入多模态能力(图像理解)
- 优化长文本处理
- 提供更便捷的微调接口
8. 欢迎参与!
这个项目已经开源在HuggingFace上,欢迎大家:
- 下载模型试用
- 提出改进建议
- 贡献代码
- 分享使用经验
项目地址:
HuggingFace
Github
9. 最后想说
训练一个LLM真的挺有成就感的,虽然过程很辛苦,但看到模型能理解你的问题并给出回答时,那种感觉真的很棒!
如果你也对AI感兴趣,不妨从这个小项目开始,亲手体验一下训练模型的乐趣。记住,重要的不是模型有多大,而是你能用它做什么。
希望我的分享对你有帮助!如果有任何问题,欢迎在评论区交流~
写于 2026年1月4日
一个热爱AI的开发者