(1)为什么会有SFT?
预训练、SFT、RLHF是大模型的标配。
预训练让大模型获得了通用能力,SFT让大模型提升了某个特定领域的能力,RLHF则是让大模型的输出和人类意图对齐和接近。
(2)SFT和预训练的区别是什么?
预训练是让大模型获得通用能力,SFT是为了提升大模型在特定领域的能力。
(3)SFT和RLHF的区别是什么?
第一,SFT是为了提升大模型特定领域的能力,RLHF则是为了让大模型的输出和人类意图接近,尤其是在宗教、政治、道德等方面进行一定的约束。SFT在预训练的基础上增强了模型在特定领域的表达能力, RLHF则约束了模型的表达。
第二,SFT是监督学习,RLHF是强化学习。监督学习的上限是老师,而强化学习可以通过学习经验超越老师。
第三,SFT给大模型提供正向反馈,而RLHF可以给大模型提供负反馈。SFT并没有告诉模型说,我不想要什么答案,只有我想要什么答案,这个时候就需要RLHF进行纠错,打造一个尽量不出错的领域大模型。
第四,训练优化方式不同。前者通过loss函数来对token进行优化和反向传播,每一个token相同的贡献,而后者可以对整个语句进行优化和反向传播。
(4)SFT和RAG的区别是什么?
第一,SFT是通过一定量的监督训练数据提升大模型特定领域的能力,RAG是指通用大模型本身没有特定领域的能力,但通过检索资料提升特定领域的能力。
第二,RAG只能提取只是表层的特征,微调能够让模型的底层认知真正的去对齐行业领域。
第三,从应用场景角度:RAG是外挂一个知识库,适合动态数据、相比于微调在处理幻觉、可解释性高、通用能力更强。微调适合给模型定制能力、延迟低、但会造成模型遗忘。从实现的难易程度而言:promopt<RAG<微调,微调难度最大。
(5)SFT和continue-pretrain区别是什么?
第一,从目的角度:SFT是为了提升或者激发通用大模型在特定领域或某个task的能力,而continue-pretrain是为了解决应用场景需求能力与通用大模型能力不匹配的问题,即基础模型支持的domain和要解决的domain差异很大,这个时候要考虑增量预训练。
第二,从流程角度:continue-pretrain在pretrain之后,在SFT之前。
第三,从训练数据量角度:增量预训练所需要的数据略少于pretrain,但远远大于SFT所需要的数据,99%的情况下通常不会使用增量预训练。
(6)SFT和in-context learning的区别是什么?
In-context learning目的是通过一个或者几个例子激发大模型对任务的能力(也就是prompt)。In-context learning在GPT3论文中提出,并不会修改模型的参数和梯度,不参与反向传播过程。
(7)SFT和LoRA、PEFT区别是什么?
SFT通常是指全参数微调,优点是精度上限更高,缺点是在训练过程中对计算资源和存储资源的需求高、容易产生过拟合、遗忘和幻觉。
PEFT是一种微调方法的总称,主要包括Prefix Tuning(在模型输入层添加可训练的前缀嵌入),LoRA(通过低秩矩阵近似模型参数更新),以及Adapter Tuning(在模型层间插入小型神经网络adapters)。
LoRA是PEFT的一种,模型的参数不变,但对模型中在每个线性层引入额外的低秩矩阵进行参数微调。优点是降低SFT过程对硬件内存的消耗(省内存),缺点是精度上限低于全量参数微调。
此外,模型部分参数微调部分参数冻结也是微调的一种方式,目前应用较少。
(8)SFT有哪些分类?
第一,按照任务不同可以划分为:对话任务、分类任务、相似性判定任务等。
第二,按照模型参数是否变化可以分为:
- • 全部参数微调,这也是大公司日常使用最多的方案。
- • PEFT微调。包括LoRA,Adapter等。摘抄-在实际工作中几乎没用过 lora,身边同事也不怎么用。
- • 部分模型参数冻结部分模型参数微调。
(9)SFT的前提条件是什么?
共有3个基础条件,第一是选择基座模型,第二是微调数据,第三是微调环境。
微调基座模型可以直接从modelscope网站下载。
微调数据主要包括-特定的模型输入格式、数据数量、数据质量等。
微调环境主要包括-微调硬件、微调软件、微调工具等。
- • 训练工具包括-Megatron-LM、Deepspeed、Accelerate、Unsloth。
- • LLaMA-Factory是一个开源平台,是一个比较完善的微调工具,提供便捷的大型语言模型微调环境。
- • hugging face transformers是一个开源的Python库,提供了数以千计的预训练transformer模型。
- • DeepSpeed训练框架通过将模型参数拆散分布到各个GPU上,可以利用更少的硬件资源训练更大的模型,不再受限于单个GPU的显存限制。
- • Unsloth 是一款开源的大语言模型(LLM)微调工具,基于优化计算步骤和 GPU 内核,显著提升模型训练速度并减少内存使用。
- • 注意环境依赖,不要造成版本冲突。
- • 硬件环境包括-GPU、CPU、内存、存储、操作系统、cuda等。
(10)如何选择SFT的基座模型?
第一,选择base模型还是chat模型作为SFT基座?Base模型提供了基本的语言理解和生成能力,而Chat模型通过指令微调和人工反馈强化学习等方法,使模型更加符合人类的价值观和指令要求。一般情况下选择chat模型为微调基座,因为base模型还没有指令遵循或对话能力。
第二,基座模型选择大模型还是小模型?例如Qwen3-235B或0.6B。取决于应用场景,对于单一任务来说,小模型已经够用。
第三,modelscope社区一般会给出3种类型的模型,第一种是预训练模型,第二种有chat能力的微调模型,第三种是在chat能力基础上的量化模型(量化模型通俗来说就是把大模型中某些层参数由float16变为int8等)以节省显存。
(11)SFT的训练数据集如何构建?**
**第一,对于不同的微调任务和微调基座模型,生成特定输入格式的数据。
通常,微调任务主要包括根据指令简单对话,根据指令实现上下文对话(更加关注上下文的逻辑与联系)这两种。
目前被大家广泛使用的是两种微调数据格式为Alpaca(JSON结构)和share GPT,前者使用较多,后者更加关注长对话。
微调数据中的COT更加适用的场景是-数学、证明等需要逻辑推理的场景,而COT数据通常包括question、COT-thinking、Answer这三个部分。多轮对话通常在最后一轮问答时使用思维链。
第二,微调数据获得方式主要包括人工生成,人工和大模型协助(RAG或大模型prompt)生成两种。
摘抄:要想尽各种办法去扩充 prompt 的任务多样性和表达方式多样性,甚至去刻意加一些 noisy prompt 去提升抗噪性。
摘抄-选一个默认的 json 格式:带不带 markdown,indent 设置成几,是否输出在一行,然后把 sft 中所有涉及到的 json 数据全部清洗成这种格式。
第三,获得高质量的微调训练数据是SFT的核心。作为SFT从业者,日常95%以上的时间就是生产数据、分析数据、清洗数据。摘抄:这段时间天天sft,怎么整都提不了效果,最后老老实实用规则+人工把数据一条条洗一遍,模型才终于稳定了。特别是复杂推理任务,数据里answer有conflict的点的话,模型经常学疯。
第四,Instructions这个一定要给出,让大模型明确自身的定位。input可以不给,模型也可以直接通过instructions给输出。
(12)SFT需要多少数据量?
2K-10W,当然要具体任务具体分析。
摘抄:通常情况下,仅需约“一万份样本”便足以达成理想的微调成果。这一理念在Meta发布的《LIMA: Less Is More for Alignment》论文中得到了有力阐述,该文献强调了在指令微调过程中,高品质微调数据的决定性作用。据此,我们应当将重心放在提升样本质量的打磨上,而非单纯追求数量的增长。
InstructGPT在微调阶段使用数据~1万组。
(13)如何评价SFT训练数据集的质量?
有多个维度,包括样本多样性、答案质量、回答一致性等多项指标。
(14)SFT过程对硬件有什么要求?
第一,微调大模型需要多少显存?训练过程中的显存取决于:模型参数、梯度、优化器、中间激活变量,主要显存消耗在前三个。经验来说,显存大概是模型参数量的12倍,例如模型是1B,总共显存占用12GB。
第二,V100不支持flash attention。
第三,V100不支持bf16,但支持GPTQ模型和FP8。V100不支持fp16,但是可以通过修改config.json中的dtype将bf16变为float32或float16。
第四,对于LORA微调而言,train和test代码不同。在test时候,因为保存的checkpoint只有linear层,需要先把模型合并到一起。
第五,一般情况下GPTQ模型可以用来微调,但是不能全参数微调,必须和PEFT一起使用。尽量不要使用量化后的模型进行SFT,因为LORA是float16,而量化后的模型不一定是float16,这样串联在一起是有问题的。例如,GPTQ是mixed int4/fp16,其中激活函数是fp16,GPTQ的模型没法和LORA层合并,因为LORA层都是fp16的。
(15)SFT训练过程是什么样?
第一,从loss角度,随着steps增加,train loss先急剧下降,而后平缓;evl loss先急剧下降,而后上升(过拟合)。
第二,为什么SFT通常在epoch=2时突然loss急剧降低?大模型参数量很大,在第一个epoch基本记住了整个训练集,所以在第二个epoch会突然下降,出现过拟合现象。
第三,摘抄-训10 个 epoch,如果某些case还学不会,说明模型的能力就是不够。
(16)SFT过程如何调参?
关于checkpoint的选择:在欠拟合和过拟合之间找到临界点。
learning rate一般设置为预训练阶段的0.1倍。小模型大学习率,大模型小学习率。降低学习率某种程度上可以缓解过拟合。
epoch和数据量成反比,数据量越大,epoch个数越少。较大的epoch会造成过拟合,epoch 基本上就是 1~3个。
batchsize主要取决于使用的硬件内存。
起始训练适当做点 warmup,几种主流的 lr_scheduler 可以都试一下。
gradient_accumulation_steps -16 / 32 / 64 / 128 等数字都可以尝试下(梯度累加就是,每次获取1个batch的数据,计算1次梯度,梯度不清空,不断累加,累加一定次数后,根据累加的梯度更新网络参数,然后清空梯度,进行下一次循环)。
按需求决定是否使用 dropout。
(17)如何评价SFT之后的效果?
对于模型效果的评估,我们可以用客观+主观的标准来衡量。
主观的标准是根据自己对产品的预期,确定预期目标效果的评估框架。
客观的评价就是loss曲线。
(18)SFT有哪些不良后果?如何避免?
第一,模型的特定领域能力增加,通用能力会降低。如何缓解SFT后模型通用能力的下降?使用数据配比(增加一些通用生成的数据)。
第二,出现过拟合现象,出现大模型幻觉。
什么是大模型幻觉?大模型乱说,上下文矛盾,prompt与事实矛盾,泛化能力弱、荒谬的回复等。
如何避免过拟合现象?可以考虑PEFT的方法、学习率调整、正则化技术。
(19)如何评估SFT的推理耗时?
摘抄:模型的预测时间可以近似理解为:k*x+b,其中 b 是首个 token 的耗时,k 是后续每个 token 的耗时,x 是生成 token 的总数量。更具体的,b 会是 k 的十几倍或更多,和 prompt 的长度几乎呈正相关。这个耗时的近似估算和 KV_cache 机制有关,不熟悉的可以自行搜索。
这也就是为什么众人都知 cot 效果好,众人又都不使用 cot,因为我们可以几乎下断言“模型的生成速度和生成 token 数量呈正相关”,而 cot 恰恰又引入了大量的生成 token。
(20)什么是SFT packing?
SFT packing指的是在训练sft的过程中,将多个sft数据pack到一个样本内进行训练的方式,这种方式会加快模型训练速度。如果不进行SFT packing,那么对于短文本sft,需要padding到一个batch的最长长度,会浪费很多计算token。
优点:充分利用GPU算力。
缺点:不利于短文本和多轮对话,一般情况下不建议使用。
(21)一句话形容SFT的原理?
预训练是next token prediction的自监督学习,SFT是next token prediction的监督学习,二者的反馈粒度都是token。
SFT像是在背书,一般不存在学不会,只存在不会泛化。
(22)代码部分:
第一,大模型model和分词器tokenizer是配套的。
第二,最终结果的输出,可以启用思考的模式,也可以不使用思考的模式。要启用思考模式,您可以通过设置 enable_thinking 参数来实现。在 Qwen3 模型中,您可以通过调用 tokenizer.apply_chat_template() 方法,并将 enable_thinking 参数设置为 True 来启用思考模式。
第三,模型加载代码:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_path = "./Mistral-7B-Instruct-v0.3-GPTQ-4bit"
tokenizer = AutoTokenizer.from_pretrained(model_path,trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path,
torch_dtype="auto",
device_map="auto" ,
trust_remote_code=False,
cache_dir = "./model",
load_in_4bit=True
)
第四,推理代码:
input_text = "Hello, World!"
input_ids = tokenizer.encode(input_text,return_tensors="pt").to(model.device)
with torch.no_grad():
output_ids = model.generate(
input_ids=input_ids,
max_length=50,
)
output_text = tokenizer.decode(output_ids[0], skip_special_tokens=True)
第五,微调训练代码。
有两种常用的方式,一种是transformers中的TrainingArguments和Trainer,另一种是TRL库中的SFTTrainer。
from transformers import AutoTokenizer, TrainingArguments, Trainer
training_args = TrainingArguments(
output_dir='./results',
overwrite_output_dir=True,
evaluation_strategy="steps",
num_train_epochs=3,
per_device_train_batch_size=8,
per_device_eval_batch_size=1,
save_steps=1000,
eval_steps=100,
save_total_limit=2,
run_name="Qwen3-0.5B",
save_on_each_node = True,
logging_steps = 10,
gradient_checkpointing=True,
gradient_accumulation_steps=4,#batch size大小等于per_device_train_batch_size * gradient_accumulation_steps
learning_rate=1e-4,
weight_decay = 0,
max_steps=1000, #覆盖num_train_epochs。
lr_scheduler_type = "linear",
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=inputs_ids,
eval_dataset=inputs_ids,
tokenizer=tokenizer,
)
trainer.train()
第六,tokenizer.eos_token一定要给出,否则大模型不知道什么时候结束。EOS token一定要加在文字的末尾。
普通人如何抓住AI大模型的风口?
领取方式在文末
为什么要学习大模型?
目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。
目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过 30%。
随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:
人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!
最后
只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!
在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
大模型全套学习资料展示
自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。
希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!
01 教学内容
-
从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!
-
大量真实项目案例: 带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
02适学人群
应届毕业生: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
vx扫描下方二维码即可
本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!
03 入门到进阶学习路线图
大模型学习路线图,整体分为5个大的阶段:
04 视频和书籍PDF合集
从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)
新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)
05 行业报告+白皮书合集
收集70+报告与白皮书,了解行业最新动态!
06 90+份面试题/经验
AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)
07 deepseek部署包+技巧大全
由于篇幅有限
只展示部分资料
并且还在持续更新中…
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发