chatglm-6b云端微调
下载依赖
pip install rouge_chinese nltk jieba datasets
下载训练数据集(示例)
ADGEN 数据集任务为根据输入(content)生成一段广告词(summary)。
{
"content": "类型#上衣*版型#宽松*版型#显瘦*图案#线条*衣样式#衬衫*衣袖型#泡泡袖*衣款式#抽绳",
"summary": "这件衬衫的款式非常的宽松,利落的线条可以很好的隐藏身材上的小缺点,穿在身上有着很好的显瘦效果。领口装饰了一个可爱的抽绳,漂亮的绳结展现出了十足的个性,配合时尚的泡泡袖型,尽显女性甜美可爱的气息。"
}
1.从 Google Drive 或者 Tsinghua Cloud 下载处理好的 ADGEN 数据集,注意将AdvertiseGen.tar.zip
文件解压后得到dev.json和train.json文件,再将其压缩成AdvertiseGen.zip文件,上传至云端,方法同上(目录放到ChatGLM-6B-main\ptuning中)
2.在ChatGLM-6B-main\ptuning目录下运行train.sh (不要存在多级目录)
注意要预留足够的硬盘空间!由于此处空间预留不充分,导致训练数据失败。但是好在checkpoints-1000保存下来了,可以使用。默认输出地址是./output/adgen-chatglm-6b-pt-8-1e-2/
3.打开evaluate.sh,将CHECKPOINT改成输出结果的更改为训练时保存的 checkpoint 名称,同时将step从3000改成1000,运行以下指令进行模型推理和评测:
bash evaluate.sh
生成的结果保存在 ./output/adgen-chatglm-6b-pt-8-1e-2/generated_predictions.txt
中。
使用自己的数据集:
修改 train.sh
和 evaluate.sh
中的 train_file
、validation_file
和test_file
为你自己的 JSON 格式数据集路径,并将 prompt_column
和 response_column
改为 JSON 文件中输入文本和输出文本对应的 KEY。
其中train.sh
中的 PRE_SEQ_LEN
和 LR
分别是 soft prompt 长度和训练的学习率,可以进行调节以取得最佳的效果。P-Tuning-v2 方法会冻结全部的模型参数,可通过调整 quantization_bit
来被原始模型的量化等级,不加此选项则为 FP16 精度加载。
在默认配置 quantization_bit=4
、per_device_train_batch_size=1
、gradient_accumulation_steps=16
下,INT4 的模型参数被冻结,一次训练迭代会以 1 的批处理大小进行 16 次累加的前后向传播,等效为 16 的总批处理大小,此时最低只需 6.7G 显存。若想在同等批处理大小下提升训练效率,可在二者乘积不变的情况下,加大 per_device_train_batch_size
的值,但也会带来更多的显存消耗,请根据实际情况酌情调整。