You need to enable JavaScript to run this app.
文档中心
火山方舟

火山方舟

复制全文
下载 pdf
模型精调
有监督微调最佳实践
复制全文
下载 pdf
有监督微调最佳实践
有监督微调(Supervised Fine-Tuning, SFT)通过包含示例输入与标准输出的数据集对模型进行微调,可提升模型在特定任务上的效果与执行效率。
在以下几种情况,您可以考虑使用有监督微调(SFT):
  1. 尽管您已尽力优化提示词工程(Prompt Engineering),但模型效果仍不理想,或提示词本身变得过于复杂。
  1. 您对模型输出有特定的格式要求,但它有时无法稳定地满足要求。
  1. 您希望精简提示词,以加快线上推理速度。
构建数据集
构建高质量、具有代表性的数据集,是微调模型取得理想效果的关键。可参考以下方法与注意事项:
数据格式要求
采用JSONL 格式, 训练数据文件的每一行包含一个完整的 JSON 结构
数据集格式要求详细说明请参见格式总览
下方是不同场景的数据集示例,供您参考。
参考问答
角色扮演
文本分类
文案生成
{"messages":[{"role":"user","content":"你是一名专业的金融智能客服,你需要根据提供的参考资料来回答用户的问题,你的回答需要真实可靠。\n你的回答要满足以下几点要求:\n1. 回答内容必须在参考资料范围内,不能做任何参考资料以外的扩展解释。\n2. 如果参考资料不能帮助你回答用户问题,请回答“抱歉,这个问题我还不会”。\n3. 回答内容不能包含诸如“根据提供的参考资料”, “根据我的知识库”等,直接回答跟用户问题有关的内容即可。\n4. 结合参考资料,若用户问题意图不够明确,你需要引导用户给出更多信息。如用户问题是“我的密码忘记怎么办”,参考资料包括“交易密码重置”和“资金密码重置”,那么你需要引导用户回答是交易密码忘记还是资金密码忘记。\n\n# 任务执行\n现在请你根据提供的参考资料,遵循要求来回答用户的问题,切记你的回答只能根据参考资料,不能扩展解释。\n\n候选参考资料:\n\n参考资料1: 跟您分享一下打新理论上的逻辑:例如您操作打新债后,系统会根据您申购的数量发放配号,然后再对所有的配号进行随机抽签,所以说配号越多中签的概率就越大。那么顶格申购就可以获得最多的配号。同理,新股中签的概率取决于您的新股额度,申请打新股后,系统会根据您申购的数量发放配号,然后再对所有的配号进行随机抽签,因此可申购的额度越多中签概率就越高。不过需要提醒您,新股新债上市也有可能存在破发现象,打新需谨慎。\n\n用户问题:打新股没中过,你们也太欺负人了吧\n\n你的回答:"},{"role":"assistant","content":"打新股中签主要取决于新股的配号数量和系统的随机抽签。配号数量是基于您申购的数量发放的,配号越多,中签概率理论上就越大。因此,如果您申购的额度更大,那中签的机会就可能增加。然而,确切的中签结果是由系统随机抽签确定的,这是一个公平公正的过程,不存在欺负任何人的情况。另外需要提醒,新股上市也有可能出现破发现象,打新需要谨慎。"}]}
{"messages":[{"role":"user","content":"请你扮演一名专业度高、性格友善的金牌电商客服,你的任务是结合商品信息和历史会话解答用户在购买中遇到的尺码问题。商品名称:【1577冬季新款特厚睡衣】男士冬款加绒加厚加肥加大可外穿睡衣套装,商品类目:内衣裤袜, 睡衣, 睡衣/家居服套装,商品尺码表:[[尺码,身高(cm),体重(斤)],[XL,160-175,120-145],[2XL,165-178,145-165],[3XL,170-182,165-185],[4XL,175-190,185-210]],商品规格:[颜色分类(1577浅棕, 1577韦灰),尺码大小(4XL 【身高建议 175-190cm 体重 185-210斤】, XL 【身高建议 160-175cm 体重 120-145斤】, 2XL 【身高建议 165-178cm 体重 145-165斤】, 3XL 【身高建议 170-182cm 体重 165-185斤】)],历史会话:[用户(【商品】),客服(很高兴为您服务,请问有什么可以帮您?),客服(亲亲,请描述下您关于此商品的问题哦~我来帮您处理~),客服(在的呢)]]用户问题:175.160斤,请给用户推荐合适的尺码。"},{"role":"assistant","content":"亲爱的,根据您提供的身高175cm、体重160斤,推荐您选择我们的2XL尺码哦,这个尺码应该会恰到好处~[微笑]。如果有其他问题,欢迎随时提问哦~"}]}
{"messages":[{"role":"user","content":"##你是一个AI评论回复专家。##技能-你情商很高,阳光正面,会严格遵守规则,回复直截了当、言简意赅、不说废话,提升用户信息消费效率。-你会在文章中检索问题答案,优先根据文章内容给出回复。-你遇到需要联网查询后回答的问题会直接回复*不知道*,绝不编造。-若用户评论是在询问你的意见时,你需要给出公正的回复。##相关文章```````````````````````````在上海的一所居民区,王奶奶,一位已经步入七旬的老人,最近开始出现一些令家人担忧的状况。她的孙子小李注意到,王奶奶经常重复一些相同的问题和句子,比如“我东西放哪了”、“我忘带东西了”,让人觉得她似乎经常处于迷茫和困惑之中。小李决定带着奶奶去找他们的家庭医生,李医生,进行咨询和检查。李医生是一位资深的神经科医生,对老年痴呆有深入的了解。在详细询问王奶奶的日常表现和状况后,李医生开始向小李解释老年痴呆的一些早期迹象。李医生说:“小李,你提到的奶奶的行为,实际上是老年痴呆早期的一些典型症状。患有老年痴呆的人通常会表现出一些特定的口头禅,我们可以通过这些口头禅来进行初步的自查。”“首先,‘我东西放哪了’这句话反映了王奶奶可能有记忆力减退的问题。老年痴呆的患者经常忘记自己放置物品的位置。”“其次,‘我忘带东西了’这句话表明她可能有计划和执行任务的困难。老年痴呆的患者常常忘记日常的重要事项,比如带钥匙或药物。”“‘我怎么在这里’这句话则可能暗示空间定向能力的下降。老年痴呆患者可能会对熟悉的环境感到陌生,甚至迷路。”“‘你刚刚说的什么’这句话显示出对最近发生事情的记忆力减退。老年痴呆患者往往很难记住最近的对话或事件。”“最后,‘我怎么什么都做不了了’可能是对日常生活能力减退的感受。老年痴呆患者在日常生活中的自理能力会逐渐下降。”李医生建议小李为王奶奶进行更深入的医学评估,并讨论了可能的治疗方法和生活调整建议。小李听后,对老年痴呆有了更深的认识。他感谢李医生的解释,并决定带着奶奶进行进一步的检查,并根据医生的建议调整生活和照顾方式。李医生的解释不仅帮助小李和王奶奶及时发现了病情,也提醒了他们及时干预和调整可以改善生活质量。总之,注意老年痴呆的早期迹象,并通过及时的医疗干预和适当的生活调整,可以帮助患者保持更好的生活质量。了解和关注老年痴呆的早期症状,对于提前发现和减缓病情的发展至关重要。对此,您有什么想说的呢?欢迎在评论区留下您的看法!```````````````````````````##用户评论我不到60岁,也有这个现象,怎办?##你的回复"},{"role":"assistant","content":"根据文章内容,你的情况可能需要医学评估,因为这有可能是老年痴呆的早期迹象。请尽快联系专业医生进行咨询和检查。"}]}
{"messages":[{"role":"user","content":"你现在是一名专业的客服人员,你需要根据提供的参考资料来回答用户的问题,你的回答需要真实可靠。参考资料:签到在哪里<p>签到活动是新用户福利活动,且因在测试阶段,仅针对部分用户展示,若您可以参加该活动,可以在app-研究页面右上方点击“签到有礼”进入参加哦若不展示活动入口则代表无法参加,您也无需遗憾,可以关注app其他不定期活动,同样精彩的哦</p>你的回答要满足以下几点要求:1.回答内容必须在参考资料范围内,不能做任何参考资料以外的扩展解释。2.如果参考资料不能帮助你回答用户问题,请回答“抱歉,这个问题我还不会”。3.结合参考资料,若用户问题意图不够明确,你需要引导用户给出更多信息。用户问题:签到在哪个界面你的回答:"},{"role":"assistant","content":"签到的入口在研究页面的顶部,您在这个页面上方可以找到“签到有礼”选项进行签到。但是需要注意的是,此签到功能仅面向部分新用户展示,如果您的注册时间大于30天后,将会看不到这个入口。"}]}
{"messages":[{"role":"system","content":"你是一位资深的房产专家,请根据信息回答问题。需要注意:1.充分利用信息作答,采用段落式的格式来回答。2. 充分利用信息作答,不要硬凑字数,不要截断。3.同时,“未知”信息不要出现在答案中。"},{"role":"user","content":"信息如下:北京的信息:北京11月的网签情况为,二手房网签6003套,新房网签5688套。二手房方面:11月网签二手房参考均价47902元/㎡,环比下降0.23%,在四个一线城市里,深圳市参考均价环比增幅最大,为-0.19%;从近一年的价格波动趋势来看,北京市二手房参考均价最高值是2022年12月的56690元/㎡。11月二手房网签套数为6003套,环比下降50.23,在四个一线城市里,北京市网签二手房增幅最大,为-50.23%。新房方面:11月新房网签套数为5688套,环比下降53.76%。本月北京市共新推出8个新楼盘,累计新增房源5163套。用户问题:北京行情怎么样进一步明确问题:北京行情怎么样意图:城市行情类关键信息:城市北京输出结构要求:1.第一部分:单独一段简介绍房源基础信息2.结束语:单独一段强调你愿意继续为用户提供咨询和帮助你需要遵循以下要求:1.每个部分限制在100字以内AI房产咨询师应该回答:"},{"role":"assistant","content":"首先,北京的房源信息如下:在11月份,北京市的二手房网络签约量为6003套,参考均价为47902元/㎡,环比下降了0.23%,比四个一线城市中的深圳市的增幅小,而北京市这个月的二手房增幅最大,为-50.23%。而北京市的新房方面,11月份网络签约量为5688套,环比下降了53.76%,此外,北京市本月共新推出了8个新楼盘,累计新增房源5163套。作为你的房产顾问,我会一直关注北京的房产市场,并及时为你提供新的信息。不论是购房还是投资的需求,我都愿意随时为你提供专业的建议和帮助。"}]}
数据量级建议
起初不需要构建大量 SFT 数据集,建议优先采用少量数据(50条~100条)对模型做 SFT 后观察真实评估是否有收益。如果有收益,可以尝试以部分数据为种子数据集继续扩充以优化表现。如果无明显作用,建议检查 SFT 数据集的质量。
  • 针对不同场景下,数据量级的建议:
  • 文案生成,剧本创作,小说续写等生成类任务:2~3k。
  • 参考问答:2k ~ 1w。
  • 文本分类:1~3k,和类别数量以及任务难易度强相关,类别较多/任务较难的场景可能需要1w条以上。
  • 如何扩充SFT数据:
  • 明确数据扩充任务的输入输出映射关系,选用适配模型,通过前缀提示(PE)+ 小样本示例(Few Shots) 策略构建提示词。
  • 驱动模型生成补充样本,将其纳入 SFT 数据集候选池。
  • 校验生成样本与人工标注样本的风格、精度一致性;若不达标,迭代优化提示词并重新生成。
数据质量判断
* Badcase 的覆盖度:SFT 核心目标是解决已知 Badcase,需确保数据集充分覆盖存量 Badcase 场景,为模型优化提供明确优化目标。
* 贴合真实应用场景:示例的提示词与输出需与实际应用场景一致,尽可能贴近真实需求。
* 保证问答质量:问题与答案需具体、清晰。
* 高质量数据源:优选历史数据、专家标注数据、业务日志数据。
是否混入预置数据
  • 什么是混入预置数据:
  • 在模型精调页面,可以选择混入预置数据集,即在用户上传的 SFT 数据集的基础上,额外增加一部分比例的豆包模型基座训练时的 SFT 数据。
  • 为什么要混入预置数据:
  • 一定程度上缓解大模型在某个领域上 SFT 后,通用能力下降的问题。
  • 混入比例如何设定:
  • 在混入预置数据时,由于模型在 SFT 阶段会拟合全量数据集的 prompt-response 映射,若混入比例过高,会削弱模型的特定领域能力;若比例过低,则对通用能力下降的缓解效果不显著。
  • 按照经验,通常设置为 15%~30%左右,依据自己的需求和实验迭代来决定。
创建精调任务
  1. 模型精调 页面,点击左上角 创建精调任务 按钮,填写必填字段;
  1. 选择 SFT 精调类型,并选定训练方式以及待训练的模型,可参考精调选型指南
  1. 上传构建的数据集,配置训练参数,重要参数配置建议可参考训练参数选择,确认无误提交任务。
模型选择
  • 首先,需要明确我们的模型使用场景是否对延迟比较敏感,如果要求低延迟,且测试过程中pro版本模型无法满足延迟要求时,可以使用lite模型。具体延迟可以到方舟 体验中心 进行测试。
  • 其次,需要明确我们的应用场景是否需要长文本能力。如果预期模型的输入和输出加起来超过了4k的 token 数,且删减字数对原有语义影响较大时,推荐使用 Doubao-pro-32k模型(最大支持32k token的输入输出长度和);如果预期模型的输入和输出总 token 数小于 4k,建议直接选择 4k 版本。
  • 版本选择:
  • 同一大模型下面不同版本的区别,大部分仅在于使用的预训练 SFT 数据不同,我们建议选择最新版本的模型进行 SFT。
  • 对于角色扮演类任务,建议选择 character 模型进行 SFT。
训练方式选择
  • 参数更新范围 的角度划分,模型精调主要包含全量精调与 LoRA 精调两种方式:全量精调更新模型的全部参数,LoRA 精调仅更新低秩适配层。
  • LoRA(Low-Rank Adaptation)通过冻结预训练模型的全部权重,并在每个 Transformer 块中注入可训练的低秩适配层,大幅减少了可训练参数的总量。该方式训练速度更快、机器资源消耗更低,成本远低于全量精调;且在大多数场景下,LoRA 精调效果可达到全量精调的 98% 以上。
  • 需要注意的是,LoRA和全量SFT在学习率上,有着不同的最佳参数取值范围,这一点我们在训练参数选择中做进一步的说明。
  • 建议先使用小参数量大模型(Doubao-lite)+ LoRA 验证实验设置及数据是否有效,如果有效的话,再迁移到大参数量大模型上验证scaling law(即随着模型参数量的增加,模型的效果越好)是否成立。这样做可以显著加快迭代效率,避免在大参数模型上反复做无意义的迭代。
  • 从参数更新方式的角度,目前方舟不仅支持基座模型SFT,还支持在已经 SFT 过的模型基础上继续做SFT。具体操作方式:
  • 在模型仓库找到对应SFT后的模型,点击 增量训练, 即可在SFT 过的模型基础上继续做SFT
  • 在创建精调任务时,模型选择添加模型仓库的对应模型,即可在SFT 过的模型基础上继续做SFT
训练参数选择
在 SFT 任务中,选择合适的超参数对精调效果至关重要。以下是关键参数的配置建议:
  • epoch :模型训练的总轮数。
  • 通用建议 :通常设置为 2 到 5 轮。
  • 判断方法 :您可以通过观察 loss 曲线来判断是否需要调整:
  • 过拟合 :如果训练集 loss 下降而验证集 loss 上升,说明模型已过拟合,应停止训练。
  • 未收敛 :如果训练集和验证集 loss 都在缓慢下降,说明模型尚未收敛,可以继续训练。
  • 特殊场景 :对于文案生成、小说创作等生成类任务,loss 无法完全反映上下文逻辑和风格。根据经验,可将 epoch 适当增大,例如设置为 5 到 10 轮。
  • lora alpha lora rank
  • 说明:当前我们统一使用 RS-LoRA(秩稳定 LoRA)进行训练,其 LoRA 缩放因子为 alpha/sqrt(rank)
  • alpha:用于缩放模型权重;
  • rank:决定了 LoRA 训练参数数量的大小;
  • 推荐组合rank 64, alpha 6 或 rank 32, alpha 4。
  • learning rate :学习率。设置过高可能导致陷入局部最优或过拟合,设置过低则会减慢训练速度或导致训练难以收敛。
  • 经验参考值
  • LORA 训练 :建议设置为 1e-55e-5
  • 全量 SFT :建议设置为 1e-52e-5
  • num warmup steps warmup step rate :这两个参数用于学习率预热,您只需设置其中一个,通常保持默认值即可。如果在训练初期遇到 loss 不下降的问题,可以尝试调大 warmup step rate,观察 loss 是否开始下降。
  • enable save models :此参数用于设置保存最后几个模型的产物(checkpoint),它不直接影响模型效果。在实验调参阶段,您可以调大该值以保存更多版本,便于从中选择最佳的 checkpoint。注意,保存更多模型会增加训练总时长。
  • 其他参数 :除上述参数外,其余参数通常保持默认值即可。
效果评估
SFT的效果评估主要通过“ loss 效果指标监控 ”与“ 精调产物使用 ”实现:前者聚焦训练过程中的量化指标,后者通过实际调用验证业务效果。根据评估结果按需调整提示词、数据集及微调任务配置,直至达到预期效果。
查看效果指标
模型精调 页面进入任务详情页切换至 训练观测 页签,即可查看核心指标。不同任务类型对应评估方式的侧重点不同,请根据您的任务类型,选择对应的评估策略*。*您可以将任务划分为以下两类:
  1. 确定性任务:Label 标注准确、输出结果唯一的任务,如分类、实体抽取、信息提取等任务。
  • 核心评估依据为 训练集与验证集的 loss 指标 ,重点关注两点:
  • 训练集与验证集的损失是否同步下降;
  • 多轮 epoch 训练后,loss 是否趋于收敛。
  • 下图为比较良好的训练过程,训练集与验证集损失同步下降,且训练集损失最终接近收敛。
  1. 生成式任务:输出结果多样、无固定标准答案的任务,如问答、文案生成、角色扮演对话等任务。
  • 采用 训练集 loss 参考 + 真实评估集业务指标主导 的评估策略:
  • 训练集 loss 仅作参考 :验证集 loss 计算依赖 token 级 KL 散度损失,与真实业务场景的输出要求不完全匹配,可能出现验证集 loss 无明显下降但业务指标提升的情况;
  • 真实评估集指标为核心 :服务发布后,基于真实评估集的业务指标(如内容相关性、流畅度、用户满意度等)判定最终精调效果。
