资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

文生文SFT最佳实践

本内容为您提供了SFT的支持文档,引导并指引市面上聚焦问题,帮助您方便并快速应用SFT。

视频参考

注意:本视频操作流程为历史参考版本,操作界面可能与您的平台实际有部分出入。

目录大纲

  1. 识别应用场景:首先明确目标任务和需求,通用场景如NL2SQL、阅读理解等,行业场景如作业批改、客服助手等。
  2. 数据准备与微调:确保数据质量和相关性,对数据进行清洗和预处理,必要可做数据增强。
  3. 训练配置:基于任务需求与应用场景,同时对数据集做量化统计,选择合适的模型进行训练。在训练配置中,根据需求在全量参数与LoRA中做选择。
  4. 训练结果优化:鼓励用户根据训练报告结果对模型进行优化、下一次的迭代。
  5. 训练持续迭代:当您已经使用模型完成了SFT或其他训练,我们便拥有了更多的反馈数据,结合反馈数据,在实际应用中发现需要适应其他的场景或解决特定问题时,通过持续迭代的方式可以让模型的效果更好。

一、识别应用场景

我们将SFT使用场景拆解为两个维度,从通用垂类两个维度,帮助您明确聚焦SFT可以解决的问题与场景。

通用场景

image.png

垂类场景

部分场景、仅供参考。

image.png

在以上的通用与垂直场景中,SFT能做到:

  • 任务特定性能提升:预训练语言模型通过大规模的无监督训练学习了语言的统计模式和语义表示。然而,它在特定任务上的性能可能不如在大规模无监督数据上表现出的性能。通过在任务特定的有标签数据上进行SFT,模型可以进一步学习任务相关的特征和模式,从而提高性能。
  • 提高领域适应性:预训练语言模型可能在不同领域的数据上表现不一致。通过在特定领域的有标签数据上进行SFT,可以使模型更好地适应该领域的特殊术语、结构和语义,提高在该领域任务上的效果。
  • 解决数据稀缺性:某些任务可能受制于数据的稀缺性,很难获得大规模的标签数据。SFT可以通过使用有限的标签数据来训练模型,从而在数据有限的情况下取得较好的性能。
  • 防止过拟合:在SFT过程中,通过使用有标签数据进行有监督训练,可以减少模型在特定任务上的过拟合风险。这是因为SFT过程中的有标签数据可以提供更具体的任务信号,有助于约束模型的学习,避免过多地拟合预训练过程中的无监督信号。

二、数据准备与微调

数据集准备

首先我们要明确,SFT任务需要选择多轮对话-非排序类的数据集。通常上千条左右的精标数据即可发挥良好的效果。

image.png

  1. 如图中的问答对,我们希望用户标注的数据就是正确的有效答案
  2. 如涉及到结构化的输出,我们希望用户标注的数据都是结构化的标准数据
  3. 问题与回答的类型多样、场景多样、避免重复,尽可能覆盖到全场景做到数据的多样性,避免过拟合导致模型效果不佳。当然,考虑到多样性数据收集的成本较高,下游任务finetune时可以暂时忽略指令数据的多样性。着重在具体下游任务的数据准备

针对不同用户的数据准备能力,千帆提供了多种数据集创建选项:

  1. 针对小白用户和新手开发者:
  • 预置数据集:预制数据集可以直接被用于模型训练和模型评估任务,提覆盖知识问答、对话、逻辑推理、代码能力等多个任务类型和教育、电商、文娱、金融、医疗、法律等多个行业场景,但预置数据集本身不支持用户更改。
  • 自动创建数据集:通过FQA生成问答对。自动问答生成系统,利用文心大模型从给定的文件中抽取信息生成一系列问题,并对这些问题给出答案。FQA可以对PDF、word、excel、txt等文档进行抽取解析,FQA使用用户提供的格式化文档进行文字抽取和表格抽取,对抽取后的数据进行如切片、拼接、结构化等预处理方式,从而生成真实的问答对数据。

image.png

  1. 专业用户
  • 按照数据格式和文件格式要求,在“创建数据集”页面中直接上传数据集。

