一、说在前面 训练基座大模型那都是大公司们的事情,普通人、普通公司肯定是玩不起的,但是作为一个技术人,你可以不去做真正的大模型训练,但是你还是有必要知道和了解一下一个大模型是如何训练出来的。 而GPT_teacher-3.37M-cn 是一个很好的示例项目,让你可以用一台普通的PC,用CPU来训练一个3.37M的中文GPT模型,整个训练耗时不到20分钟,回答训练集里的问题的效果也还是挺不错的。感兴趣的同学可以用这个项目来练手、实操复现一下“自己动手从0开始训练一个大模型”的完整流程。 二、项目概述 一个轻量级中文GPT模型项目,专为在CPU上快速训练和演示而设计: 模型参数量:3.37M架构:4层Transformer解码器特点:使用RMSNorm、RoPE位置编码、权重共享等优化技术目标:45分钟内在普通CPU上训练出可用的中文问答模型 参考训练时长: 三、完整复现流程 介绍完了,就让我们来实操整个从0到1的训练吧。 先下载代码: 1. 环境准备 依赖项包括: 2. 构建中文分词器 这将: 3. 配置文件确认 config.yaml包含了所有必要配置,我在这里给每个参数加了个说明,以便于理解每个参数的意义。 4. 执行训练 5. 测试模型 训练完成后,根据src/train.py中的代码,最终会在config.yaml指定的目录下(checkpoints)生成一个标准的模型,以及一个量化的模型,分别是: 然后你可以用下面的命令来测试一下训练集(位于data/train.jsonl)里的一些问题: 四、关键技术点解析 在这个示例的大模型训练里,我们基于Decoder-only的Transformer(因果语言模型),使用下三角掩码确保每次只关注历史信息,这正是GPT系列模型能够生成连贯文本的核心。 1. 训练参数说明 具体的训练参数我在上面的config.yaml里给每个参数都写了一个注释,用于说明每个参数的意义。而总结概括一下这个配置参数的话,主要如下: 2. 关键代码 五、补充说明 1. 仅3.37M参数远达不到scale law 这个项目只是一个演示项目,教你如何自己动手从0到1来训练一个大模型,但是必须要知道的是大模型有个别称是 scale law,所以走传统transfomer路线的话,注意力是非常吃参数的,这么一个参数量,其输出完全肯定不会非常好(除非你问的就是训练集里的知识)。同时在这个项目的训练集(位于data/train.jsonl)里你也可以看到,虽然有510条训练数据,但实际上里面的内容全是Ctrl C + Ctrl V出来的,真正的prompt和completion就几条。 2. 为什么问一些不在训练集里的问题时,返回乱七八糟的东西,而不是“不知道” 大模型的本质是一个词语接龙游戏,每出一个字,根据概率去预测下一个字是什么。其目标是生成流畅的文本,而不是正确的文本,它只是在模仿训练集里的文本概率,而不是真正的理解内容,所以最终的效果完全取决于你给它的训练数据。因此,当你去问不在训练集里的问题的时候,大模型就只能随便的去猜下一个字可能是什么字,而不是直接给你回答一个“不知道”,这也是大模型“幻觉”的由来。 3. 关于大模型幻觉 大模型幻觉主要有四种幻觉类型:前后矛盾,提示词误解,事实性幻觉,逻辑错误。幻觉主要有三大成因:数据质量问题,生成机制缺陷,模糊指令。幻觉通常有五种解决方案:精准提示词、示例学习、调参、RAG技术、幻觉检测方案,并让大模型学会给答案标注“参考文献”(溯源)。 […]
Daily Archives: 2025-11-09
1 post