Ch1 · 微调与部署
预训练语言模型(Pre-trained Language Models, PLMs)已经成为自然语言处理领域的基础设施。从 BERT、RoBERTa 到 GPT 系列,这些在大规模语料上预训练的模型蕴含了丰富的语言知识和世界知识。然而,当我们将这些模型应用到具体的垂直领域任务时,比如虚假新闻检测、情感分类、命名实体识别,直接使用预训练模型往往无法达到最优效果。原因在于预训练阶段学习的是通用语义表示,而下游任务往往有其独特的分布和需求。
微调(Fine-tuning)正是解决这一问题的核心方法。通过在特定任务的标注数据上继续训练,微调能够让通用预训练模型快速适配目标任务,获得显著优于从头训练的效果。本章将以 虚假新闻检测(Fake News Detection) 作为实践场景,详细讲解如何使用 HuggingFace Transformers 工具包完成模型微调的全流程,并最终通过 Gradio Spaces 将模型部署为可在线体验的 Demo。
本章的学习目标是:熟悉 Transformers 工具包的核心 API;掌握预训练模型的微调与推理方法(提供解耦可定制版本和集成版本两条路径);学会利用 Gradio Spaces 进行 Demo 部署;了解不同类型预训练模型的选型策略和应用场景。
理解微调的本质,需要从预训练模型学到的知识类型说起。以 BERT 为代表的掩码语言模型(Masked Language Model, MLM)在训练时,模型需要预测被随机掩码的 token。这个过程迫使模型学习上下文相关的语义表示——每一个词的表示不再是孤立的词向量,而是融合了左右两侧语境信息的动态表征。这种表示方式使得模型能够捕捉词语的多义性、句法依存、语义关联等深层语言规律。
预训练完成后,模型参数中存储的是一种「通用但中性」的知识状态。当我们希望模型在特定任务上表现更好时,简单的做法是直接用预训练模型做推理,但效果往往不如预期。原因是预训练阶段并没有针对目标任务进行优化,模型的参数停留在一种「泛化但不够专门化」的状态。
微调的本质是任务自适应参数更新。我们固定住预训练模型的大部分参数,只在顶部添加一个随机初始化的任务头(Task Head),然后在目标任务的标注数据上进行训练。在反向传播过程中,梯度会从损失函数一路传回到底层参数,底层的 Transformer 编码器会「微调」其表示,使其更贴合当前任务的决策边界。这个过程可以类比为:一个在各行各业都有基本了解的全才,通过短期专业培训成为某个特定领域的专家。
微调过程中有几个关键设计决策:
- 学习率设置:预训练模型的底层参数通常使用比顶层任务头更小的学习率,这被称为「分层学习率衰减」(Layer-wise Learning Rate Decay)。直觉上,底层参数编码的是更通用、更底层的语言知识,这些知识已经相对稳定,不宜大幅修改;而顶层参数则需要较大的调整空间来学习任务相关的模式。
- 数据规模需求:与传统从头训练相比,微调对标注数据量的需求大幅降低。BERT 论文的实验表明,在 NLU 任务上,仅需 1 万条标注数据就能通过微调获得优异表现。这是因为预训练阶段已经让模型具备了足够的语言理解能力,微调阶段只需要「唤醒」相关能力。
- 训练轮次与早停:微调的训练轮次通常远少于从头训练,一般设置 2-5 个 epoch。过长的训练可能导致灾难性遗忘(Catastrophic Forgetting),即模型过度适应目标任务而丢失预训练阶段习得的有用知识。使用验证集监控性能并在最佳点早停是标准做法。
- 正则化策略:微调中常用的正则化手段包括 dropout、权重衰减,以及在部分参数上使用较小的学习率。对于参数量巨大的模型,有时会采用「参数高效微调」(Parameter-Efficient Fine-tuning, PEFT)方法,如 LoRA、Adapter,只更新少量额外参数。
虚假新闻检测(Fake News Detection)是信息素养领域的重要研究课题,也是检验微调技术的一个理想场景。其任务定义相对清晰:给定一段新闻文本,模型需要判断该新闻是真实的还是虚假的。这是一个典型的二分类问题,但实际操作中存在诸多挑战。
从数据角度看,虚假新闻检测面临的首要问题是数据分布的不平衡。在真实场景中,真新闻的数量远多于假新闻,因此收集到的数据集往往存在类别不均衡问题。此外,假新闻的表述方式多种多样,有些刻意模仿真实新闻的写作风格,有些则充满夸张和煽动性语言。模型需要学会捕捉这些细微差异。
从特征角度看,虚假新闻检测涉及多个层次的文本分析。词汇层面,假新闻可能包含更多的情感词、极端词、阴谋论相关的特定词汇;句法层面,假新闻可能使用更多的感叹句、疑问句来制造紧迫感;语义层面,假新闻可能在事实陈述上存在逻辑漏洞或与已知事实矛盾。优秀的检测模型需要综合这些多层次的特征。
本教程采用 Kaggle 上的虚假推文数据集作为实践数据。虽然名为「推文」数据集,但其文本特性与新闻文本有相通之处,非常适合作为入门的实验素材。该数据集包含真实灾难相关的推文和虚构或夸大的推文,模型需要根据文本内容进行二分类判断。
任务特点总结
虚假新闻检测是一个看似简单实则复杂的任务。其简单之处在于定义明确——二分类问题;其复杂之处在于需要模型理解语言背后的真伪判断逻辑,这涉及世界知识、逻辑推理和语言分析的综合能力。通过微调预训练语言模型,我们可以让模型具备这种综合判断能力。
为了兼顾教学清晰性和工程实用性,本教程提供了两条微调路径。第一条是解耦可定制版本,将整个流程拆分为三个独立模块:数据处理(utils_data.py)、模型构建(modeling_bert.py)和主程序(main.py)。这种设计让每个模块的职责边界清晰,便于理解核心逻辑和按需修改。
数据加载与处理模块(utils_data.py)
数据模块的核心职责是将原始文本转换为模型可接受的输入格式。这涉及几个关键步骤:
首先是数据读取。根据数据集格式(CSV、JSON 或其他),使用 pandas 等工具将数据加载到内存中。数据通常包含文本字段和标签字段,需要进行列名映射和数据清洗。
其次是分词器调用。HuggingFace Transformers 提供了统一的分词器接口,加载预训练模型时会自动下载对应的分词器。分词过程包括:将原始文本切分为 token 序列,将 token 映射为词汇表中的索引,添加特殊标记(如 [CLS] 表示分类输入的开始,[SEP] 表示句子分隔),以及将序列 padding 到统一长度以支持批量处理。
from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
encoded = tokenizer(
text="Breaking news: Earthquake hits downtown!",
padding='max_length',
truncation=True,
max_length=128,
return_tensors='pt'
)
# 返回包含 input_ids, attention_mask 等张量的字典
第三是数据集封装。将处理好的数据封装为 PyTorch Dataset 对象,提供 __len__ 和 __getitem__ 方法,以便 DataLoader 进行批量加载和随机打乱。
模型结构模块(modeling_bert.py)
模型模块负责构建完整的网络结构。在解耦版本中,我们显式定义了 BERT + 分类头的架构:
import torch.nn as nn
from transformers import BertModel, BertConfig
class BertForFakeNewsDetection(nn.Module):
def __init__(self, model_name='bert-base-uncased', num_labels=2):
super().__init__()
self.bert = BertModel.from_pretrained(model_name)
self.dropout = nn.Dropout(0.1)
self.classifier = nn.Linear(self.bert.config.hidden_size, num_labels)
def forward(self, input_ids, attention_mask, token_type_ids=None):
outputs = self.bert(
input_ids=input_ids,
attention_mask=attention_mask,
token_type_ids=token_type_ids
)
pooled_output = outputs.pooler_output # [CLS] token 的表示
pooled_output = self.dropout(pooled_output)
logits = self.classifier(pooled_output)
return logits
这个实现展示了微调的标准范式:加载预训练的 BERT 编码器,保留其全部参数,在顶部添加随机初始化的分类层。训练时,只有分类层和 BERT 编码器的顶层参数会被显著更新。如果希望更激进地微调,可以将 BERT 的全部参数设为可训练;如果资源受限,也可以冻结更多底层参数。
主程序模块(main.py)
主程序整合数据、模型和训练流程。其核心逻辑包括:
- 训练循环:遍历 DataLoader,对每个 batch 进行前向传播计算损失,反向传播更新参数。标准做法是每个 epoch 后在验证集上评估性能,保存最佳模型。
- 优化器配置:通常使用 AdamW 优化器,配合线性学习率衰减策略。权重衰减用于正则化,防止过拟合。
- 评价指标:对于二分类任务,常用准确率(Accuracy)、精确率(Precision)、召回率(Recall)和 F1 分数。可根据任务特点选择主要指标。
- 日志记录:使用 wandb 或 TensorBoard 记录训练过程中的各项指标,便于可视化分析和实验追踪。
# 训练循环核心代码
for epoch in range(num_epochs):
model.train()
for batch in train_loader:
optimizer.zero_grad()
input_ids = batch['input_ids'].to(device)
attention_mask = batch['attention_mask'].to(device)
labels = batch['labels'].to(device)
logits = model(input_ids, attention_mask)
loss = nn.CrossEntropyLoss()(logits, labels)
loss.backward()
optimizer.step()
# 验证
model.eval()
with torch.no_grad():
correct = 0
total = 0
for batch in val_loader:
# ... 前向传播 ...
predictions = torch.argmax(logits, dim=1)
correct += (predictions == labels).sum().item()
total += labels.size(0)
accuracy = correct / total
print(f"Epoch {epoch}: Accuracy = {accuracy:.4f}")
对于追求开发效率的场景,HuggingFace 提供了集成版本的微调方案。run_classification.py 脚本封装了完整的训练流程,通过命令行参数即可完成模型微调,无需编写任何 Python 代码。这种方式适合快速实验和标准化的模型训练场景。
python run_classification.py \
--model_name_or_path bert-base-uncased \
--train_file data/train.csv \
--validation_file data/val.csv \
--test_file data/test.csv \
--metric_name accuracy \
--text_column_name "text" \
--label_column_name "target" \
--do_train \
--do_eval \
--do_predict \
--max_seq_length 512 \
--per_device_train_batch_size 32 \
--learning_rate 2e-5 \
--num_train_epochs 3 \
--output_dir experiments/
Trainer API 的优势在于其丰富的内置功能:自动混合精度训练(FP16)、分布式训练支持、早停机制、自定义回调函数等。对于大规模数据和模型的场景,这些功能可以显著提升训练效率。同时,通过继承 Trainer 类并重写特定方法,可以方便地添加自定义评估逻辑或训练行为。
面对众多种类的预训练模型,如何选择是实际应用中必须考虑的问题。以下是几条选型原则:
任务适配性是首要考量。BERT 系列模型采用双向编码架构,适合需要理解完整上下文的任务,如文本分类、命名实体识别、问答系统等。GPT 系列采用自回归解码架构,更适合文本生成任务。如果任务涉及序列到序列的转换(如翻译、摘要),T5、BART 等编码器-解码器架构是更好的选择。
模型规模需要根据实际资源条件权衡。参数量越大的模型通常性能越好,但推理延迟和显存需求也越高。以 BERT 为例,base 版本有 110M 参数,large 版本有 340M 参数。在资源受限的场景下,可以考虑使用蒸馏模型(如 DistilBERT)或更小的预训练模型(如 BERT-tiny)。
训练语料和领域相关性会影响模型在特定任务上的表现。RoBERTa 在更大、更多样化的语料上训练,在许多任务上超越了 BERT。如果预训练语料与目标任务领域接近,选择在该领域相关语料上训练的模型可能效果更好。例如,BioBERT 在生物医学文献上训练,在医疗文本处理任务上表现优异。
- 情感分析:RoBERTa-base、DistilBERT(轻量级)
- 新闻分类:BERT-base、ERNIE
- 问答系统:BERT-large、RoBERTa-large
- 代码相关任务:CodeBERT、GraphCodeBERT
训练好模型后,如何让更多人方便地使用你的成果?Gradio Spaces 提供了免费的托管服务,支持创建和分享基于 Gradio 的交互式 Web 应用。通过简单的三步操作,就能将微调好的模型部署为可在线体验的 Demo。
部署三要素
Gradio Spaces 项目只需要三个核心文件:推理代码(app.py)、环境配置(requirements.txt)和模型文件。
推理代码(app.py)
import gradio as gr
import torch
from transformers import BertTokenizer, BertForSequenceClassification
# 加载本地模型和分词器
model_path = "your-model-path"
tokenizer = BertTokenizer.from_pretrained(model_path)
model = BertForSequenceClassification.from_pretrained(model_path)
model.eval()
def predict(text):
# 分词
inputs = tokenizer(text, return_tensors="pt",
truncation=True, max_length=128)
# 推理
with torch.no_grad():
outputs = model(**inputs)
probs = torch.softmax(outputs.logits, dim=1)
fake_prob = probs[0][1].item()
real_prob = probs[0][0].item()
return {
"真实新闻": f"{real_prob:.2%}",
"虚假新闻": f"{fake_prob:.2%}"
}
# 创建 Gradio 界面
iface = gr.Interface(
fn=predict,
inputs=gr.Textbox(label="输入新闻文本", placeholder="请输入待检测的新闻内容..."),
outputs=gr.Label(label="检测结果"),
title="虚假新闻检测 Demo",
description="基于 BERT 微调的虚假新闻检测模型"
)
iface.launch()
环境配置(requirements.txt)
transformers==4.30.2
torch==2.0.0
gradio==3.40.0
上传流程
登录 Hugging Face 官网,点击「New Space」创建新项目,选择 Gradio 作为 SDK。上传 app.py、requirements.txt 和模型文件后,Spaces 平台会自动配置环境并启动应用。部署完成后,你将获得一个公开可访问的 URL,可以分享给任何人使用。
成功部署的案例可参考:虚假新闻检测 Demo,其中包含了完整的源码和部署配置,可作为参考模板。
环境配置步骤
完整的开发环境配置建议按以下顺序进行:
- 创建独立的 conda 环境,避免依赖冲突:
conda create -n llm python=3.9 && conda activate llm - 安装 PyTorch,建议使用 conda 安装 GPU 版本,以支持 CUDA 加速训练
- 安装 transformers:
pip install transformers - 安装其他依赖:根据项目需求安装 datasets、accelerate、evaluate 等库
如果遇到下载速度慢的问题,可以配置国内镜像源。pip 支持通过 -i 参数指定镜像站点,常见的国内镜像包括清华源、阿里云源等。但需要注意,使用国内源安装 PyTorch 时,可能会自动选择 CPU 版本,需要额外配置 CUDA 版本。
常见问题排查
- 模型下载失败:显示「Network is unreachable」错误时,说明网络连接 HuggingFace Hub 失败。解决方案是手动下载模型到本地目录,然后修改代码中的模型路径为本地路径。
- 评测指标加载卡住:如果程序在训练开始后卡住,Ctrl+C 终止后显示卡在「connection」,说明 evaluate 库加载评测指标时网络超时。可下载 evaluate 仓库到本地,修改参数指向本地路径。
- 显存不足:减少 batch_size 或使用 gradient accumulation。也可以将模型转为半精度(FP16)以降低显存占用。
- 训练效果不佳:检查数据标注质量,确认 train/val/test 数据分布是否合理。尝试不同的学习率和训练轮次。
完成本章内容后,可以从以下几个方向继续深入:
轻量化微调技术:当预训练模型规模越来越大时,全参数微调的成本变得不可承受。LoRA(Low-Rank Adaptation)、Adapter、Prefix Tuning 等方法通过引入少量可训练参数实现高效微调,大幅降低了训练成本。这些方法已成为大模型时代的主流训练范式。
其他 NLP 任务:本章聚焦于文本分类任务,但微调范式同样适用于其他任务类型。问答系统需要预测答案的起止位置;命名实体识别需要为每个 token 预测标签;文本摘要则需要生成式的解码过程。HuggingFace 提供了丰富的示例脚本,可供迁移学习。
多模态扩展:CLIP、BLIP 等多模态模型的出现,使得图像+文本的联合建模成为可能。将微调技术应用到多模态任务,如图文匹配、视觉问答,是值得探索的方向。
模型蒸馏与压缩:将大模型的知识迁移到小模型,在保持性能的同时降低推理成本。这对于边缘部署和实时应用场景尤为重要。
以下内容来自本章 PDF 课件原文(77页),保留讲义的完整结构供对照参考。
从 NLP 小模型到多模态大模型,2022-2024 年是加速进化期。主流 LLM 参数规模从 340M 迅速扩展到 540B,算力需求从 256 GPU·天增长到 30 万+。Pre-LLM 到 LLM 经历了技术代际跨越:从 BERT 的判别式范式,转向 GPT 的生成式自回归范式。
将预训练模型应用于下游任务有四种成本效益不同的路径:①直接使用(零成本,但效果一般);②RAG(检索增强,需额外基础设施);③提示工程(无训练成本,但需精心设计 prompt);④微调(最高成本,但效果最优)。课件对比了各方案在准确率、部署复杂度、计算资源上的差异。
多模态模型的核心架构是"冻结编码器 + 可学习投影层":预训练的视觉编码器(如 CLIP)保持冻结,前景是可学习的跨模态投影层将视觉特征映射到语言空间。这种设计兼顾了预训练编码器的视觉理解能力与语言模型的推理能力。表格识别与流程图解析展示了视觉→结构化 + 逻辑推理的双重能力。
大模型能力演进可分为三级:基础能力(语言理解、文本生成)→ 涌现能力(思维链推理、零样本泛化)→ 增强能力(Agent 化:使用工具、规划任务、自我改进)。工具化是当前最显著的趋势,LLM 正从"生成文本"向"自主执行任务"演进。
以下为本章 PDF 课件原文(共77页),按页面顺序呈现,保留讲义的原始措辞与结构。
大模型技术与发展
张倬胜
上海交通大学计算机学院
zhangzs@sjtu.edu.cn
https://bcmi.sjtu.edu.cn/~zhangzs
目录
大模型概述
发展概览
概念范畴
预训练模型
主要类型
模型架构
大规模模型
范式变化
主要代表
关键技术
部署方式
概念延伸
垂直大模型
多模态基座
智能体基座
2
目录
大模型概述
发展概览
概念范畴
预训练模型
主要类型
模型架构
大规模模型
范式变化
主要代表
关键技术
部署方式
概念延伸
垂直大模型
多模态基座
智能体基座
3
人工智能的发展
人工智能技术经历了小数据到大数据,小模型到大模型,专用到通用的发展历程,正逐步进入大模型时代
在海量无标注数据上进行大规模自监督预训练,学习到大量的语言知识与世界知识
通过自然语言交互完成多种任务,具备了多场景、多用途、跨学科的任务处理能力
概念延伸
垂域大模型
多模态基座
智能体基座
[1] Zhao, Wayne Xin, et al. A Survey of Large Language Models. arXiv preprint arXiv:2303.18223.
大模型的范畴
垂域大模型
大规模语言模型
多模态基座
预训练语言模型
智能体基座
5
目录
大模型概述
发展概览
大模型范畴
预训练模型
主要类型
模型架构
大规模模型
范式变化
主要代表
关键技术
概念延伸
垂直大模型
多模态基座
智能体基座
6
预训练语言模型
语言智能新范式—预训练语言模型(代表:ELMo、BERT、GPT-1/2)
大规模数据上自监督预训练,经微调后适配各类任务,有效利用大数据、大模型和大算力
主要应用于语言解析和理解任务
[1] Zhang, Zhuosheng, et al. Machine Reading Comprehension: The Role of Contextualized Language Models and Beyond. arXiv preprint arXiv:2005.06249.
主要类型
编码器模型(Encoder-Only)
解码器模型(Decoder-Only)
编解码模型(Encoder-Decoder)
各类模型的关注度随时间变化
约2021年之前,编码器模型和
编解码模型的衍生版不断出现。
各版本被趣称为“BERTology”
约2021年之后,解码器模型得
到飞速的发展,迎来了“Next-
Level”的生成式大模型时代
[1] Rogers, Anna, et al. A primer in BERTology: What we know about how BERT works. TACL, 2021. [2] Minaee, Shervin, et al. Large language models: A survey. arXiv preprint arXiv:2402.06196.
从预训练建模的视角
从自监督预训练建模的角度,不同架构的训练目标存在差异
编码器模型:掩码语言建模(Masked Language Modeling)
解码器模型:自回归语言建模(Auto-regressive Language Modeling)
编解码模型:序列到序列建模(Sequence to Sequence Modeling)
[1] Ding, Ning, et al. Parameter-efficient fine-tuning of large-scale pre-trained language models. Nature Machine Intelligence, 2023.
编码器模型
主要训练目标:掩码语言建模(Masked Language Modeling,MLM)
代表性的模型:BERT、RoBERTa、ALBERT
NotNext
学习
Transformer Encoder
[CLS] 让 我们 一起 动手 [MASK] 大模型 开发 全流程
解码器模型
主要训练目标:自回归语言建模(Auto-regressive Language Modeling)
代表性的模型:GPT、Llama、PaLM等系列
让 我们 一起 动手 学习 大模型 关键 技术
Decoder
[BOS] 让 我们 一起 动手 学习 大模型 关键
优缺点对比
编码器模型(BERT)
解码器模型(GPT)
优点:利用双向上下文,语言理解效果好
优点:天然适合生成类任务,容易构造大规模的
缺点:
训练数据
使用[mask]特殊符号,导致预训练-微调差
缺点:
异;假设所有被mask的token相互独立
局限于单向建模,难以同时利用双向上下文信息
编解码模型
主要训练目标:序列到序列建模(Sequence to Sequence Modeling)
代表性的模型:T5、BART
Decoder
Encoder
让我们一起
针对应用场景的模型选择
编码器模型
解码器模型
编解码模型
分类回归等判别式任务
适合开放生成任务
兼具判别与生成能力
预训练语言模型:模型架构
RNN (LSTM)
捕捉词间的依赖关系。但因为梯度计算问题,RNN 常常难以训练
计算速度很慢,学习长依赖的能力也有限
Transformer √ (Attention is all you need)
完全摒弃 RNN 循环机制,采用自注意力机制进行全局处理
三个权重矩阵 (Query、Key和Value) 捕捉上下文依赖关系
多层网络:每层由多头注意力机制和前馈网络构成
添加了位置编码 (Positional Encoding)
15
目录
大模型概述
发展概览
大模型范畴
预训练模型
主要类型
模型架构
大规模模型
范式变化
关键技术
主要代表
部署方式
概念延伸
垂直大模型
多模态基座
智能体基座
16
大 型概览
17
[1] Zhao, Wayne Xin, et al. A Survey of Large Language Models. arXiv preprint arXiv:2303.18223.
大模型时代的范式变化
技术范式的迁移:从独立任务专门的训练到中心化的“预训练+后训练”和“预训练+提示学习”
任务范式的统一:从各自独立的任务形式迈向统一的序列到序列的建模形式
过去
现在(训练)
现在(应用)
提示工程
中心节点完成一般化的大规模预训练,提供
接近完成的模型,将其作为标准模块进行后
训练(指令微调/强化学习)以适配广泛场景
在每个任务上,各个用户自主搭建模
型,自己完成全部机器学习训练
上下文学习
思维链提示
工作流编排
个体化training
+ 后
轻量化训练
18
大 型时代的范式变化
技术范式的迁移:从独立任务专门的训练到中心化的“预训练+后训练”和“预训练+提示学习”
任务范式的统一:从各自独立的任务形式迈向统一的序列到序列的建模形式
19
[1] Chung, H.W., et al. Scaling instruction-finetuned language models. JMLR, 2024.
大规模语言模型
大规模语言模型:运用强大算法消耗大量算力,在海量数据中训练出复杂概率分布函数
更多的计算量、推理开销更大
泛化性能更强,出现涌现能力
类型对比
预训练语言模型
(中小模型、常规模型)
较大规模语言模型
(生成式大模型)
典型模型
ELMo,BERT,GPT-1/2
GPT-3、ChatGPT、LLaMA
模型结构
RNN,Transformer
Transformer
注意力机制
双向、单向
单向
训练方式
去噪自编码模型
自回归生成
擅长任务类型
理解、判断
生成
模型规模
约10B参数规模以下
约10B-100B参数规模及以上
下游任务应用方式
微调
微调 & 提示学习
涌现能力
小数据领域迁移
上下文学习,思维链提示
[1] Minaee, Shervin, et al. Large language models: A survey. arXiv preprint arXiv:2402.06196.
20
大规模语言模型
▸训练数据:多元化
▸不再仅仅是自然语言文本,而是多种数据的组合:自然语言文
本、编程代码、化学分子式,乃至基因序列,甚至图像
▸训练方式:从判别式预训练(BERT为典型)全面转向生成式预训练
(GPT为典型)
▸模型架构:从双向Transformer转向单向Transformer(Decoder-
only)
▸应用方式:从微调走向更为友好的提示学习
▸样本更少,从必须一定的标注样本,到少样本,乃至零样本
▸提示学习的工作形式逼近人机对话形式
21
关键技术
经典的三个主要构建阶段:预训练、指令微调、对齐
预训练
指令微调
对齐
数据
原始数据
千亿级文本、图书、
标注用户指令
数万用户自然语言指
标注对比对
十/百万标注对比对、
网页、代码等
令和对应的答案
与用户指令
模型
基础模型
SFT模型
对齐模型
目标
学习领域/通用知识
提升指令遵循能力
生成更安全的指令
月级别的训练时间
天级别的训练时间
天级别的训练时间
22
大 型构 程
预训练
指令微调
对齐
原始数据
千亿级文本、图书、
标注用户指令
数万用户自然语言指
标注对比对
十/百万标注对比对、
数据
网页、代码等
令和对应的答案
与用户指令
模型
基础模型
SFT模型
对齐模型
目标
学习领域/通用知识
提升指令遵循能力
生成更安全的指令
月级别的训练时间
天级别的训练时间
天级别的训练时间
23
关键技术1:预训练
算法
数据
算力
24
关键技术2: 调
▸通过高质量指令数据(告诉模型执行什么任务)对模型进行微调
▸帮助模型理解任务特征,大幅提升在各个任务上的性能表现
▸改善提示学习的稳定性,让模型输出文本更为可控
▸以“自然语言推理”为例,构造指令微调训练数据
常规微调
指令微调
25
关键技术2: 调
▸指令微调方式
▸借助现有的数据集:通过人为添加指定当前任务类型的提示作为输入的前缀(指令),
在多类型数据集上进行微调
▸基于人类演示的有监督微调:基于人类根据提示(指令)撰写的高质量回答,模型据
此来进行有监督微调
▸数据构造要点
▸任务数量
▸任务多样性
基于人类演示(InstructGPT )
借助现有的数据集(FLAN)
26
Wei, Jason, et al. "Finetuned Language Models are Zero-Shot Learners." International Conference on Learning Representations. 2021.
关键技术2: 调
▸FLAN指令微调:使用指令微调来提升模型的zero-shot能力
▸将62个自然语言处理任务分为12类
▸对于每个任务,将为其手动构建10个独特的指令模板
▸指令微调带来的效果提升存在明显的大模型效应
▸只有当模型规模在百亿左右,指令微调才会在样本外任务上带来提升
27
Wei, Jason, et al. "Finetuned Language Models are Zero-Shot Learners." International Conference on Learning Representations. 2021.
关键技术3:对齐
▸大规模语言模型常生成无用、有毒、不真实的答案
▸借助较少人力成本,利用强化学习方法进一步微调大语言模型
▸让大语言模型的输出“对齐”人类的意图,输出受人喜爱的答案
▸语言模型的输出越符合人类意图,越符合道德标准,则模型所获得的奖励越多
▸大幅减少有害和失真信息的输出
➢用户:询问如何破门闯入一间房子
➢ChatGPT:指出这是不合适的,可能引起犯罪
➢用户:改口说只是想保护自己房子免遭侵入
➢ChatGPT:给出了7条具体的建议
28
关键技术3:对齐
▸与人类偏好、价值观、意图、安全等方面的“对齐”
▸定义:引导人工智能系统的行为,使其符合设计者的利益和预期目标
▸国家颁布《互联网信息服务深度合成管理规定》、《生成式人工智能服务管理办法》
ChatGPT已被用于犯罪:
不得利用深度合成服务制作、复制、发布、传播虚假信息、不得利用深
网络攻击、犯罪指导等
度合成服务制作、复制、发布、传播法律、行政法规禁止的信息
29
关键技术3:对齐
▸原则:有用、诚实和无害
▸符合国家区域文化、符合法律法规、符合道德伦理、讲事实逻辑
▸技术要点:
▸数据集:SFT数据集(13k)、RM数据集(33k),RL数据集(31k)
▸模型:SFT监督微调模型、RM奖励模型、RL强化学习模型
30
Ouyang, Long, et al. "Training language models to follow instructions with human feedback." Advances in Neural Information Processing Systems 35 (2022): 27730-27744.
关键技术3:对齐
第一步:Supervised fine-tuning (SFT)
什么是月亮?
采样、API收集的数据
SFT模型
175B GPT-3
围绕地球旋转的
标注的目标答案
球形天体
Ouyang, Long, et al. "Training language models to follow instructions with human feedback." Advances in Neural Information Processing Systems 35 (2022): 27730-27744.
31
关键技术3:对齐
第二步:Reward modeling (RM)
什么是月亮?
预训练的175B GPT-3
SFT模型
A. 月亮是太阳系
D. 月亮是地球的
中离地球最近的
卫星,直径约等
于地球1/4。
...
天体。
6B 模型(便宜+稳定)
排序模型(问题+ 答案
输出分数)
RM模型
D > C > A = B
Ouyang, Long, et al. "Training language models to follow instructions with human feedback." Advances in Neural Information Processing Systems 35 (2022): 27730-27744.
32
关键技术3:对齐
第二步:Reward modeling (RM)
什么是月亮?
预训练的175B GPT-3
SFT模型
A. 月亮是太阳系
D. 月亮是地球的
中离地球最近的
卫星,直径约等
于地球1/4。
...
数据集中问题x对应的两个答案,
天体。
且yw 排序比yl 高
RM模型
RM模型打分差值
数据集中的问题
D > C > A = B
Ouyang, Long, et al. "Training language models to follow instructions with human feedback." Advances in Neural Information Processing Systems 35 (2022): 27730-27744.
33
关键技术3:对齐
第三步:Reinforcement learning (RL)
什么是室温超导?
yl
SFT模型
RL模型
RM模型
PPO
注:PPO,Proximal Policy Optimization,近端策略优化
Ouyang, Long, et al. "Training language models to follow instructions with human feedback." Advances in Neural Information Processing Systems 35 (2022): 27730-27744.
34
关键技术3:对齐
第三步:Reinforcement learning (RL)
什么是室温超导?
yl
SFT模型
RL模型
RM模型
PPO
原始语言模型损失函数
InstructGPT
注:PPO,Proximal Policy Optimization,近端策略优化
Ouyang, Long, et al. "Training language models to follow instructions with human feedback." Advances in Neural Information Processing Systems 35 (2022): 27730-27744.
35
关键技术3:对齐
36
大规模语言模型的扩展定律(Scaling Law)
模型性能与模型大小、数据规模和算力三者之间的关系
随着模型参数规模和预训练数据规模的不断增加,模型能力与任务效果将会随之改善
Chinchilla推荐:10B模型用200B tokens(1:20)
[1] Kaplan, Jared, et al. Scaling laws for neural language models. arXiv preprint arXiv:2001.08361.
37
大规模语言模型的涌现能力(Emergent Abilities)
语言模型参数达到一定规模时,某些能力表现(语言推理)会突然大幅提升
在小模型中未观察到但在大模型中体现出来的能力
涌现能力的代表
上下文学习
思维链推理
[1] Wei, Jason, et al. Emergent Abilities of Large Language Models. TMLR, 2022.
38
大规模语言模型的幻觉(Hallucination)
定义:模型生成的文本不遵循原文(Faithfulness)或不符合事实(Factualness)
能力优势:大模型创造性和发散能力的体现
潜在影响:影响模型可信度,容易被攻击、被滥用(如恶意内容生成和散播谣言),污染互联网
问:鲁迅和周树人是同一个人吗?
答:不是。鲁迅和周树人是两个不同的人。
鲁迅是中国今现代文学巨匠,以其独特的
文学风格和引人入胜的故事而闻名。周树
人是中国当代著名作家,以其犀利的文字
和敏锐的观察而受到推崇。
39
[1] Huang, Lei, et al. A survey on hallucination in large language models: Principles, taxonomy, challenges, and open questions. arXiv preprint arXiv:2311.05232
大模型的能力版图
40
[1] Minaee, Shervin, et al. Large language models: A survey. arXiv preprint arXiv:2402.06196.
从GPT-3到ChatGPT
GPT-1:单向自回归建模 + 有监督微调,探索“预训练+微调”范式下的自然语言任务求解能力
GPT-2:单向自回归建模 + 更多的数据、更大的模型,探索基于自然语言提示的多任务解决能力
GPT-3:探索了千亿参数规模的语言模型效果,提出了基于“上下文学习”的任务解决方法
GPT-3.5/ChatGPT:指令微调 +人类反馈 + 对话优化
GPT-4: 多模态能力,更长的上下
文理解与处理能力,更高效的训练
与预测,更广泛的高价值应用场景
45TB数据
GPT 系列演进
GPT系列的版本演化
GPT-4在各种专业和学术基准上表现出人类相当的水平,包括约前 10% 的成绩通过模拟律师资格考试
强大的多模态处理能力扩大了 GPT-4 的应用范围,同时生成式的幻觉、安全问题均有较大的改善
OpenAI 发布 GPT-4 使用指南
➢写出清晰的指令
➢提供参考文本
➢将复杂的任务拆分为更简单的子任务
➢给模型时间「思考」
➢使用外部工具
➢系统地测试变更
[1] Achiam, Josh, et al. Gpt-4 technical report. arXiv preprint arXiv:2303.08774.
[2] OpenAI. Prompt engineering. https://platform.openai.com/docs/guides/prompt-engineering.
Llama系列大模型
开源自回归模型,基于Transformer架构,参数规模从 7B到 405B 不等
商用许可:Llama 1不可免费商用,Llama 2和Llama 3可商用(需申请商用许可)
版本特点
Llama-1
Llama-2
Llama-3
Llama-3.1
Llama-3.2
模型规模
7B-65B
7B-70B
8B-70B
8B-405B
1B-90B
数据规模
1.4T
2T
15T
15T
9T
多模态
×
×
×
×
√
多语言
×
×
×
√
√
工具调用
×
×
×
√
√
训练范式
预训练
预训练+指令微调
预训练+指令微调
+DPO
预训练+指令微调+DPO
预训练+指令微调
+RLHF
+DPO
上下文长度
2K
4k
8k
131K
131K
1. 增加模型规模
2. 增加多语言和工具能力
3. 扩展上下文长度
1. 增加端侧模型
2. 增加多模态能力
主要演变
增加后训练
扩展预训练
[1] Touvron, Hugo, et al. Llama: Open and efficient foundation language models. arXiv preprint arXiv:2302.13971.
[2] Touvron, Hugo, et al. Llama 2: Open foundation and fine-tuned chat models. arXiv preprint arXiv:2307.09288.
[3] Dubey, Abhimanyu, et al. The llama 3 herd of models. arXiv preprint arXiv:2407.21783.
Llama系列大模型
训练数据: CommonCrawl, C4, Github, Wikipedia, books, ArXiv, and StackExchange等
开源地址:https://github.com/facebookresearch/llama
Llama 3.1 405B 在广泛评测中超越 GPT-3.5 Turbo、大部分基准测试得分超过了 GPT-4 0125
[1] Dubey, Abhimanyu, et al. The llama 3 herd of models. arXiv preprint arXiv:2407.21783.
国产AI大模型分类及典型案例
百模大战:据不完全统计,截至2024年4月底,国内共推出305个大模型
[1] SuperGLUE团队. 中文大模型基准测评2024年度报告.
45
Qwen系列大模型
通义千问(Qwen)是阿里云研发的预训练语言模型,执行理解、生成和解释人类语言、图片和文
档等任务,在创意文案、办公助理、学习助手、趣味生活等方面为使用者提供丰富的交互体验
具备中英文理解、数学推理、代码理解等能力
Qwen-Audio
Qwen-Audio-Chat
[1] Bai, Jinze, et al. Qwen technical report. arXiv preprint arXiv:2309.16609.
[2] Yang, An, et al. Qwen2 technical report. arXiv preprint arXiv:2407.10671.
Qwen系列的版本演化
Qwen1.5: Model Scaling向更大和更小扩展、MoE、
版本迭代特点
AWQ/GGUF
➢结构优化(MoE提高训练效率)
Qwen2: 多语言增强、长文本能力增强
➢预训练数据的数量扩充与质量提升
Qwen2.5: 数学、代码能力增强、多语言增强
➢丰富Post-training阶段涵盖任务和领
Scaling
域
Qwen: 1.8B, 7B, 14B, and 72B models
➢窗口长度的扩展(训练数据和训练策略
Qwen1.5: 0.5B, 1.8B, 4B, 14BA2.7B, 7B, 14B, 32B,
两方面)
72B, and 110B models
➢多语言语向扩增与能力增强
Qwen2: 0.5B, 1.5B, 7B, 57A14B, and 72B models
➢专项能力增强(训练专家模型+以专家
模型带动基模)
Qwen2.5: 0.5B, 1.5B, 3B, 7B, 14B, 32B, and 72B
➢模态扩展(Qwen-VL、Qwen-Audio)
models
DeepSeek 系列大模型
2023.11
1
DeepSeek LLM
参数规模:70B、67B参数
架构:Dense(稠密)Transformer 模型
训练数据:2T token中英文语料
训练范式:遵循预训练+SFT+DPO标准大
模型训练范式
性能:DeepSeek的首个大模型,对标
Llama2系列。67B Base版本在推理、编码
等方面超越了Llama2 70B Base。模型架构
采用Dense结构
DeepSeek 系列大模型
2024.5
2
2023.11
1
DeepSeek-V2
DeepSeek LLM
参数规模:236B参数,激活参数21B
架构:引入DeepSeekMoE(混合专家)架构。引入MLA
(Multi-head Latent Attention)
训练数据:8.1T token语料
训练范式:遵循预训练+SFT+强化学习标准范式
特点:性能比肩GPT-4 Turbo。MLA使得KV cache节约90%
以上,推理速度提升5倍以上。MoE架构使得模型参数扩大时,
推理成本几乎不变,训练成本大幅降低,提升模型能力
参数规模:70B、67B参数
架构:Dense(稠密)Transformer 模型
训练数据:2T token中英文语料
训练范式:遵循预训练+SFT+DPO标准大
模型训练范式
性能:DeepSeek的首个大模型,对标
Llama2系列。67B Base版本在推理、编码
等方面超越了Llama2 70B Base。模型架构
采用Dense结构
DeepSeek 系列大模型
2024.5
2
2024.9
3
DeepSeek-V2
DeepSeek-V2.5
参数规模:236B参数,激活参数21B
架构:引入DeepSeekMoE(混合专家)架构。引入MLA
(Multi-head Latent Attention)
训练数据:8.1T token语料
训练范式:遵循预训练+SFT+强化学习标准范式
特点:性能比肩GPT-4 Turbo。MLA使得KV cache节约90%
以上,推理速度提升5倍以上。MoE架构使得模型参数扩大时,
推理成本几乎不变,训练成本大幅降低,提升模型能力
基于V2,主要优化了通用任务
能力和代码能力
DeepSeek 系列大模型
2024.12
4
2024.9
3
DeepSeek-V3
DeepSeek-V2.5
参数规模:671B参数,激活参数37B
训练数据:14.8T token语料
架构:在V2基础上,引入Auxiliary-loss-free strategy来进行
专家均衡。引入Multi-Token Prediction training提升模型性
能和加速推理。引入FP8混合精度降低训练和推理开销
训练数据:14.8T token语料
训练范式:遵循预训练+SFT+DPO标准大模型训练范式
特点:性能超越主流的Llama3系列和Qwen2.5系列,且训练
开销和推理开销大幅降低
基于V2,主要优化了通用任务
能力和代码能力
DeepSeek 系列大模型
2024.12
4
2025.01
5
DeepSeek-V3
DeepSeek-R1
参数规模:671B参数,激活参数37B
训练数据:14.8T token语料
架构:在V2基础上,引入Auxiliary-loss-free strategy来进行
专家均衡。引入Multi-Token Prediction training提升模型性
能和加速推理。引入FP8混合精度降低训练和推理开销
训练数据:14.8T token语料
训练范式:遵循预训练+SFT+DPO标准大模型训练范式
特点:性能超越主流的Llama3系列和Qwen2.5系列,且训练
开销和推理开销大幅降低
基座模型:DeepSeek-V3-
Base
训练数据:14.8T token语料
训练范式:在base模型上直接
进行多阶段训练、冷启动训练
和强化学习
特点:首次达到了类GPT4-O1
的推理能力
部署大模型
大模型类型:
部署方式:
大语言模型:Qwen
API调用
多模态模型:MiniCPM
本地部署
53
部署大模型(功能样例)
54
部署大模型(API调用)
获得大模型调用权限
通义千问:https://help.aliyun.com/zh/dashscope/developer-reference/quick-start
DeepSeek: https://www.deepseek.com
Llama: https://github.com/Meta-Llama/llama
智谱AI: https://open.bigmodel.cn/
Openai:https://platform.openai.com/playground
其他:文心一言、百川大模型
*基本流程:开通服务获得API-KEY(获赠计算额度),使用API Key调用服务(其中OpenAI需要科学手段)
55
部署大模型(API调用)
通过GUI界面调用(适合案例测试)
https://help.aliyun.com/zh/dashscope/developer-reference/quick-start
https://huggingface.co/spaces/Qwen/Qwen2-72B-Instruct
56
部署大模型(API调用)
通过代码调用:
环境准备(可选):
VS Code开发工具:
https://code.visualstudio.com/
利用Miniconda进行Python环境管理:
https://docs.anaconda.com/free/minicond
a/miniconda-install
57
部署大模型(本地部署)
大模型本地部署开源平台:Ollama, LM Studio
Web与API调用:OpenAI,Dashscope API
大模型本地私有化部署:Flask,MindIE
https://ollama.com/
https://lmstudio.ai/
58
部署大模型(本地部署)
配置要求
显存要求
硬盘要求
59
部署大模型(本地部署)
1. 安装Ollama
访问官方网站:打开浏览器,访问Ollama官方网站。
选择版本:根据您的操作系统选择相应的安装包。Ollama支持MacOS、Linux和Windows
下载安装包:点击Download按钮,下载适用于您设备的Ollama安装包
安装Ollama:根据下载的安装包格式,运行安装程序或解压缩文件到您选择的目录
2. 运行特定模型(ollama run qwen2:7b)
60
部署大模型(本地部署)
1. 安装Ollama
2. 运行特定模型(ollama run qwen2:7b)
61
部署大模型(本地部署)
1. 安装Ollama
2. 运行特定模型(ollama run qwen2:7b)
进阶:
1.
使用open web UI配置WebUI
2.
基于AnythingLLM搭建本地知识库
62
目录
大模型概述
发展概览
大模型范畴
预训练模型
主要类型
模型架构
大规模模型
范式变化
关键技术
主要代表
部署方式
概念延伸
垂直大模型
多模态基座
智能体基座
63
大模型概念延伸
垂域大模型
多模态大模型
大模型智能体
用户
大模型
用户
智能体
用户
大模型
环境
领域数据
多模态数据
64
垂域大模型
基本范式:在通用大模型基础上进行领域训练增强,专业性强、落地速度快、成本效益高、合规性好
训练方式:领域数据训练(继续预训练、微调、提示)、检索增强等
常见领域:教育、医疗、法律、金融等
[1] Ling, Chen, et al. Domain specialization as the key to make large language models disruptive: A comprehensive survey. arXiv preprint arXiv:2305.18703.
65
多模态大模型的前沿发展
多模态大模型的能力突破,成为大模型前沿发展的新趋势和焦点
极大拓展大模型能力边界和应用场景,智能跃迁的下一个关键引擎
66
A Survey on Multimodal Large Language Models (https://arxiv.org/pdf/2306.13549)
多模态大模型的能力样例
67
多模态大模型的前沿发展
里程碑事件
技术概要
2023/03/15: OpenAI 发布多模态对话模型 GPT-4
主要目标:基于大数据和人类反馈进行学习,与用
2023/09/20: OpenAI 发布文生图模型 DALL·E 3
户通过对话进行交互,能够处理多模态信息及多种
2023/09/25: ChatGPT 全面整合多模态能力
任务,深层推理与常识运用能力大幅度提升
2023/12/06: Google 发布多模态模型 Gemini
关键技术:多模态模型架构、多模态指令遵循、多
2024/03/04 : Anthropic发布多模态模型 Claude 3
模态推理、轻量化部署、多模态对齐等
2024/05/13: OpenAI发布原生多模态模型 GPT-4o
工作范式的变化
文本
文本
语音
语音
文本
文本
大语言
多模态
大模型
图像
图像
模型
视频
视频
…
…
[1] Fei, Hao, et al. From Multimodal LLM to Human-level AI: Modality, Instruction, Reasoning and Beyond. ACM MM, 2024.
https://mllm2024.github.io/ACM-MM2024/
68
多模态大模型的前沿发展
通用工作模式:多模态编码 > 特征融合模块> 多模态解码器,支持多模态输入与多模态生成
常见模态:文本、图像、视频、语音等
[1] Zhang, Duzhen, et al. Mm-llms: Recent advances in multimodal large language models. arXiv preprint arXiv:2401.13601.
69
多模态大模型的代表性架构
LLM为中心的架构
用户
…
⊹
Visual-ChatGPT
⊹
HuggingGPT
⊹
MM-REACT
⊹
LLaVA-Plus
⊹
…
下游模块
下游模块
…
LLM
下游模块
下游模块
解码器
编码器
文本
文本
一体化多模态架构
LLM
大多数多模态大模型的架构类型
多模态
输入
多模态
输出
多模态编码器
多模态解码器
70
多模态大模型的前沿教程(CVPR & MM & COLING )
讲义 + 视频
https://mllm2024.github.io/CVPR2024
71
大模型智能体
无处不在的“贾维斯”,大模型智能体展现出广泛的应用前景
OpenAI Operator
Anthropic Claude
Manus AI
https://openai.com/index/introducing-operator
https://www.anthropic.com/claude
https://manus.im/
72
大模型智能体
基于大模型构建,能够动态指导其自身流程和工具使用,并根据实时反馈调整自己的操作的系统1
(多模态)大语言模型
大模型智能体(系统)
具备自主和进化能力
用户
大模型
用户
智能体
环境交互:感知理解、
规划决策、动作落实
通用能力的提供者
持久运行:反思优化、
环境
迭代演化、安全防护
长序列处理
知识更新:知识库、经验库
思维链推理
集成工具:APP、API、函数
广泛意图理解
1Anthropic. Building effective agents. Published Dec 19, 2024
73
大模型智能体
智能体基座
工作流编排
通过预定义的路径编排LLM和工具,类似
复杂的自动化脚本。常以Prompt方式实现
自主指导行为过程和工具使用,动态规划和更新路径,
保持对任务完成方式的控制。常以训练方式拓展能力
将AI视为可编排的组件
给予AI更大的自主性、可进化
74
突破大模型的能力边界
大模型智能体的能力突破,成为新焦点,极大拓展大模型能力边界和应用场景
L2:Reasoners
L3:Agents
L1:Chatbots
L4:Innovators
创新与发明
L5:Organizations
o1,DeepSeek-R1
Operator,Deep Research
GPT-4、DeepSeek-V3
组织与管理
深度思考推理
自主行动与交互
通用语言交互
应用:数学、逻辑推理
应用:工具调用、操控、探索
应用:问答、对话、搜索
语言->行动:从内容智能到行为智能,建立迈向通用人工智能的关键纽带
75
延伸阅读素材
《大模型开发全流程》
国产化大模型课程:54节课程、26份实践手册
https://www.hiascend.com/edu/growth/lm-development
76
谢谢!
zhangzs@sjtu.edu.cn
https://bcmi.sjtu.edu.cn/~zhangzs
本章源码与实验数据可通过项目仓库获取,包含完整的解耦版本和集成版本代码,以及预处理好的虚假新闻数据集。