来源:互联网 更新时间:2026-07-30 13:45
要理解微调为什么重要,咱们得从ChatGPT的训练过程说起。
整个过程大体分三步。第一步,先在大规模的语料数据上做自监督训练,得到预训练模型。所谓的自监督,说白了就是把一句话后面的内容遮住,让模型来猜;如果是BERT那种,则是遮住中间某些词。第二步,此时的预训练模型已经具备了通用知识,也能用在某些具体领域,但为了让它更好地适应对话模式,还得用监督数据做指令微调。监督数据的格式比较简单,就是问题和答案用特殊分隔符拼在一起——比如输入"what is AI?",模型根据这个续写,在损失函数和优化器的作用下不断调整参数,直到输出尽量和标准答案一致。第三步,光会聊天还不够,还得和人类在同一个频道上。为了进一步对齐,ChatGPT用了一种叫RLHF的方法,也就是基于人类反馈的强化学习,再微调一轮。
这样下来,一个会聊天的ChatGPT才算真正成型。
第二步和第三步确实挺折腾的。但如果你直接把预训练模型扔到一个垂直领域——比如金融、农业、医疗,或者公司内部产品里——效果往往不太好。原因很简单:训练数据里根本没有你们公司的内部资料。
所以,要想效果好,一般都需要对预训练模型做微调。
微调可以从两个方向入手:
从模型入手,自然是要更新它的参数。不过,更新多少参数、怎么更新,里面的门道不少。
如上图所示,预训练模型的参数矩阵W要比A和B大得多。LORA训练过程只更新A和B,A和B可以看作是W的低秩分解。
从Prompt入手,就不改模型参数了。
接下来聊一个NLP和大模型领域非常知名的包:HuggingFace的Transformers,并基于它用LORA方法对预训练模型做微调。
确认已经装好Transformers库和PEFT库。如果没有,用下面的命令安装:
pip install transformers peft
选一个预训练模型,比如T5、BERT或者GPT-2。去Hugging Face模型库找合适的就行。
准备好训练集和测试集,用对应的Tokenizer对数据做分词处理。
创建LORA配置对象,指定要适配的模块和训练设置。
from peft import LoraConfig
lora_config = LoraConfig(
r=16, # 秩的大小
lora_alpha=32, # 每个自注意力头的参数数量
target_modules=["q", "v"], # 需要适配的模块
lora_dropout=0.05, # dropout率
bias="none", # 是否包含偏置项
task_type=TaskType.SEQ_2_SEQ_LM # 任务类型
)用Transformers库加载预训练模型和对应的Tokenizer。
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
model_name = "google/flan-t5-xxl" # 例如使用Flan-T5 XXL模型
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)用PEFT库准备模型。
from peft import get_peft_model, prepare_model_for_int8_training
model = prepare_model_for_int8_training(model) # 准备模型进行int-8训练
model = get_peft_model(model, lora_config) # 添加LORA适配器设置训练参数,定义数据收集方式。
from transformers import Seq2SeqTrainingArguments, DataCollatorForSeq2Seq
training_args = Seq2SeqTrainingArguments(
output_dir="lora-flan-t5-xxl",
learning_rate=1e-3,
num_train_epochs=5,
# 其他训练参数...
)
data_collator = DataCollatorForSeq2Seq(
tokenizer=tokenizer,
model=model,
# 其他数据收集参数...
)用Trainer类启动训练。
from transformers import Seq2SeqTrainer
trainer = Seq2SeqTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=your_train_dataset, # 你的训练数据集
eval_dataset=your_eval_dataset, # 你的评估数据集
training_args=training_args,
data_collator=data_collator,
)
trainer.train()训练完成后,用训练好的模型做评估和推理。
总的来说,除了RAG,微调是让大模型在特定领域变得更专业的另一种关键方法。这篇文章梳理了从模型层面和Prompt层面的不同微调方式,并用HuggingFace的Transformers配合LORA做了一次完整的实现。
摩托车活塞环性能如何
ThinkBook系列最新价格全解析:2026年选购避坑与实时询价指南
GPT5.6惨遭切脑,Fable 5回归要变弱鸡版?
Ondo将于今日上线股票永续合约
暗黑4S14野蛮人终局BD攻略
区块链OTC交易所有哪几家比较正规?
什么是山寨币?山寨币指数如何查看?全球前10大山寨币盘点
Binance新增15种bStocks代币化证券为杠杆抵押资产
全球十大加密货币APP v3.11.5正版下载
本周比特币行情预判:BTC后市的三种推演与两强对决
剑侠世界3雪峰论剑怎么打-剑侠世界3雪峰论剑打法介绍
Meme币DOGS今晚上线!开局就解锁91%代币是否带来风险?
五千元以下的笔记本几乎消失!经销商:至少一年看不到涨价尽头
超长高标准质保+总部直保售后体系:小牛真实售后体验大起底
比特币守住关键支撑,HYPE市值升至第九并反超DOGE
货拉拉如何查看历史订单 货拉拉往期行程轨迹查询【功能教学】
今日小鸡庄园答案2026.7.2
美债股纳斯达克首盘暴跌38%且加密代理交易解体,AVAX价格何去何从?
男生头像配网名可爱(精选100个)
赵云与阿斗神兵符使用教程 神兵符怎么使用
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc