以下
文
章来源于微信公众号:码科智能
作者:码
科智能
链接:https://mp.weixin.qq.com/s/6cKz1o4Wm54RcNs2xjgDPQ
本文仅用于学术分享,如有侵权,请联系
后
台作删文处理
很多人都觉得训练大模型是个很难的事情,一方面是技术难,大部分的程序员都搞不出来,另一方面是设备难,百亿参数个人设备训练很难达到要求。而本文将从零开始教大家在有限的设备下训练自己的大模型,只需要3小时,就能训练一个26M参数的大模型,最低2G显卡就能推理。
在大型语言模型(LLM)领域,模型如GPT、LLaMA、GLM等虽然表现出色,但它们庞大的参数量(高达100亿)使得个人设备难以承担训练和推理的显存需求。仅仅通过如LoRA等微调技术来让这些大模型学习新指令的方式并未触及大模型学习的本质。同时,市面上充斥着大量付费课程和订阅服务,它们提供的AI教程质量参差不齐,进一步增加了学习者理解LLM的难度。
本文推荐的开源项目旨在大幅降低使用LLM的门槛,
完全从0开始,最快仅用3小时!即可训练出仅为26M大小的微型语言模型MiniMind!
-
MiniMind的体积仅为GPT-3的千分之一,使得即使是最普通的个人GPU也能轻松进行快速推理和训练。
-
MiniMind在DeepSeek-V2和Llama3的基础上进行了改进,涵盖了数据处理、预训练、监督式微调(SFT)、LoRA微调以及直接偏好优化(DPO)等完整阶段,并集成了混合专家(MoE)模型。
-
该项目不仅是一个开源模型,也是一个LLM入门教程,旨在激发更多创新。
项目链接:
https://jingyaogong.github.io/minimind/
在线体验:
https://www.modelscope.cn/studios/gongjy/minimind
1. 开源项目内容概述及模型简介
期望这个项目能够成为LLM初学者的快速入门工具,
项目包含:
-
公开MiniMind模型代码(包含Dense和MoE模型)、Pretrain、SFT指令微调、LoRA微调、DPO偏好优化的全过程代码、数据集和来源。
-
兼容transformers、accelerate、trl、peft等流行框架。
-
训练支持单机单卡、单机多卡(DDP、DeepSpeed)训练。训练过程中支持在任意位置停止,及在任意位置继续训练。
-
-
实现Openai-Api基本的chat接口,便于集成到第三方ChatUI使用(FastGPT、Open-WebUI等)。
minimind训练了3个型号模型,最小仅需26M(0.02B),即可具备流畅的对话能力!
该分析在一个带有Torch 2.1.2、CUDA 12.2和Flash Attention 2的RTX 3090 GPU上运行。
MiniMind-Dense(和Llama3.1一样)使用了Transformer的Decoder-Only结构,跟GPT-3的区别在于:
-
采用了GPT-3的预标准化方法,也就是在每个Transformer子层的输入上进行归一化,而不是在输出上。具体来说,使用的是RMSNorm归一化函数。
-
用SwiGLU激活函数替代了ReLU,这样做是为了提高性能。
-
像GPT-Neo一样,去掉了绝对位置嵌入,改用了旋转位置嵌入(RoPE),这样在处理超出训练长度的推理时效果更好。
2. 数据源及对话效果
Pretrain数据
:Seq-Monkey通用文本数据集由多种公开来源的数据汇总清洗而成,包括网页、百科、博客、开源代码、书籍等。数据以JSONL格式整理,并经过严格筛选和去重,确保全面性、规模、可信性和高质量。数据总量约10B token,适合中文大语言模型的预训练。
SFT数据
:匠数大模型SFT数据集是一个完整、格式统一、安全的大模型训练和研究资源。该数据集从网络上的公开数据源收集并整理了大量开源数据集,进行了格式统一和数据清洗,包含10M条数据的中文数据集和2M条数据的英文数据集。总量约3B token,适合中文大语言模型的SFT。
DPO数据
:大约合并后共8万条dpo数据,这些人工标注的偏好数据均来自活字模型,可用于训练奖励模型,优化模型回复质量,使其更符合人类偏好。
更多数据集
:
HqWu-HITCS/Awesome-Chinese-LLM
在收集和梳理中文LLM相关的开源模型、应用
、数据集及教程等资料。
对话测试效果
推荐阅读