租用 GPU 训练 minimind 模型

302 阅读2分钟

训练 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 的时候需要进入文件夹里面进行压缩,否则会多嵌套一层,再解压的时候带来麻烦。