CPM-1-Generate服务器部署
CPM-Generate
项目提供了 CPM-LM (2.6B) 模型的文本生成代码,用于本地测试
详细原理请看论文
1 配置环境
两种安装方式,强烈推荐docker镜像安装,apex安装易出错
1.1 命令行安装
首先安装pytorch等基础依赖,再安装APEX以支持fp16:
pip install -r requirements.txt
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
1.2 docker镜像安装
考虑apex的安装容易发生问题,我们构建了对应的Docker容器,可以进行快速环境搭建。安装方式如下:
docker pull dmye/cpm:v0
参考运行指令如下:
sudo docker run --gpus '"device=0,1"' -it -v <path>:/CPM --name=cpm cpm:v0
其中<path>
为代码所在目录,-v进行文件目录挂载
此时环境所需要的package已完全满足
2 模型下载
模型下载后文件夹的目录结构需设置如下:
.
├── 80000
│ ├── mp_rank_00_model_states.pt
│ └── mp_rank_01_model_states.pt
└── latest_checkpointed_iteration.txt
可以采用如下两种方式获取模型文件:
2.1 linux命令行下载
sudo wget https://baai.org/l/QLtmx
2.2 链接下载
下载后上传到服务器/CPM目录下即可
3 解压
下载完是一个tar.gz文件,解压到当前目录
sudo tar -xzvf model-v2.tar.gz
解压在./CPM-large文件夹内,接下来把这个目录里的文件复制到CPM根目录
sudo mv ./CPM-large/* ./
注意
如果服务器为单卡,还需要将下载的模型重新处理为单卡模型
默认的模型并行参数为2,如果需要修改,可以使用change_mp.py
,并调整generate_text.sh
中的MPSIZE
。change_mp.py
的使用示例如下:
python change_mp.py /CPM MPSIZE
这里的/CPM
为模型路径,MPSIZE
为一个整数,可以为1或者2的倍数,结果会生成一个新的模型,存储路径为/CPM_MPSIZE
。
本文中采用指令:
python change_mp.py ./CPM-large 1
最后同样需要把这个目录里的文件复制到CPM根目录
sudo mv ./CPM-large_MP1/* ./
处理后的目录结构如下图,其中CPM-large为解压后的模型,CPM-large_MP1为处理生成的单卡模型(此时为空),80000和latest_checkpointed_iteration.txt为在CPM-large_MP1中移出的模型文件。
4 运行
提供了命令行交互式生成:
sudo bash scripts/generate_text.sh ./
如不使用交互式输入,可增加第二个参数,告知输入文本的位置
sudo bash scripts/generate_text.sh ./ example.txt
注意
输入运行指令时,需要确保用户为deepspeed,否则会报错
命令行交互界面如下: