大模型微调实践
云开发机配合模型平台,开发了多个基于公开算法的常见大模型的算法微调,用户可通过简单的几行代码,即可在开发机内完成对于大模型的微调训练。
- 环境准备: 首先,请选择开发机官方镜像中,两个基于Transformer的镜像:
centos7-py3.10-cuda11.8-cudnn8-transformer4.30.0
ubuntu20.04-py3.10-cuda11.8-cudnn8-transformer4.30.0
这两个镜像内预置了基于 Transformer 以及公开算法库所依赖的组件包,可以实现开箱即用。 您需要根据需要使用的大模型的参数规模和大小,以及微调的方式,选择不同规格的云开发机。
前期准备:
当您进入云开发机后,可通过以下几步完成前期算法库的准备。您也可以通过其他镜像来完成相应算法库的安装,只是依赖的组件较多,会有一定的环境安装、准备时间。
git clone --recursive https://amp-git.sensecoreapi.cn/public_algorithms/fastfinetune.git #需根据实际域名替换相应算法库链接
cd fastfinetune
pip3 install -e .大模型微调训练:
算法库提供了基于lora或者peft的两种不同的微调方式,因这两种算法对应的模型参数的训练量不同,因此需要不同的开发机资源规格配置。通常对于一个不超过 20GB 的大模型,1 张 A100/A800 的云开发机,即可完成 lora 的训练,而若用户需要跑 peft 的微调,则推荐使用 2 卡以上的云开发机。
非并行训练:
python3 train.py {config}
例如:
python train.py ./configs/LLaMA/llama_7b_configs/llama_7b_loraft.json
数据并行训练(ddp):
sh dist_train.sh {config} {nproc_per_node} {nnodes}
例如:
sh dist_train.sh ./configs/LLaMA/llama_7b_configs/llama_7b_ft.json 8 1
您可以通过对config内的结构化内容进行修改配置,来达成自定义的训练配置。
大模型评估: 同样,算法库提供了对微调完的大模型进行评估的功能,您可以通过以下命令来完成评估任务。
python3 eval.py {config}
例如:
python eval.py ./configs/Pythia/pythia_6.9b_configs/pythia_6.9b_ft.json
同样,您可以通过对config内的结构化内容进行修改配置,来达成自定义的评估配置。