SFT,全称是Supervised Fine-Tuning,监督微调。个人理解就是通过对预计预训练好的大模型做二次训练,让大模型从一个全能型人才转为特定领域的专家,是一个从通才转为专才的过程。举个例子,大模型A在数学微积分方面只能拿到80分,模型幻觉率5%,通过对模型进行微调,理论上是可以让他在微积分方面拿到99分,模型幻觉率0.5%,当然这个过程不是那么简单,里面还需要做很多的优化,影响的因素比如数据集的质量,训练轮次,微调方案选型等等。
在电商或者商业化业务中,尤其是一些问答类的场景,可以通过使用企业内部私有的知识库数据集,对一些基础模型,比如Qwen-8B,进行私有化部署,然后做SFT,最终可以让模型在回答企业特定场景问题的情况下,做到一个相对更加精准的回复。
SFT前的准备
数据准备
SFT,数据质量是关键,最终效果的好坏很大程度上取决于数据质量,整体上,质大于量,一个普通的SFT,大概准备几千条高质量的数据即可,最常见的格式是1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17{
"messages": [
{
"role": "system",
"content": "你是一个AI助手"
},
{
"role": "user",
"content": "什么是SFT?"
},
{
"role": "assistant",
"content": "SFT是xxx"
}
],
...
}
这里也可以看看HuggingFace上面的一些优质的数据集。
数据往往分为训练集,验证集和测试集,分别对应日常学习,模拟考试和期末考试
机器准备
我们需要准备有GPU算力的服务器,这里可以用目前主流云平台的一些封装好的能力,还有一种方式是租用GPU,我主要是用autodl这个平台的算力。