
基本我们入门大模型开发,都是从简单的接口调用开始,循序渐进接触到各类核心技术。最开始只需直接使用现成通用模型,无需关注模型底层逻辑。但如果想要贴合自身业务做定制开发,就会接触到微调技术,解决模型专业性不足的问题。
当模型开发落地、部署上线时,又会遇到新问题:模型体积庞大、推理速度慢、普通设备承载困难。为了解决落地痛点,大家会陆续接触量化、剪枝、蒸馏等轻量化优化手段。在不断摸索中,最终才会明白预训练是所有大模型的能力底座,是一切优化的前提。这几项技术极容易混淆,分不清各自作用、适用场景和执行顺序。其实它们各司其职,完整覆盖大模型从诞生、定制优化到轻量化部署的全流程。今天我们循序渐进拆解各项技术核心逻辑、实战差异与联动关系,理清大模型完整落地链路。

预训练是大模型能力的基石,是大模型从无到有的核心研发环节,对应AI的通识学习阶段:
预训练全程采用自监督学习模式,无需人工标注数据,依靠海量通用数据迭代更新模型参数,完整原理拆解:
简单通俗拆解:

预训练作为大模型底座搭建环节,具备高成本、强通用、无专精、一次性落地的鲜明特点:
适用场景:
核心局限:
完整千亿参数预训练门槛极高,这里提供小模型预训练极简示例,模拟大模型自监督预训练核心逻辑,即进行下一词的预测,适配本地运行,理解预训练底层逻辑。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from datasets import load_dataset
# 1. 加载开源底座权重与分词器(模拟预训练初始化权重)
model_name = "gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token
# 2. 加载通用文本数据集(无标注自监督数据)
dataset = load_dataset("tiny_shakespeare", split="train[:1%]")
# 3. 数据预处理:适配下一词预测预训练任务
def preprocess_func(examples):
return tokenizer(examples["text"], truncation=True, max_length=128, padding="max_length")
tokenized_data = dataset.map(preprocess_func, batched=True)
tokenized_data.set_format("torch", columns=["input_ids", "attention_mask"])
# 4. 模拟预训练迭代(自监督学习,无人工标签)
model.train()
optimizer = torch.optim.AdamW(model.parameters(), lr=5e-5)
for step, batch in enumerate(tokenized_data):
batch = {k:v.unsqueeze(0) for k,v in batch.items()}
output = model(**batch, labels=batch["input_ids"])
loss = output.loss
loss.backward()
optimizer.step()
optimizer.zero_grad()
if step % 10 == 0:
print(f"预训练迭代step:{step}, 损失值:{loss.item():.4f}")重点说明:
微调是预训练模型落地业务的核心定制手段,是在通用底座基础上做专项优化,可通俗理解为AI的职业专项培训:
微调核心逻辑为保留通识,精进专项,无需重复学习基础语言能力,专注适配业务场景,核心原理拆解:
微调是轻量化、高灵活度的模型定制技术,是业务落地必备环节,主要特点:
适用场景:
核心局限:
采用主流PEFT-LoRA参数高效微调,仅训练少量增量参数、不破坏底座通用能力,低算力、防过拟合,适配企业业务落地。
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model
import torch
# 1. 加载预训练底座模型
model_name = "gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token
# 2. 配置LoRA微调参数(高效微调核心)
lora_config = LoraConfig(
r=8,
lora_alpha=16,
target_modules=["c_attn"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
# 3. 注入微调参数,冻结原模型权重
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# 4. 模拟垂直场景微调数据(客服问答数据)
train_texts = [
"用户:如何查询订单?助手:您可以进入个人中心,点击我的订单即可查询。",
"用户:如何申请退款?助手:找到对应订单,点击申请退款,审核通过后原路返回资金。"
]
# 5. 微调训练流程
inputs = tokenizer(train_texts, truncation=True, padding=True, return_tensors="pt")
outputs = model(**inputs, labels=inputs["input_ids"])
loss = outputs.loss
loss.backward()
print(f"微调训练损失:{loss.item():.4f}")
# 6. 微调后推理测试
model.eval()
test_input = tokenizer("用户:怎么退款?", return_tensors="pt")
res = tokenizer.decode(model.generate(**test_input, max_length=50)[0], skip_special_tokens=True)
print("微调后应答:", res)重点说明:
量化是大模型落地部署的基础轻量化技术,主打无损压缩、快速提速,是所有工业部署的首选方案,核心定义:
量化核心逻辑为精度换效率,无损换提速,利用模型参数冗余特性实现轻量化,原理拆解:
直观压缩效果对比:
量化技术分类:
量化作为基础轻量化技术,具备高稳定、高兼容、零改造的核心优势,主要特点:
适用场景:
核心局限:
使用主流bitsandbytes工具实现INT4量化,通用方案,一键压缩模型体积、降低显存、提升推理速度、近乎无损精度。
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import torch
# 1. 配置INT4量化参数
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16
)
# 2. 加载量化模型与分词器
model_name = "gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=bnb_config,
device_map="auto"
)
# 3. 量化前后体积与推理对比
input_text = "大模型量化的作用是"
inputs = tokenizer(input_text, return_tensors="pt").to("cuda")
output = model.generate(**inputs, max_length=60)
print("量化模型推理结果:", tokenizer.decode(output[0], skip_special_tokens=True))
# 输出模型占用显存
print(f"模型显存占用:{model.get_memory_footprint()/1024/1024:.2f} MB")重要说明:
剪枝是针对模型结构的根源性瘦身技术,通过剔除冗余参数实现模型轻量化,相比量化优化更彻底,核心定义:
剪枝核心逻辑为去芜存菁,保留核心能力,通过权重贡献度筛选冗余参数,完整原理拆解:
行业两大主流剪枝方案:
剪枝属于高阶轻量化技术,优化效果优于单一量化,同时存在一定精度管控门槛,主要特点:
适用场景:
核心局限:
基于PyTorch实现结构化剪枝,筛选并剔除模型冗余权重,固化轻量化模型结构,实现参数量精简与推理提速。
import torch
import torch.nn.utils.prune as prune
from transformers import AutoModelForCausalLM, AutoTokenizer
# 1. 加载原生模型
model_name = "gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token
# 2. 对注意力层进行结构化剪枝(剪枝比例30%)
module = model.transformer.h[0].attn.c_attn
prune.l1_unstructured(module, name="weight", amount=0.3)
# 3. 永久移除冗余参数,固化剪枝结构
prune.remove(module, "weight")
# 4. 剪枝后推理验证
input_text = "大模型剪枝可以"
inputs = tokenizer(input_text, return_tensors="pt")
output = model.generate(**inputs, max_length=60)
print("剪枝后模型输出:", tokenizer.decode(output[0], skip_special_tokens=True))
# 统计剩余参数量
total_params = sum(p.numel() for p in model.parameters())
print(f"剪枝后总参数量:{total_params/1000000:.2f} M")重要说明:
知识蒸馏是高阶模型轻量化技术,核心是大模型教小模型,能力平移复刻,和其他四种技术逻辑完全不同,具体定义如下:
蒸馏核心逻辑为迁移软知识,复刻推理逻辑,区别于传统模型硬标签训练,原理拆解如下:
完整蒸馏标准流程:

主流蒸馏类型:
知识蒸馏是轻量化效果最优的高阶技术,可打造极致高效的专属小模型,主要特点:
适用场景:
核心局限:
实现经典师生模型软标签知识蒸馏,让大模型赋能小模型,以小体量实现接近大模型的推理效果。
import torch
import torch.nn.functional as F
from transformers import AutoModelForCausalLM, AutoTokenizer
# 1. 初始化教师模型(大模型)、学生模型(小模型)
teacher_model = AutoModelForCausalLM.from_pretrained("gpt2-large")
student_model = AutoModelForCausalLM.from_pretrained("gpt2-mini")
tokenizer = AutoTokenizer.from_pretrained("gpt2")
tokenizer.pad_token = tokenizer.eos_token
# 冻结教师模型权重,仅训练学生模型
teacher_model.eval()
student_model.train()
optimizer = torch.optim.AdamW(student_model.parameters(), lr=2e-5)
# 2. 蒸馏超参数
temperature = 2.0 # 温度系数,软化输出概率
alpha = 0.7 # 蒸馏损失权重
# 3. 模拟训练数据
train_text = ["大模型知识蒸馏可以实现轻量化部署", "师生模型训练可以提升小模型效果"]
inputs = tokenizer(train_text, return_tensors="pt", padding=True, truncation=True)
# 4. 蒸馏核心损失计算
with torch.no_grad():
teacher_logits = teacher_model(**inputs).logits
student_logits = student_model(**inputs).logits
# 软标签蒸馏损失 + 硬标签原生损失
loss_soft = F.kl_div(
F.log_softmax(student_logits / temperature, dim=-1),
F.softmax(teacher_logits / temperature, dim=-1),
reduction="batchmean"
) * (temperature ** 2)
loss_hard = F.cross_entropy(student_logits.view(-1, student_logits.size(-1)), inputs["input_ids"].view(-1))
loss = alpha * loss_soft + (1 - alpha) * loss_hard
# 5. 反向传播更新学生模型
loss.backward()
optimizer.step()
optimizer.zero_grad()
print(f"蒸馏训练损失:{loss.item():.4f}")
# 6. 学生模型推理测试
student_model.eval()
test_input = tokenizer("蒸馏的作用是", return_tensors="pt")
res = tokenizer.decode(student_model.generate(**test_input, max_length=50)[0], skip_special_tokens=True)
print("轻量化学生模型输出:", res)重要说明:
从五大核心维度横向对比五项技术的核心差异,快速区分适配场景:

轻量化技术效果权衡对比:

最优区域:
三种技术对比
标准落地顺序:预训练→微调→蒸馏→剪枝→量化


整套流程落地后,可实现效果精准、体积小巧、推理极速、低成本落地的最优状态。
总的来说:预训练是从无到有造模型,搭建AI的通用认知底子;微调是从通用到专业改模型,让AI适配行业业务;量化、剪枝、蒸馏是从笨重到轻盈优模型,解决落地部署难题。
这些技术融合贯穿大模型研发、定制、优化、落地全生命周期,没有优劣之分,只有场景适配之别。建议优先掌握微调+量化,低成本快速实现业务落地;进阶优化再叠加剪枝、蒸馏,打造极致轻量化模型;而预训练仅需了解原理。循序渐进的掌握这些技术的核心逻辑,是一个逐步理解领悟的过程,只有掌握这些核心基础,才能打通大模型从研发到落地的核心链路,彻底摆脱技术混淆,能够根据自身业务需求,精准选择对应的优化方案,高效落地大模型应用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。