ChatGLM 微调 踩坑记录

环境配置

模型微调的相关脚本在/ChatGLM3/finetune_chatmodel_demo文件夹下.

首先创建了微调环境:

#创建名为“ChatGLM3-Tuning”且版本为3.10的python环境
conda create -n ChatGLM3-tuning python=3.10

#激活进入该环境
conda activate ChatGLM3-tuning

#在该环境下安装所需依赖
pip install -r requirements.txt

#安装 Jupyter 内核
ipython kernel install --name  ChatGLM3-tuning --user

数据集

官方采用的数据集是AdvertiseGen数据集,我们下载AdvertiseGen后,将其放在自建的data文件夹下。

分析AdvertiseGen数据集的格式,我们可以发现其格式为:

{
    "conversations": [
        {"role": "user", "content": "类型#裙*裙长#半身裙"}, 
        {"role": "assistant", "content": "这款百搭时尚的仙女半身裙,整体设计非常的                    飘逸随性,穿上之后每个女孩子都能瞬间变成小仙女啦。料子非常的轻盈,透气性也很好,穿到夏天也很舒适。"}
    ]
}

我们对于自己的任务创建和该微调数据集一样格式的数据

导入PICO数据集到服务器,由于PICO是.ann类型的标注文件,我们需要把PICO文件转化成json格式的文件,并作为输入文件。

转化如下:

nub_train = len(glob('./pico' + '/*.ann'))

with open(r"train.json", 'r') as f:
    content = json.load(f)

#json_list = []
for ann_path in tqdm(glob('./pico' + '/*.ann')):
    
    file_no = ann_path.split('/')[-1].split('.')[0]
    df_k = pd.read_csv(r'./pico/'+file_no+'.ann', sep='^([^\s]*)\s', engine='python', header=None).drop(0, axis=1)
    with open(r'./pico/'+file_no+'.txt') as f:
        in_k = f.read()
        
    out_k = ""
    for i in range(df_k.shape[0]):
        tempi_1 = np.array(df_k)[i,1]
        out_k = out_k+tempi_1.split(' ')[0]+'\t'+tempi_1.split('\t')[-1]+'\n'
        
    dict_temp = {
                "instruction":in_k, 
                 "input": "", 
                 "output":out_k
            }
    content.update(dict_temp)

with open(r"train.json", 'w') as write_f:
	json.dump(json_list, write_f)

转化完成后,得到train.json和test.json文件,其中由于是微调任务,我们可以直接将train的一部分用来test,减小工作量。

进入load_finetune文件,根据其中的指示步骤进行微调。

按照要求,更改数据集所在的路径

运行成功后获得转换数据格式成功的数据集。这里我们直接让其对train.json文件进行格式转换。

依次按照步骤,采用处理后的json文件进行训练和推理,注意更改命令中模型和数据集所在的真实路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值