环境配置
模型微调的相关脚本在/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文件进行训练和推理,注意更改命令中模型和数据集所在的真实路径