数据标注

若开发者希望自主标注数据集,我们也提供了多种数据标注方式:

  • 在线标注:千帆提供手动标注和自动标注两种选项。手动标注时,用户需要对回答逐一点击标注,打开自动标注后,通过文心一言大模型批量自动生成标注结果,再进行人工复核,极大提升了标注效率。通常来说,模型回复的评价标准简单、对错容易辨别的数据标注任务,自动标注的正确率越高。如涉及主观维度标签(如趣味性、互动性、积极性等)或高难度逻辑推理过程的任务,推荐进行人工标注,自动标注准确率无法保证。
  • 多人标注:千帆支持多人在线数据,提供“数据分配、团队成员数据标注、数据审核验收”标注全流程的服务;
  • 众测标注:千帆支持提交标注人力服务的需求至百度众测。百度众测团队具备10年以上的数据服务经验和丰富的标注人力,尤其在大模型方面已在内部将经验和人员打磨优化,如在文心大模型的训练过程中对数据进行标注。众测团队可为客户专业、准确、高效、安全地完成包括SFT、RM、模型评估等各类大模型数据标注任务,平台支持统一纳管自训练模型的数据集,并支持自主版本迭代、数据查看、导入导出和删除等操作。

数据洞察与处理

完成数据集上传后,数据集的不良分布和质量会影响模型微调的效果。 精调中常见的数据问题有以下几种:

  1. 样本基础质量缺陷问题: 在<prompt, response>对里,出现大量非法字符、异常文本等;
  2. 样本数量问题:一般来说当数据量小于1000条时不推荐进行微调,可以根据种子数据做通用的泛化增强,在不同场景下,推荐的数据量级:

    • 文案生成、剧本创作、小说续写:2~3k;
    • 参考问答:2k~1w;
    • 文本分类:1~3k,和类别数量以及任务难易程度相关,类别较多/任务较难的场景可能需要1w条以上
  3. 样本分布问题:SFT对数据多样性要求较高,多样性差的样本可能导致模型泛化能力差、在微调过程中出现过拟合。

    • 数据场景多样性:数据需要尽可能覆盖可能的业务场景

      以电商营销话术素材生成为例,某客户想提升模型生成“小红书风格”和“淘宝风格”文案的能力,并希望重点提升“女装”、“美妆个护”商品品类的素材生成效果,数据就要覆盖“小红书风格-女装”、“小红书风格-美妆个护”、“淘宝风格-女装”、“淘宝风格-美妆个护”四种用途,不能单点覆盖,也不能搞大杂烩。

    • 数据形式多样性:在<prompt, response>格式的数据中,prompt和answer的表达方式、长度多样性都需要兼顾,以下是兼顾到表达方式和多样性的具体例子:

image.png

针对以上问题,千帆为开发者提供了“数据洞察-数据增强-数据清洗”的全流程的数据管理和数据集调优服务:

  • 数据洞察:数据洞察可以即时并可视化地获取数据中的单条数据字符数量分布、特殊字符率等信息,帮助开发者掌握数据集的基本情况,指导后续数据工程;
  • 数据增强:数据增强功能通过模型生成或改写的方式,提升训练数据的数量、优化数据分布,开发者可根据数据洞察的结果选择是否需要进行数据增强;
  • 数据清洗:数据清洗功能能帮助开发者清洗数据中的异常符号、内容和字符串,过滤重复或过短的数据内容、完成数据去重、去除隐私信息; 一般来说,数据洞察可帮助开发者了解数据情况,数据清洗可解决数据的基础质量问题,而数据增强可以解决数据的样本分布问题。

推理数据挖掘

模型训练后发布、上线后,真实业务场景中会遇到各种各样超出开发者设想,但却反应用户真实使用习惯和长尾需求的案例。

我们还是拿刚才的翻译场景举例:开发者原有数据集中的prompt仅包含了翻译句子的要求,挖掘推理数据可以帮助开发者精准定位模型短板,针对性提升调优。

image.png

千帆提供快速简单的推理日志挖掘服务,可支撑海量推理日志的检索分析,帮助开发者打造以数据飞轮为中心的模型迭代闭,具体使用方式可参看推理日志挖掘

