相信很多人都看了使用colossal-AI复现Chatgpt的流程的文章,但实际上看过了,不免有人发出“说得贼明白,就是自己做不出来”的感叹吧。本人公开一下实战过程,给有兴趣复现chatgpt流程的朋友一个参考。
一、环境搭建:
1.腾讯云购买P40 GPU服务器(T4 GPU 16G跑不动哦,OOM),该服务器是24G GPU,软件环境是:ubutun18.04+torch1.9
2.使用git clone下载colossalAI的源代码,使用了https://ghproxy.com进行了加速。
git clone https://ghproxy.com/https://github.com/hpcaitech/ColossalAI
3.搭建nvidia docker运行环境。
4. 使用nvidia的镜像(如:nvcr.io/nvidia/pytorch:22.05-py3),注意:hpcaitech/colossalai:0.2.5的镜像无法使用--gpus参数。
sudo docker pull nvcr.io/nvidia/pytorch:22.05-py3
5. 进入ColosaalAI,创建gpt容器
sudo docker run --name gpt --gpus=all --ipc=host --rm -it -v $PWD:/gpt -p 6006 -p 8888 --ulimit memlock=-1 -v /etc/localtime:/etc/localtime:ro -d nvcr.io/nvidia/pytorch:22.05-py3
6.进入gpt容器
sudo docker exec -it gpt /bin/bash
7. 在容器的/gpt/applications/ChatGPT下,安装chatgpt及依赖,使用豆瓣加速源。
pip install . -i https://pypi.douban.com/simple
二、开始训练prompt data
1.进入example目录,下载prompts.csv,可以开始运行prompts的训练了。
python train_prompts.py prompts.csv --strategy naive
2.训练完成后,生成了两个模型文件,GPU占用大概9个G左右。
三、开始训练reward model
1.在宿主服务中(非docker环境)安装git-lfs,用于管理模型中的大文件。
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
2.进入到宿主服务器的ColossalAI\applications\ChatGPT\examples目录,下载bloom-560m.
git clone https://huggingface.co/bigscience/bloom-560m
这个时间比较长,要下载3个多G的模型文件,耐心等待。
3. 在gpt容器中训练reward model
python train_reward_model.py --pretrain bloom-560m
四、运行benckmark
请参考ReadMe.md进行。
五、说明
其中带dummy后缀是随机生成的prompts,含prompts的则是使用了prompts.csv,微调训练使用的是gpt2模型,reward model训练使用的是bloom模型,benckmark使用的是opt模型,目前并没有完整的串联起来,可以根据自己的理解去实现一下。即先通过prompt方法使用大模型(如:gpt2/bloom/opt)去微调出一个actor model,然后使用带人类反馈的标注数据去训练一个reward model,再使用reward model去训练actor model,得到符合人类反馈评价的model。