我想做一些模型的小型化,比如把模型安装在手机或笔记上 所以也想学学如何训练一个小模型的,
网上找了不少的资料 发现都不全 也尝试过几次 都失败了 我看到csdn上一个文字 又产生了想在试试的冲动
这次成功了!记录一下
方法还是比较简单的,过程大概就是
环境准备—>下载代码/数据集–>预训练—>有监督微调—>模型评估–>模型web交互


环境准备

硬件配置

• 云主机:ModelScope 免费提供的阿里云PAI-DSW实例(36小时免费,实际训练花费约4小时)

• CPU:8核

• 内存:32GB

• GPU:NVIDIA A10,24GB显存

• 操作系统:Ubuntu 22.04

• CUDA:12.1

• Python:3.10.16(Miniconda虚拟环境)

环境配置图

获取代码

1
2
3
4
5
6
7
8
9
10
11
# 从 GitHub 下载代码并进入项目目录
git clone https://github.com/jingyaogong/minimind.git
cd minimind

# 创建虚拟环境并激活
conda create --name minimind python=3.10.16
conda init
conda activate minimind

# 安装需要的依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

下载数据

1
2
3
4
5
# 安装 ModelScope 工具
pip install modelscope

# 下载数据集
modelscope download --dataset gongjy/minimind_dataset --local_dir ./dataset

• 数据集大小:约20GB

• 数据格式:jsonl

数据集图

预训练

1
2
# 执行预训练脚本
python train_pretrain.py

• 预训练数据:默认使用./dataset/pretrain_hq.jsonl

• 训练时间:每个 epoch 约2小时(根据硬件配置可能有所不同)

预训练图

有监督微调

1
2
# 执行有监督微调脚本
python train_full_sft.py

• 微调数据格式:对话形式,区分用户和助手

• 微调速度:比预训练略快

训练图

模型评估

自动评估

1
2
3
# 比较预训练模型和微调模型
python eval_model.py --load 0 --model_mode 0 # 预训练模型
python eval_model.py --load 0 --model_mode 1 # 微调模型

• 参数说明:

--load 0:加载本地训练的模型(位于./out目录)

--model_mode

0:预训练模型

1:微调模型

2:RLHF模型(可选)

模型评估图

人工评测

• 提问两个模型相同的问题:

• 你是谁?

• 大模型是什么东西?

• 刘德华是谁?

• 结果:

• 微调模型的回答更具针对性,对话语气和意图更明显。

• 预训练模型的回答较为发散,有时无法终止对话。

模型交互

启动 Web 页面交互

1
2
cd scripts
streamlit run web_demo.py

• 使用 Streamlit 实现的简单 Web 界面,方便与模型进行交互。