三、训练配置

选择合适的模型

Why为什么?

在模型选型的过程中,需要同时考虑训练成本、效果、时延三方面,三者难以同时兼顾,一般来说:

  • 训练成本:模型参数越大,SFT的成本越高
  • 模型生成效果:对于通用任务,旗舰版模型和大参数模型效果最好,对于具体场景,不同模型各有优劣
  • 回复时延:模型参数越大、任务越需要长上下文窗口的辅助,模型回复时延越长

How怎么做?

当前千帆平台提供文心全系列模型和DeepSeek-R1、DeepSeek-V3、QWQ-32B等多个开源模型供开发者进行微调,开发者可根据自身需要选用,具体模型如下:

image.png

开发者可根据具体需求和场景,参考以下推荐选用模型:

  • 效果要求高,且没有时延和成本的具体要求:推荐使用ERNIE4.0 Turbo或ERNIE 3.5进行调优;
  • 预算较低,希望进行成本、效果的兼顾:推荐选用ERNIE-Speed或ERNIE-Lite进行调优;
  • 对时延要求很敏感,例如主机厂、手机助手、智能穿戴硬件等场景:推荐使用ERNIE-Tiny进行调优;
  • 希望提升角色扮演、代码生成、手机推荐问场景的特性:千帆提供的3种价格低、效果优于通用模型的场景专精模型: image.png
  • 基础模型详细介绍,您可查看指导说明

确定基座模型后,仍需结合数据集中的样本长度分布,选择合适上下文窗口的模型:

  • 数据量化:对数据集进行统计,了解文本的最大、最小、平均和中位数长度。同时也要对自身应用场景的输出长度有评估。
  • 如果数据集中的样本长度

    • 95%以上在8K内:考虑使用8K模型并进行SFT微调,保证效果和性能的平衡
    • 超过8K的数据较多(20%以上)或需长文本处理,可使用128K版本模型进行微调
提问:模型选择有风险么?

:针对单个垂直的行业任务,不同基础模型的表现肯定是有差异的,用户需要做好预期进行选择。后续本平台也会更新其他的基础模型供用户选择。

数据混合

SFT过程中,正确的数据混合比例可以在保持模型的通用能力的情况下,加强模型在特定领域的生成效果。 在“创建精调作业”页面,千帆提供了预置的优质“通用语料”和“垂直领域预料”供给客户混合,以下情况可以适当混合数据:

  • 在SFT过程中,如果某个领域的数据过多,可能导致模型通用能力的下降,此时可以适当混合通用语料的数据;
  • 如果开发者个人的数据集中垂类数据不够,可以适当混合高质量垂直任务数据,提升目标任务能力;
  • 如果以上两种情况均存在,则可以既混合通用语料和垂直任务数据 但需要注意的是,混合数据的最佳比例受基座模型能力、自有数据集构成情况等多种因素影响,需要根据模型的训练结果不断调整,千帆提供的1:1的比例仅为推荐值。

image.png

选择训练方法

Why为什么?

不同的训练方法(如全量更新与LoRA)可以达到不同的性能权衡点,选择合适的方法能够在通用性和任务特定效果之间找到平衡。

How怎么做?

权衡考虑:

  • 样本数量少于1000且需注重基座模型的通用能力:优先考虑LoRA。
  • 如果特定任务数据样本较多且主要注重这些任务效果:使用全量更新。
  • 如果希望结合两者优势:将特定任务的数据与通用任务数据进行混合配比后,再使用这些训练方法能得到更好的效果。

实际案例

在用户场景中,经过评估,选择LoRA微调略有优势。但混合通用数据与特定任务数据后再进行微调,能够达到更好的综合效果。

3 配置超参数

EPOCH影响比LR大,通常设置为2~5,并根据模型训练的目标场景特性、loss收敛的速度进行调整,例如对文案生成、角色扮演等生成类任务的epoch可以设置得大一些,如5~10范围内。

提问:超参数选择有风险么?

