训练 minimind
1. 选择 conda 版本的云服务器,具体配置为
Miniconda conda3
Python 3.10(ubuntu22.04)
CUDA 11.8
2. 创建一个新的 python 环境,然后安装合适的版本
mkdir mini
cd mini
conda create --name mini python=3.11.3 # 选择 y 表示同意继续
conda init bash
# 此处需要重新启动终端
conda activate mini
# 需要特定的 python 和 pip 版本号
pip install pip==22.3.1
3. 将 minimind 的 requirements.txt 复制到根目录下,然后安装
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
4. 将整个 minimind 项目放置到根目录下
git clone https://github.com/jingyaogong/minimind.git
5. 将 MiniMind2 项目拉取下来然后放在 minimind 里面,而不是根目录下
git clone https://huggingface.co/jingyaogong/MiniMind2
5 和 6 可以事先准备一个 tar 格式的压缩包,然后复制到服务器上,使用下面的命令解压缩
tar -xvf minimind.tar
这样做会得到一个名为 minimind 的文件夹。使用 cd minimind 命令进入到这个目录中进行后续操作。
保险起见,可以在安装一次依赖:
pip install -r requirements.txt
6. 在 minimind 目录下打开终端,运行下面的命令检测 MiniMind2 模型
# load=0: load from pytorch model, load=1: load from transformers-hf model
python eval_model.py --load 1 --model_mode 2
如果在 windows 环境下,还可以打开 ui 界面
pip install streamlit
cd scripts
streamlit run web_demo.py
7. 在 minimind 文件夹下创建名为 dataset 的文件夹
8. 来到 https://www.modelscope.cn/datasets/gongjy/minimind_dataset 下载
pretrain_hq.jsonl
sft_mini_512.jsonl
9. 将两个训练用的文件放在 dataset 文件夹下面
10. 使用下面的命令训练知识能力
python train_pretrain.py
11. 使用下面的命令训练对话能力
python train_full_sft.py
12. 上述两个模型都是每隔 100 步保存训练的模型一次,保存在 minimind 的 out 文件夹下面
如果不是训练的模型可以使用别人训练好的模型,这个时候创建名为 out 的文件夹,将训练好的模型 pt 文件放在 out 下面
13. 使用如下命令测试刚才训练的模型
python eval_model.py --model_mode 1 # 默认为0:测试pretrain模型效果,设置为1:测试full_sft模型效果
14. 测试多卡调试
torchrun --nproc_per_node 3 train_xxx.py
其中 xxx 可以是:
- dpo
- full_sft
- lora
- pretrain
- distill_reason
等。
tips
1. 查看某个库的版本,以 torch 为例
python -c "import torch; print(torch.__version__)"
2. linux 下安装 miniconda
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
3. 改变 pip 的版本
pip install pip==22.3.1
4. 查看 cuda 的可访问性
python -c "import torch; print(torch.cuda.is_available())"
5. 项目的文件结构
- root
- minimind
- MiniMind2
- out
- dataset
- ...
需要注意的是:在压缩 minimind 的时候需要进入文件夹里面进行压缩,否则会多嵌套一层,再解压的时候带来麻烦。