Qwen1.5-0.5B-QSplit
Introduction
Qwen1.5-0.5B-QSplit可以将问题拆分为多个子问题,并且将拆分后子问题中的代词(它,它们等等)转为对应的实体,以便保持子问题语义的完整
- 微调框架:LLaMA-Factory-0.6.3
- 底座模型:Qwen1.5-0.5B-Chat
- 数据集:alpacaquestionssplit_1k
使用方法
模型部署参考 Qwen1.5-0.5B-Chat 模型使用时,需要添加system prompt:“将以下问题拆分为多个子问题,每个子问题之间用<|sep|>分隔。如果子问题中包含代词(如它、他、他们等),拆分后的子问题需将代词替换为对应的实体。” 代码示例:
messages = [
SystemMessage(content="将以下问题拆分为多个子问题,每个子问题之间用<|sep|>分隔。如果子问题中包含代词(如它、他、他们等),拆分后的子问题需将代词替换为对应的实体。"),
HumanMessage(content=query),
]
response = await model.ainvoke(messages)
result = response.content.split("<|sep|>")
微调步骤:
- 将数据集
alpaca_questions_split_1k.json
拷贝到D:\LLaMA-Factory-0.6.3\data
目录下,并在dataset_info.json
中添加以下内容: ```json "alpacaquestionssplit": { "filename": "alpacaquestionssplit1k.json", "file_sha1": "0e0c9c59a95cf86ab7c151204c340db08ddb2ac6" }
- 微调参数:将以下微调参数添加到`D:\LLaMA-Factory-0.6.3\config\config_alpaca_questions_split.json`中,启动webui后加载该json脚本参数
```json
{
"top.model_name": "Qwen1.5-0.5B-Chat",
"top.finetuning_type": "lora",
"top.adapter_path": [],
"top.quantization_bit": "none",
"top.template": "qwen",
"top.rope_scaling": "none",
"top.booster": "none",
"train.training_stage": "Supervised Fine-Tuning",
"train.dataset_dir": "data",
"train.dataset": [
"alpaca_questions_split"
],
"train.learning_rate": "2e-4",
"train.num_train_epochs": "4.0",
"train.max_grad_norm": "1.0",
"train.max_samples": "1024",
"train.compute_type": "fp16",
"train.cutoff_len": 1024,
"train.batch_size": 4,
"train.gradient_accumulation_steps": 4,
"train.val_size": 0,
"train.lr_scheduler_type": "cosine",
"train.logging_steps": 5,
"train.save_steps": 100,
"train.warmup_steps": 0,
"train.neftune_alpha": 0,
"train.optim": "adamw_torch",
"train.resize_vocab": false,
"train.packing": false,
"train.upcast_layernorm": false,
"train.use_llama_pro": false,
"train.shift_attn": false,
"train.report_to": false,
"train.num_layer_trainable": 3,
"train.name_module_trainable": "all",
"train.lora_rank": 8,
"train.lora_alpha": 16,
"train.lora_dropout": 0.1,
"train.loraplus_lr_ratio": 0,
"train.create_new_adapter": false,
"train.use_rslora": false,
"train.use_dora": true,
"train.lora_target": "all",
"train.additional_target": "",
"train.dpo_beta": 0.1,
"train.dpo_ftx": 0,
"train.orpo_beta": 0.1,
"train.reward_model": [],
"train.use_galore": false,
"train.galore_rank": 16,
"train.galore_update_interval": 200,
"train.galore_scale": 0.25,
"train.galore_target": "all"
}
问题记录
- 问题拆分,代词替换为实体
- 子问题之间特殊符号无法分隔
- Q: 李白是谁乔峰是谁
- Q: 李白是谁,乔峰是谁 解决方法:在子问题之间添加特殊符号
- 礼貌用语、自我介绍,分割异常
- Q: 你好,请介绍一下你自己
- A: 你好,我是<|sep|>你好,我叫什么名字?
- Q: 你好,我叫小明,请问你叫什么名字,你多大了
- A: 你好,我叫小明,多大了?
- Q: 谢谢
- A: 谢谢你的邀请,有什么我可以帮助你的吗?
- Q: 感谢
- A: 感谢什么?
- Q: 感谢您的帮助
- A: 感谢您的帮助,有什么我可以帮您的吗?
解决方法:新增identity.json数据集,见
xiao-qa-generator\temp\questions_split\children_datas\identity.json
微调效果
评论