:1.过高的epoch可能会带来通用nlp能力的遗忘,这里根据客户实际需要考虑,若客户只需要下游能力提升,则通用NLP能力的略微下降影响不大。若客户依然在乎通用NLP能力,平台侧也提供过来种子数据来尽可能保证通用NLP能力不降低太多。 2.用户需要保证数据量的真实性,也就是确保数据是多样且泛化能力强的数据。而不是1000条数据只是100条数据的复制10次。

提问:Epoch设置后需要调整吗?

:训练过程中要根据验证集的loss曲线进行判断,如果在未遍历epoch时loss已收敛,则可以适当调小epoch; 同时,千帆提供的早停机制可以帮助开发者解决这个问题,它的作用就是当模型在验证集上的性能不再增加的时候就停止训练,从而达到充分训练的作用,又避免过拟合。在进行模型精调时,需要将高级参数中的早停策略设置为“True”,并调整相关指标(不熟悉时保持默认即可),在loss收敛后,模型会自动停止SFT训练。 image.png

提问:学习率需要如何调整?

:学习率(LearningRate)是在梯度下降的过程中更新权重时的超参数,过高会导致模型难以收敛,过低则会导致模型收敛速度过慢,平台已给出默认推荐值,如果没有专业的调优经验,推荐使用默认值。

实际案例

为用户理解配置超参数的时候更直观,我们提供CASE供用户参考。

「1」使用场景

应用于学生的作文批改场景,其中包括:对文章的总评、每一段落的点评、段落的润色、文章整体结构的点评、文章的思维导图以及文章的全文升格。

「2」问题描述

image.png

SFT (3) 0818精调后评分下降较多。

「3」解决思路

遇到SFT训练效果不好或出现多次波动的问题,我们解决的思路与顺序为:

  1. 数据问题,我们需要对用户使用的数据做排查,是否是因为数据的质量或者不平衡导致了训练效果问题。
  2. 训练参数问题,如果数据没有问题的话,我们需要对异常参数进行排查:用户的问题就出现在数据量过1w+,依然使用了大epoch训练导致模型过拟合。
  3. 模型本身问题,涉及到我们同学开发的算法问题,用户无法解决。

「4」思考与启发


如何通过模型结果分析出是否过拟合?提高排查效率:
如果测试的时候,都只会回答训练见过的内容,可能是训练过拟合了,需要调整数据或超参。

四、训练结果优化

得到SFT模型后,可以观察以下数据:

(1)Training loss和Perplexity的收敛曲线,成功的训练一般有明显的收敛过程。收敛出现在训练过程的后半部分都是合理的。
    a)如果没有明显收敛,说明训练不充分,可以增加训练epoch重训,或者进行增量训练。
    b)如果收敛出现在训练过程的前半部分,而后部分的loss平稳无变化,说明可能有过拟合,可以结合评估结果选择是否减少epoch重训。
    c)如果有收敛趋势,但没有趋于平稳,可以在权衡通用能力和专业能力的前提下考虑是否增加epoch和数据以提升专业能力,但会有通用能力衰减的风险。

收敛良好:

image.png

loss上升,未收敛:

image.png

loss持续下降,没有平稳,判断为收敛未完成,可以增加数据或epoch。

image.png

ppl在训练1/3处已经非常接近1,同时loss及其接近0,是明显的过拟合。建议把epoch减少到当前的1/3重训。

image.png

(2)观察Rouge、Bleu等评估指标。需要了解这些指标的计算原理。在输出比较封闭的分类场景中,这些指标近似于准确率;在开放任务中,这些指标需要和以往在同任务上训练得到的指标横向比较。如果指标相比以前训练的结果变差了,需要重新调整训练数据、超参配置等。

