
DeepSeek,如何3小时完全从0训练自己的大模型
随着人工智能领域的迅猛发展,大语言模型(LLM)成为了当下最热门的研究方向之一。从ChatGPT到DeepSeek,每一个新发布的大模型都让世界为之一震,带来了极大的影响力。然而,这些大模型背后的训练过程通常需要庞大的硬件支持和深厚的技术积累,让大多数个人开发者和小团队难以涉足。
随着人工智能领域的迅猛发展,大语言模型(LLM)成为了当下最热门的研究方向之一。从ChatGPT到DeepSeek,每一个新发布的大模型都让世界为之一震,带来了极大的影响力。然而,这些大模型背后的训练过程通常需要庞大的硬件支持和深厚的技术积累,让大多数个人开发者和小团队难以涉足。然而,今天我们将要介绍的MiniMind项目,将彻底改变这一现状。它让每个人都能够以极低的成本和硬件要求,从零开始训练出一个迷你版的ChatGPT!
MiniMind项目亮点
超轻量化设计,突破硬件限制
MiniMind最小版本的模型仅为25.8MB,相当于GPT-3的1/7000。这种极简化的设计使得即便是普通的个人GPU(例如NVIDIA RTX 3090)也能够训练这个模型,从而降低了大语言模型训练的硬件门槛。通过合理的架构设计,MiniMind的模型结构被压缩到可以在较低性能的设备上运行,并且保持了较高的效率和质量。
开源的完整训练流程
MiniMind并不是一个现成的推理模型,而是一个完整的训练过程,让开发者能够从零开始训练一个大语言模型。该项目提供了完整的代码,涵盖了从数据清洗、预训练、监督微调、LoRA微调到偏好强化学习(DPO)、模型蒸馏等所有步骤。最重要的是,所有的代码都是使用PyTorch原生框架重构的,没有依赖任何第三方抽象接口,这使得每个细节都可以被开发者理解和修改。
支持多模态任务
MiniMind不仅仅局限于文本处理,它还支持多模态任务(如图像理解),可以扩展到更广泛的应用场景。通过MiniMind-V的扩展,项目提供了处理视觉信息的能力,使得MiniMind不仅能够进行对话任务,还能够处理图像描述等任务。
快速开始
第0步:克隆项目
首先,你需要克隆MiniMind的代码库:
git clone https://github.com/jingyaogong/minimind.git
Ⅰ 测试已有模型效果
-
环境准备
在开始之前,你需要安装所有的依赖项:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
-
下载模型
你可以直接从Hugging Face下载已有的MiniMind模型:
git clone https://huggingface.co/jingyaogong/MiniMind2
-
命令行问答
使用以下命令测试模型效果:
python eval_model.py --load 1 --model_mode 2
参数
--load 1
表示从Hugging Face模型加载,而--model_mode 2
表示使用的模型为MiniMind2。 -
启动Web UI
如果你想使用Web界面进行交互,执行以下命令:
pip install streamlit # 如果未安装Streamlit cd scripts streamlit run web_demo.py
Ⅱ 从0开始自己训练
-
环境准备
和上面的步骤一样,你需要安装所有依赖:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
在开始训练之前,请确保Torch支持CUDA:
import torch print(torch.cuda.is_available())
-
数据下载
你需要下载相关的数据集并放到
./dataset
目录下。具体数据集的下载链接会在项目文档中提供。 -
开始训练
3.1 预训练(学知识)
执行预训练脚本:
python train_pretrain.py
这将会使用你提供的数据集进行模型的基础知识训练,生成
pretrain_*.pth
文件作为输出。3.2 监督微调(学对话方式)
执行指令微调:
python train_full_sft.py
这一步将使模型在对话任务上进行微调,生成
full_sft_*.pth
文件。 -
测试模型效果
在训练完成后,你可以测试模型的效果。确保训练生成的模型文件位于
./out/
目录下,然后运行:python eval_model.py --model_mode 1 # 测试微调后的模型
如果你只想测试预训练模型,设置
--model_mode 0
即可。
数据集和训练准备
Ⅰ Tokenizer
分词器(Tokenizer)是语言模型训练中的一个关键步骤。MiniMind使用了一个简化版的tokenizer,以控制词表的大小并减少计算开销。你可以选择自己训练词典,或者使用现成的tokenizer来加速训练。
Ⅱ 预训练数据(Pretrain Data)
预训练数据用于模型的初步训练,MiniMind采用了一些高质量的数据集(例如pretrain_hq.jsonl
),经过清洗和格式化,可以用来为模型提供基本的语言知识。
Ⅲ 监督微调数据(SFT Data)
监督微调数据集用于帮助模型学习对话的结构和行为,MiniMind已经准备了多个中文和英文的对话数据集,帮助模型在实际对话中更加自然。
Ⅳ 强化学习数据(RLHF Data)
MiniMind还使用了强化学习优化模型,使得其回答更加符合用户的偏好。dpo.jsonl
文件包含了训练数据,经过进一步优化,可以使得模型更好地回应用户的提问。
Ⅴ Reason数据集
Reason数据集主要用于推理任务,它结合了Llama3.1和DeepSeek的技术,模拟了人类的推理过程,进一步提升了模型的推理能力。
Ⅵ 更多数据集
MiniMind不断更新数据集,包括中文的LLM相关数据集、中文对话数据集等,确保模型在多个任务中都能得到优化。
MiniMind训练数据集 (无需全部clone,可单独下载所需的文件 )
ModelScope: :https://www.modelscope.cn/datasets/gongjy/minimind_dataset/files
HuggingFace::https://huggingface.co/datasets/jingyaogong/minimind_dataset/tree/main
将下载的数据集文件放到./dataset/
目录下(✨为推荐的必须项)
./dataset/
├── dpo.jsonl (909MB)
├── lora_identity.jsonl (22.8KB)
├── lora_medical.jsonl (34MB)
├── pretrain_hq.jsonl (1.6GB, ✨)
├── r1_mix_1024.jsonl (340MB)
├── sft_1024.jsonl (5.6GB)
├── sft_2048.jsonl (9GB)
├── sft_512.jsonl (7.5GB)
├── sft_mini_512.jsonl (1.2GB, ✨)
└── tokenizer_train.jsonl (1GB)
注:各数据集简介
-
dpo.jsonl
--RLHF阶段数据集 -
lora_identity.jsonl
--自我认知数据集(例如:你是谁?我是minimind...),推荐用于lora训练(亦可用于全参SFT,勿被名字局限) -
lora_medical.jsonl
--医疗问答数据集,推荐用于lora训练(亦可用于全参SFT,勿被名字局限) -
pretrain_hq.jsonl
✨ --预训练数据集,整合自jiangshu科技 -
r1_mix_1024.jsonl
--DeepSeek-R1-1.5B蒸馏数据,每条数据字符最大长度为1024(因此训练时设置max_seq_len=1024) -
sft_1024.jsonl
--整合自Qwen2.5蒸馏数据(是sft_2048的子集),每条数据字符最大长度为1024(因此训练时设置max_seq_len=1024) -
sft_2048.jsonl
--整合自Qwen2.5蒸馏数据,每条数据字符最大长度为2048(因此训练时设置max_seq_len=2048) -
sft_512.jsonl
--整合自匠数科技SFT数据,每条数据字符最大长度为512(因此训练时设置max_seq_len=512) -
sft_mini_512.jsonl
✨ --极简整合自匠数科技SFT数据+Qwen2.5蒸馏数据(用于快速训练Zero模型),每条数据字符最大长度为512(因此训练时设置max_seq_len=512) -
tokenizer_train.jsonl
--均来自于匠数大模型数据集
,这部分数据相对次要,(不推荐自己重复训练tokenizer,理由如上)如需自己训练tokenizer可以自由选择数据集。
训练策略和模型结构
MiniMind的模型采用了Transformer的Decoder-Only结构,类似于GPT-3,但在架构上做了一些创新。例如,使用了旋转位置嵌入(RoPE),避免了传统位置嵌入在处理长文本时的局限性。MiniMind还实现了一个创新的混合专家模型(MoE),这进一步提升了模型的计算效率和处理能力。
总结:MiniMind让大语言模型训练的门槛大大降低,任何拥有基本计算资源的开发者都可以从零开始训练一个小型大语言模型。
MiniMind都是一个值得探索的项目。通过简单的几步,你就可以完成训练,并在此基础上进行优化和改进。
让我们一起从零开始,感受人工智能创造的魅力吧!
MiniMind项目地址
https://github.com/jingyaogong/minimind
更多推荐
所有评论(0)