作者:微信小助手
发布时间:2025-08-17T22:18:04
怎么办?
因为SFT并不需要大量的训练集,因为SFT可以解决这类输入内容格式化的问题。
微调的核心任务是让模型从 “能生成文本” 进化为 “能听懂指令、按意图做事”。这个过程中,数据的作用不是 “喂饱模型”,而是 “给模型清晰的‘行为示范’”。
SFT是用来画龙点睛的。
1、在模型精调页面,点击左上角 创建精调任务 按钮。
任务名称(必填):本次精调任务命名,方便记录检索;支持1~200位可见字符,且只包含大小写字母、中文、数字、中划线、下划线。
任务描述:本次精调任务添加除名称以外的其他描述信息,方便多次迭代版本,重要信息记录;包含大小写字母、中文、数字、中划线、下划线。
Quality Is All You Need.
Less Is More for Aligment.
目前douboa-32K-pro大模型在输出数据时,总会给额外加一些空格,譬如
问题中是“Sikalastic-609”,大模型输出会是“Sikalastic - 609”,即在“-”两边额外添加了一个空格;
问题中是“水吧台/岛台区域”,大模型输出会是“水吧台 / 岛台区域”,即在“/”两边额外添加了一个空格;
期望这们的效果:
问题中是“Sikalastic-609”,大模型如果有相关的内容,原样输出“Sikalastic-609”
问题中是“水吧台/岛台区域”,大模型如果有相关的内容,原样输出“水吧台/岛台区域”
基于这个目标,来SFT大模型,按照
“Quality Is All You Need.
Less Is More for Aligment.”的规则,提供足够数据的input和output用于精调。
按“扩充高质量格式数据”的策略输出包含新增符号场景样本 和 增加 “错误 - 修正” 对比样本。
补充至少 50 条严格格式对齐的样本,覆盖更多领域(如技术文档、日常对话、专业术语)
本次生成并使用的训练集,共42条,具体数据见文末。
提示词:“使用上面生成的42条训练集,给出截图中参数的配置值”
Answer:结合 42 条训练集的小数据场景,以下是适配的参数配置思路及说明,在原有参数基础上优化以适配小数据的高效学习、避免过拟合:
|
|
|
|
---|---|---|---|
epoch |
|
|
|
batch_size |
|
|
|
learning_rate |
|
|
|
warmup_step_rate |
|
|
|
lora_rank |
|
|
|
lora_alpha |
|
|
lora_rank=32 ,按公式 scale = lora_alpha / sqrt(lora_rank) ,原 scale≈0.7 ,调整后 8 / sqrt(32)≈1.4 ,增强参数更新的缩放强度,适配调高的学习率
|
save_model_per_epoch |
|
|
|
dyn_bsz |
|
|
|
epoch
、适度调高 learning_rate
,让模型在有限数据中多轮学习、加速收敛,弥补数据量少的短板。
lora_rank=32
(相对 64 更安全),配合 warmup
延长学习率适应过程,避免模型 “死记硬背” 小数据集。
lora_alpha
匹配学习率变化,保证 Lora 模块参数更新的缩放比例合理,让训练更稳定。
按此配置,可在小数据场景下高效训练模型学习符号格式对齐,同时降低过拟合可能,若训练后验证集效果不佳(如过拟合),可进一步降低 epoch
或 learning_rate
;若收敛慢,则继续微调学习率或 warmup
比例 。
参数配置有了:
“混入预置数据集”和“验证集”怎么配?
Query:“给出下面这两个指标的值: 混入预置数据集:在用户上传的训练集数据中混入豆包模型的SFT(Supervised Fine Tuning,有监督微调)数据,混入比例表示混合后SFT数据占总数据量的比例 验证集:Validation Set,模型训练过程中,用于确定网络结构以及调整模型的超参数。可以从训练集中随机分割一定比例作为验证集,也可以上传独立于训练集的数据集。”
Answer:
结合你提供的 40 条专项微调数据(输出格式对齐V1),以及 “Quality Is All You Need” 和 “Less Is More” 的原则,这两个指标的推荐值及设置逻辑如下:
核心原因:
推荐设置:
这两个指标的设置均以 “强化专项信号、控制过拟合” 为核心,适配小数据量下的精准微调需求。
万事俱备,点击“提交精调任务”。
看下效果:
精调后,格式ok。
精调后,格式ok。
精调后,格式ok。
精调后,格式ok。
若训练后仍有残留问题,通过推理阶段后处理兜底修正,确保最终输出符合要求:
推理时,用 Python 正则自动清理符号前后空
import re
def fix_symbol_format(text):
# 处理“/”前后空格
text = re.sub(r'\s*/\s*','/', text)
# 处理“-”前后空格(注意区分连字符与减号,可根据场景调整)
text = re.sub(r'\s*-\s*','-', text)
return text
# 推理示例
output = model.generate(...)
fixed_output = fix_symbol_format(output)
1.2 构建格式校验器
格式对齐的本质是让模型在小数据中精准学习 “人类对符号的严格规范”,需通过:
SFT训练数据集
https://f.chaojihao.net/ai/dataset/sft/format/symbol_format_finetune_data20250808V2.jsonl
SFT 最佳实践
https://www.volcengine.com/docs/82379/1221664
创建模型精调任务
https://www.volcengine.com/docs/82379/1099459
最后再补张图,没有完全理解的朋友可以整体再看一下,找找感觉:
面对传统Code RAG和Code Agent在召回率、准确率和稳定性上的不足,以及领域“黑话”和代码风格差异带来的挑战,使用以大模型微调(SFT)为核心的解决方案成功解决了问题。
博跃,公众号:阿里云开发者让AI读懂代码需求:模块化大模型微调助力高效代码理解与迁移
LoRA(Low-Rank Adaptation,低秩适应)是一种高效微调大模型的技术,由微软团队于 2021 年提出。
LoRA的核心是在不改变原模型参数的情况下,通过添加少量低秩矩阵参数来适配新任务。训练时仅优化这些新增的少量参数,大幅降低计算成本;推理时将低秩矩阵的影响合并回原模型,不增加额外开销。这种方式用极少参数就能实现接近全量微调的效果,广泛用于大模型的任务适配。
具体来说,传统微调需要更新模型的全部参数,当模型规模庞大(如数十亿甚至千亿参数)时,会消耗大量计算资源和存储空间。而 LoRA 的做法是:
由于低秩矩阵的参数规模远小于原始模型参数(通常仅为原始参数的 1%-10%),LoRA 大幅降低了微调的成本,同时还能有效避免过拟合,在多种自然语言处理任务(如文本分类、翻译、问答等)中表现出色,目前已成为大模型微调的主流技术之一。