指标 说明
BLEU-4 BLEU-4 是NLP中机器翻译/⽂本摘要等生成类任务常⽤的评价指标,是将模型生成结果和标注结果分别按1-gram、2-gram、3-gram、4-gram拆分后,计算出的加权平均精确率(n-gram 指⼀个语句⾥⾯连续的n个单词组成的⽚段)。
ROUGE-1 ROUGE-1 是NLP中机器翻译/⽂本摘要等生成类任务常⽤的评价指标,是将模型生成结果和标注结果按1-gram拆分后,计算出的召回率(n-gram 指⼀个语句⾥⾯连续的n个单词组成的⽚段)。
ROUGE-2 ROUGE-2 是NLP中机器翻译/⽂本摘要等生成类任务常⽤的评价指标,是将模型生成结果和标注结果按2-gram拆分后,计算出的召回率(n-gram 指⼀个语句⾥⾯连续的n个单词组成的⽚段)。
ROUGE-L ROUGE-L 是NLP中机器翻译/⽂本摘要等生成类任务常⽤的评价指标,是将模型生成结果和标注结果按最长公共子序列(longest-gram)拆分后,计算出的召回率。

(3)对于评估指标的举例说明
    a. 简单的封闭任务例如标签抽取的任务,抽取prompt中的试题属于语文还是数学,response只有“语文试题”或者“数学试题”四个字。在这个任务中,大模型的回答是封闭的,且任务简单,ROUGE、BLEU指标都可以接近100满分。
    b. 开放任务例如文本生成,按照用户的提示和材料生成一个故事。在这个例子中,评估指标能达到50-60已经是很好的结果了,在没有sft时指标甚至只有10-20。

(4)在模型中心进行离线评估。使用和训练数据集不重复的数据进行评估。除了评估指标和裁判员模型的打分,同时也要肉眼观察评估结果是否符合预期,是否有明显的badcase。例如某客户做意图识别时,发现离线评估的预测结果中有一些case没有预测出任何意图,回去检查训练集发现有少量训练数据标注有误,训练数据的response就是空。删除劣质数据重训后问题得到解决。另一个例子是离线评估使用了不同的prompt模板来提问,发现某些模板下的结果明显偏差,这种情况应按照效果短板重新调整训练数据集中不同模板训练数据的配比。

(5)发布预测服务后在playground进行主观测试。一方面用和训练数据集类似的专业case测试大模型对专业能力的学习是否充分,另一方面,如果需要保留通用对话能力,也可以尝试通用问题,或者闲聊,观察大模型的通用对话能力有没有衰减。例如某个摘要场景调优时,因为训练数据集的response都很短,导致sft后的模型如果进行闲聊,也会只回复很短的内容。所以这个模型只可用于专业场景,不适用于通用场景了。

五、训练持续迭代

当您已经使用模型完成了SFT或其他训练,但在实际应用中发现需要适应其他的场景或解决特定问题时,可以考虑模型迭代。这份指南旨在为您提供大模型SFT迭代的方法和建议。

Why为什么?

模型的性能可以受到多种因素的影响,包括但不限于新的数据源或业务需求的变化。持续地对模型进行优化和迭代能够确保它始终能够满足或超越预期的效果。

How怎么做?

  • 定期评估:设定一个时间表,对模型的性能进行一次全面的评估。
  • 数据更新:考虑周期性地更新或扩充训练数据,以反映最新的数据趋势或业务需求。在数据更新问题上,本平台提供了数据回流功能,支持将线上预测服务的结果保存回数据集,经人工筛选、调整以及处理后,用于下一次的模型优化训练。
  • 目标重新定位:随着业务的发展,可能会有新的需求或目标出现,需要重新考虑和定位模型的优化方向。

六、SFT实际案例

使用场景

某客户原先调用ERNIE-4Turbo,在AI搜索场景中进行搜索源头溯源时,遇到模型无法严格遵循要求输出对应格式、输出角标数量不符合预期的问题。

效果提升

通过对ERNIE-Speed pro进行SFT后,相比ERNIE4-Turbo模型,在指令遵循效果上有显著提升,

  • 在符号输出指令遵循方面,SFT后模型输出正确率达100.0%,提升12.2%;
  • 当同时考虑符号输出与索引数量合规时候,SFT后模型输出相比原先也提升了23.5% image.png

微调前后模型回复例子

image.png

思考与启发

微调确实能解决特定行业上一些标准模型无法解决或回答有误的问题。

上一篇
Post-pretrain最佳实践
下一篇
文生图SFT最佳实践