- peft 需要安装指定版本,可以安装本地版本(peft-main)
- 同时要根据自己模型的不同特点选择不同的target_modules=[xxx]
- modules_to_save:除了lora部分之外,还有哪些层可以被训练,并且需要保存
- 模型中的get_position_ids 需要改成 context_length = len(seq)
- 模型中的padding与以往方式不同
- 原有格式为 [que] + [reply]
- 需要改为 [que + [tokenizer.mask_token_id]] + [pad_token]*n + [ [tokenizer.bos_token_id]+ reply + [tokenizer.eop_token_id]]
- 模型中只允许bs为1进行训练,如果想多bs需要自行修改代码,已修改好
- train.py:为lora微调
- demo.py:为demo代码
- pip install -r requirements.txt
- 请提前下载好chatglm-6b权重,参考[https://huggingface.co/THUDM/chatglm-6b],放在model文件夹下 !函数不要进行修改
- 运行train.py即可
- 可以指定多gpu进行模型并行,可以根据模型大小设置不同的batch_size,但是无法进行数据并行
- 参考:8卡batch_size为4,每张卡10G
- 首先按照配置环境步骤配置环境
- 运行demo.py即可 !注意:需要使用gpu
- 各个参数含义
- model_path:原始chatglm模型的存放地址,./model
- peft_path:lora微调后的模型存放地址,./Fine_Tuning_Results/lora_2e-5/lora.p
- gpu_id:全部能使用的gpu_id,默认为'0',可以设置不同的gpu'0,1,2,3,4,5,6,7'
- 输入,默认模型不具备记忆能力,如果想进行多轮对话,需要手动输入history
- 不进行多轮对话,直接输入问题:Q
- 进行多轮对话,具体输入形式为:Q1[\n]A1[\n]Q2[\n]A2[\n]Q3 !使用 [\n] 对问题和答案进行分割
- 各个参数含义
- 提示:
- 半精度单卡显存:lora:15G