type
status
date
slug
summary
tags
category
icon
password
Description
一个知识库运营体系:

运营过程中,针对漏洞及应急常识回答较好。
因为模型自带的道德限制没有去掉,所以有时候会回答“我不能回答关于漏洞/免杀的内容”。
还有一些比较具体的问题回答得不太好,比如下面要说的:用大模型生成天眼查的查询语句。我们试了一下,把查询语句的规则放进知识库后,大模型还是不能理解,没法输出正确的查询语句,放了一些例子问答进去也没什么用。所以我们就想试试用微调来解决。
什么是微调
微调(Fine-tuning)就是在已经训练好的模型基础上,再用新的数据进行训练,让模型更适合特定的任务或领域。这样做可以用少量的数据来调整模型,让它在这个任务上表现更好。微调的步骤一般是:
1. 先加载预训练好的模型;
2. 准备好特定任务的数据集;
3. 开始训练模型;
4. 验证训练效果并进行调整。
简单来说,微调就是用特定的数据集对某个知识进行有针对性的训练。比如教一个人学习技能,微调的步骤就像:
1. 找到这个人;
2. 给他乘法口诀表;
3. 通过背诵来训练;
4. 问他学会了没有。知识库的方式就像是,提问后直接在书里查找答案。
微调中最常用的是LoRA技术。微调大型语言模型需要占用很多显存,LoRA的主要作用是用时间换空间,也就是通过增加运行时间来减少内存占用。下午的微调也使用了LoRA方法。
对Qwen-1.8B-Chat进行微调
加载预训练模型
首先下载Qwen存储库:
返回:
移动到下载的目录中,并查看当前目录:
返回:
导入Qwen-1.8B-Chat模型:
返回:
准备特定任务的数据集
生成500份训练数据,主要是查询源IP和目录IP的语句:
返回:
训练模型
利用模型脚本利用lora开始进行微调:
返回:
验证和调整
将训练完成的模型进行合并:
返回:
用10条数据进行测试查看输出效果:
返回:
可以看到效果很好,输出内容完全正常且完美的进行了格式化。
接下来尝试更加复杂的语句。
生成500份训练数据:
返回:
然后重复进行上述的训练和合并,对训练结果进行测试:
返回:
数据集是脚本生成,所以在表达上有些生硬,但是结果完全正确。


