minimind/
├── dataset/ # 存放数据集的目录
├── model/ # 模型配置文件
├── out/ # 输出权重文件
├── requirements.txt # Python依赖包
├── data_process.py # 数据处理脚本
├── 1-pretrain.py # 预训练脚本
├── 2-eval.py # 模型评估脚本
├── 3-full_sft.py # 指令微调脚本
├── 4-lora_sft.py # LoRA微调脚本
├── 5-dpo_train.py # DPO训练脚本
└── 0-eval_pretrain.py # 预训练模型评估脚本
克隆项目代码
git clone https://github.com/jingyaogong/minimind.git
cd minimind
安装依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
测试 PyTorch 是否可用 CUDA
import torch
print(torch.cuda.is_available())
如果不可用,请前往 PyTorch 官网 下载相应的 .whl
文件并进行安装。
下载数据集
使用 Hugging Face CLI 下载
huggingface-cli download --resume-download jingyaogong/minimind_dataset --local-dir ./dataset --repo-type dataset --token
下载 SFT 数据
wget https://www.modelscope.cn/datasets/deepctrl/deepctrl-sft-data/resolve/master/sft_data_zh.jsonl
数据处理
将下载的数据集放入 ./dataset
目录。
运行数据处理脚本:
python data_process.py
调整模型配置
./model/LMConfig.py
中的模型参数配置:
dim
和 n_layers
:分别设置为 (512+8) 或 (768+16),对应于 minimind-v1-small
和 minimind-v1
。use_moe
参数根据需要进行调整。执行预训练
python 1-pretrain.py --data_path ./dataset/pretrain_data.csv #目前目录在这个里面,如果需要更换,则更换每个内容即可
预训练将生成 pretrain_*.pth
文件作为输出权重。
执行指令微调
python 3-full_sft.py
指令微调将生成 full_sft_*.pth
文件作为输出权重。
(可选)执行 LoRA 微调
python 4-lora_sft.py
(可选)执行 DPO 训练
python 5-dpo_train.py
确保训练完成的权重文件位于 ./out/
目录下。
评估预训练模型
python 0-eval_pretrain.py
评估对话效果
python 2-eval.py
单卡训练
python 1-pretrain.py
python 3-full_sft.py
N 卡训练(DDP)
torchrun --nproc_per_node N 1-pretrain.py
torchrun --nproc_per_node N 3-full_sft.py
- **N 卡训练(DeepSpeed)**
```bash
deepspeed --master_port 29500 --num_gpus=N 1-pretrain.py
deepspeed --master_port 29500 --num_gpus=N 3-full_sft.py
通过添加 --use_wandb
参数,可以记录训练过程:
torchrun --nproc_per_node N 1-pretrain.py --use_wandb
python 1-pretrain.py --use_wandb
可在 WandB 网站上查看训练过程。可通过修改 wandb_project
和 wandb_run_name
参数,指定项目名称和运行名称。