自然语言训练似乎一夜之间就被chatgpt带火了。而因为我们需要做自然语言训练开发,所以就找了清华大学的chatglm来开发。在部署中我们遇到了很多的问题,当然也是各种百度去解决。最终功夫不负有心人,我们尝试了各种方法,完成了整体的训练。下面我就把完整的流程和你肯定会遇到的错误提示一一写明修改方式。
一、环境
1、首先不推荐华为的免费试用空间,那个空间不支持cuda,所以说运行的时候会报找不到libcuda.so.1,这个错误解决不了。
2、我用的是阿里云的PAI环境,阿里云是有免费的探索者版,但是探索者版能做到的,最多就是告诉你这个代码能不能跑。可以训练,但是4g的内存太小了,训练数据直接就干炸了。
首先在阿里云要先创建一个DSW,选择ecs.gn7i-c8g1.2xlarge即可,最重要的是,在官方镜像中,一定要选择pytorch,py39版本的。否则是无法运行numba的。
3、创建好了之后,需要等待很长一段时间准备环境。
4、进入之后,新建一个Terminal,然后输入
git clone https://github.com/THUDM/ChatGLM-6B
,然后会生成一个ChatGLM-6B文件夹。
5、打开文件夹,有一个requirements.txt文件,右键点击,选择copy path(这个操作会经常用到,我会简称cp一下)。在命令行输入:pip install -r ctv
(ctv为ctrl+v,粘贴一下cp的内容),回车。会安装好。之后再pip install四个文件:
pip install jiebapip install rouge_chinesepip install nltkpip install datasets
在根目录建一个文件夹,名称training。这个我们留着后面用到。
7、打开ChatGLM-6B中ptuning文件夹,里面有两个文件非常重要,一个是train.sh,一个是main.py入口文件。
8、打开train.py文件,我们要修改几个东西:
① 首先把python3改成python,这里如果不修改,你会遇到找不到numpy的报错;
② cp一下main.py,把python后面的main.py改成cp的内容,粘贴一下;
③ train_file和validation_file是你要训练的文件的路径,这就是第三大步在根目录建的training的原因。
这三步做完,保存退出。
9、这时候开始写你需要训练的文件。首先先说训练文件必须是json格式,“content”是输入的问题,“summary”是输出的内容。但是这里我们要注意第二个问题,就是我们在本地用dict[key]=value的形式写成字典的时候,返回的值是单引号的,这时候一定要改成双引号。比如{“content”:“1”,“summary”:“2”},而不是{‘content’:‘1’,‘summary’:‘2’}。最后将文件保存成.json格式。然后在数据中,如果有\n\r的也是无法被json的。
10、把文件传到training目录下,cp一下路径,将train.sh文件中train_file和validation_file后面改为cp的路径。
11、这时候返回Terminal,cp一下train.sh,输入
bash cp路径/train.sh
即可启动训练。
对于windows系统,最难的也是环境配置,这里再重申一遍硬件配置:
python:3.9
内存最低:16g
显存最低:16g
硬盘一定是固态硬盘。
来源地址:https://blog.csdn.net/miaoxingjundada/article/details/130189919