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/

image

​ 3.打开evaluate.sh,将CHECKPOINT改成输出结果的更改为训练时保存的 checkpoint 名称,同时将step从3000改成1000,运行以下指令进行模型推理和评测:

bash evaluate.sh

生成的结果保存在 ./output/adgen-chatglm-6b-pt-8-1e-2/generated_predictions.txt中。

image

使用自己的数据集:

​ 修改 train.shevaluate.sh 中的 train_filevalidation_filetest_file为你自己的 JSON 格式数据集路径,并将 prompt_columnresponse_column 改为 JSON 文件中输入文本和输出文本对应的 KEY。

​ 其中train.sh 中的 PRE_SEQ_LENLR 分别是 soft prompt 长度和训练的学习率,可以进行调节以取得最佳的效果。P-Tuning-v2 方法会冻结全部的模型参数,可通过调整 quantization_bit 来被原始模型的量化等级,不加此选项则为 FP16 精度加载。

​ 在默认配置 quantization_bit=4per_device_train_batch_size=1gradient_accumulation_steps=16 下,INT4 的模型参数被冻结,一次训练迭代会以 1 的批处理大小进行 16 次累加的前后向传播,等效为 16 的总批处理大小,此时最低只需 6.7G 显存。若想在同等批处理大小下提升训练效率,可在二者乘积不变的情况下,加大 per_device_train_batch_size 的值,但也会带来更多的显存消耗,请根据实际情况酌情调整。

image

image

posted @ 2023-05-06 10:06  AlphaInf  阅读(295)  评论(0编辑  收藏  举报