按需使用精调产物
精调产物是训练过程中生成的可调用模型版本,通过实际使用产物,能更直观地验证模型在业务场景中的表现。
选择精调产物导出至 模型仓库 ,进行精调后模型的使用,支持 量化、体验、评测、在线推理、批量推理 ,操作见管理自定义模型
用户案例
意图识别
场景
此场景旨在根据用户与客服的对话内容,对用户的具体意图进行分类。
过程
  1. 建立基准(Baseline) :首先,您需要为线上业务建立一个标准评估集。在优化提示词(Prompt)后,基准模型(V0)的准确率达到了 X1%。
  1. 发现问题并选择 SFT :您发现模型难以正确区分那些描述相似但意图相反的情况。如果通过增加 Few-shot 示例来解决,会导致提示词过长,增加线上推理延迟。因此,您决定采用 SFT 来优化模型。
  1. 构建数据集并初次微调 :您根据线上真实流量,标注了 400 多条数据构建成 SFT 数据集。使用这批数据进行微调后,得到的 V1 模型在评估集上的准确率提升至 X2%。
  1. 持续迭代优化 :您持续从线上流量中收集数据,在 V1 模型的基础上进行增量微调,得到 V2 模型,使准确率进一步提升,最终满足了业务需求。
文案生成
场景
根据您输入的产品名称、需求描述、行业和标签等字段,生成符合要求的营销文案。
过程
  1. 建立基准与评估标准 :首先,您需要从风格、逻辑等多个维度建立文案质量的评估标准。然后,将已有数据按行业分层抽样,构建 SFT 训练集和评测集(其中评测集占 5%)。基于初版训练集得到的基准模型,文案整体通过率为 X1%。
  1. 分析 Badcase 并定位问题 :在评估时,您发现未通过的文案主要集中在某些特定行业。经过进一步分析,您确认了问题根源:这些行业对应的 SFT 训练数据本身质量较低,直接影响了模型表现。
  1. 清洗数据并重新微调 :您对问题行业的数据进行了人工审核,移除了不合格的训练样本。使用清洗后的数据集重新进行 SFT,新模型的文案整体通过率提升至 X2%,并且在之前表现不佳的行业上效果得到了显著改善。
常见问题
如何构造 SFT 数据集?
数据质量比数据数量更重要
  1. 保证数据洁净 :收集并清洗您的 SFT 数据集,剔除其中错误、冗余或有歧义的样本。低质量数据会直接影响最终的微调效果。
  1. 聚焦核心问题 :重点收集模型反复出错的 badcase。通过分析这些 badcase 的共性来构建数据集,确保数据集的分布与 badcase 的分布贴近,从而有效解决这些问题。
如何加快调参效率?
核心方法是多保存 ckpt 和控制变量
  1. 保存多个模型版本 :在精调时适当增加训练轮数(epoch),并保存多个模型产物(checkpoint)。这样您可以在发布服务时,灵活选择不同训练阶段的 ckpt 进行部署和评估。
  1. 采用控制变量法 :在不同的参数取值范围内分别进行实验,以明确调整某个超参对模型性能指标的具体影响。
在 SFT 中,Few-shot 示例的相关性为何重要?
当 SFT 数据量较少,但任务需要模型区分细微差异时(例如,不同渠道的营销文案风格),可以采用 Few-shot + SFT 的训练方式。
在这种模式下, Few-shot 示例的质量和相关性至关重要 。如果示例与目标任务不相关,反而会干扰模型学习。
  • 例如 :在生成一条“推送(push)”渠道的文案时,如果您在 prompt 的 Few-shot 示例中提供了“社交媒体”或“直邮”场景的文案,风格上的不匹配会严重影响生成结果的准确性。
  • 最佳实践 :在构建 Few-shot SFT 数据时,应分析您的场景在哪个维度上(如风格、渠道、格式)差异最明显,并确保为每条数据匹配同一维度的优质示例。
如何提升模型输出的多样性?
如果您希望模型针对相同的 prompt 能生成更多样化的内容,可以尝试以下两种方法:
  1. 调整推理参数 :在调用模型接口时,适当调大 temperaturetop_p 等参数(例如,都设置为 1.0),以增加生成结果的随机性。
  1. 丰富训练数据 :在构建 SFT 数据集时,为同一个输入 prompt 提供多个不同但同样优质的 response。实验证明,这种方法能有效提升模型输出的多样性。
最近更新时间:2026.08.17 18:56:17
这个页面对您有帮助吗?
有用
有用
无用
无用