-
Notifications
You must be signed in to change notification settings - Fork 441
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
训练能跑通了,但是我这边训练的人设好像没啥效果,是训练参数问题还是训练数据问题 #59
Comments
我个人体感只 finetune attention 效果是不太行的,我把 r 增加到 32 了,然后 finetune 所有 dense layer, 包括 attention 后的 dense 和 FFN. Loss 降低到差不多 2.5 左右,有一些效果。也可以确认一下是否 load 了正确的数据集。另一方面,我觉得 ChatGLM 原模型训练的太过了,只训练很少的 lora 可能很难把原本的模型扳过来。所以可能要非常贴切还是得 finetune 整个模型。 |
谢谢,r指的是训练参数中的--lora_rank 8 吗?我刚学习,参数还不太搞的明白用处了 |
是的,我的 LoRa config 如下 peft_config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
inference_mode=False,
r=32,
lora_alpha=32,
lora_dropout=0.1,
target_modules=["query_key_value", "dense", "dense_h_to_4h", "dense_4h_to_h"],
) 需要同步的改 Inference 代码里面的 LoRA Config |
好的,谢谢,我再试一下 |
你好,我加上这个target_modules=["query_key_value", "dense", "dense_h_to_4h", "dense_4h_to_h"],训练后,调用infer.ipynb会报错,这个参数的作用是啥?可以不加的吧 |
lora是为了调linear层,这个参数的意思调哪些linear层 |
这个是调更多的 linear,如果说你训练的时候也 inject 了这些 lora,那么你推理的时候也需要这些 |
|
只需要推理的时候也增加这些就可以了,我这边是能正确 inference 的 |
谢谢回复,我这边也能推理了,但是和.json文件的答复还是不一样,感觉训练后的人设没立起来,估计训练量不够或文本量不够 |
我尝试了 target_modules=["query_key_value"]和 target_modules=["query_key_value", "dense", "dense_h_to_4h", "dense_4h_to_h"]两种方式各在我的训练集上训练了一个epoch,其中前者正确训练出了人设,后者好像没有任何影响,可以详细说说这几个参数的意义吗(或者相关文档),谢谢了 |
请教一下,你现在是用了多少的数据量 |
可以分享一下所用的训练数据中有关某一人设的数据用了多少条吗? |
epoch设置多一点、我使用五条对话训练了100epoch才让模型记住了 |
200条数据的样子 |
请问target_modules=["query_key_value", "dense", "dense_h_to_4h", "dense_4h_to_h"]中后三个参数的意思是什么 |
我这边数据集格式是
{
"instruction": "你做为一个佛学人事,请回答下面问题",
"input": "宇宙人生的真相是什么?",
"output": " 空."
},
{
"instruction": "你做为一个佛学人事,请回答下面问题",
"input": "什么是空?",
"output": " 空为物,为极微之物."
},
调用方式是
input_text = "### Instruction:你做为一个佛学人事,请回答下面问题\n ### Input:有人说你是傻瓜?\n### Response:"
#input_text = "### Input:昨天与今天,我们该如何把握?\n### Response:"
batch = tokenizer(input_text, return_tensors="pt")
out = model.generate(
#input_ids=batch["input_ids"],
input_ids=batch["input_ids"],
eos_token_id=tokenizer.eos_token_id*2,
attention_mask=torch.ones_like(batch["input_ids"]).bool(),
max_length=512,
temperature=0.9
)
out_text = tokenizer.decode(out[0])
print(out_text)
回答的问题是
Instruction:你做为一个佛学人事,请回答下面问题
Input:什么是空??
Response: 空即是色,色即是空。佛教认为一切存在都是虚幻不实的,包括物质世界和心灵世界。因此,佛教不提倡追求物质财富和享受,而是提倡追求内心的平静和解脱。佛教中的“空”并不是指完全不存在,而是强调一切存在都是虚幻不实的,包括物质和精神层面。佛教中的“色”也并不是指物质世界,而是指的是一切存在都有产生和灭亡的过程,包括物质和精神层面。因此,佛教中的“空”和“色”并不是对立的概念,而是一种相对的概念。
这个回答和我训练集的相对应的数据好像一点也不一样,我不清楚是训练的参数不对还是训练集不对,能指教一下吗
训练的参数是
python finetune.py
--dataset_path /root/autodl-fs/data/alpaca
--lora_rank 8
--per_device_train_batch_size 1
--gradient_accumulation_steps 1
--max_steps 600
--save_steps 300
--save_total_limit 2
--learning_rate 2e-5
--fp16
--remove_unused_columns false
--logging_steps 50
--output_dir /root/autodl-fs/output,
The text was updated successfully, but these errors were encountered: