LLM大模型-基础篇-深度学习基础
·
1. Transformer 介绍
Transformer 是现代大语言模型(LLM)的核心架构。
它解决了 RNN/LSTM 在长文本处理、并行计算上的不足。
Hugging Face 的 Transformers 库 让我们可以直接调用各种基于 Transformer 的预训练模型,快速完成 NLP 任务。
备注:
- “LLM” 指的是 Large Language Model(大语言模型),如 ChatGPT、GPT-4、BERT 等。
- Transformer 是一种模型架构,而 Transformers 库是一个工具包,二者不要混淆。
2. Transformer 原理
2.1 背景
- RNN/LSTM 的局限:速度慢、长依赖差、训练不稳定。
- Transformer 由 Google 于 2017 年提出,完全基于注意力机制(Attention)。
备注:
- “长依赖”指的是句子中相隔很远的词之间的关系,比如“我昨天在公园看见了一只猫,它很可爱”中,“猫”和“可爱”之间的关系。
- Transformer 通过 Attention 可以一次性看到整句话,不需要像 RNN 那样一个词一个词处理。
2.2 核心思想
- 注意力机制:在处理某个词时,根据它与其他词的相关性分配不同的关注权重。
- 多头注意力:并行计算多组注意力,捕捉不同特征。
- 位置编码:为模型提供词序信息。
- 前馈网络:加工每个位置的向量。
- 残差连接 + 层归一化:稳定训练、防止信息丢失。
备注:
- “多头”不是指模型有多个脑袋,而是指它会用多组不同的参数去计算注意力,每组关注的重点可能不同。
- 位置编码是因为 Transformer 本身不关心顺序,需要额外告诉它“第几个词”。
2.3 结构
- 编码器(Encoder):理解输入序列。
- 解码器(Decoder):生成输出序列。
- 在 GPT 等 LLM 中,通常只保留解码器部分。
备注:
- BERT 属于“只用编码器”的模型,适合理解类任务(分类、问答)。
- GPT 属于“只用解码器”的模型,适合生成类任务(写作、对话)。
3. Transformers 库简介
3.1 什么是 Transformers 库?
- Hugging Face 开发的开源 Python 库。
- 提供各种预训练的 Transformer 模型(BERT、GPT、T5 等)。
- 支持 PyTorch 和 TensorFlow。
- 提供简单的
pipelineAPI 和灵活的底层接口。
备注:
- “预训练模型”是指已经在大规模数据上训练好的模型,可以直接用,也可以在你的数据上微调。
pipeline是最简单的调用方式,适合快速体验。
3.2 为什么用它?
- 节省时间:无需从零训练模型。
- 降低门槛:几行代码即可调用先进模型。
- 快速验证:适合原型开发和实验。
备注:
- 从零训练一个 GPT 级别的模型可能需要几百万美元的算力成本,而用 Transformers 库可以免费调用别人训练好的模型。
3.3 能做什么?
- 文本分类(情感分析、垃圾邮件检测)
- 文本生成(自动写作、对话机器人)
- 机器翻译(多语言互译)
- 文本摘要(新闻、报告)
- 问答系统(文档问答、阅读理解)
- 命名实体识别(人名、地名、机构名)
- 语音与多模态任务(ASR、TTS、图像分类)
备注:
- 这些任务都可以用
pipeline一行代码完成,非常适合初学者先跑通流程。
4. 安装与环境准备
4.1 安装 Transformers
pip install transformers
备注:
- 如果下载速度慢,可以换国内镜像,比如清华 TUNA。
4.2 安装 PyTorch(GPU 版本)
pip install torch --index-url https://download.pytorch.org/whl/cu118
备注:
cu118表示 CUDA 11.8 版本,要和你电脑的 CUDA 驱动匹配。- 如果没有 GPU,可以直接安装 CPU 版本:
pip install torch。
4.3 可选:安装加速工具
pip install accelerate
备注:
accelerate可以帮你自动选择设备(CPU/GPU/多卡),适合大模型推理。
5. 快速上手示例
5.1 情感分析
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
print(classifier("I love learning AI!"))
备注:
- 输出是一个列表,包含标签(POSITIVE/NEGATIVE)和置信度分数。
5.2 文本生成
generator = pipeline("text-generation", model="gpt2")
print(generator("Once upon a time", max_length=30))
备注:
max_length控制生成的最大长度,单位是 token(不等于字数)。
5.3 机器翻译
translator = pipeline("translation_en_to_zh", model="Helsinki-NLP/opus-mt-en-zh")
print(translator("Transformers are amazing for NLP tasks!"))
备注:
- 模型名
Helsinki-NLP/opus-mt-en-zh表示“英语到中文”的翻译模型。
6. 自定义模型调用
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
inputs = tokenizer("I love learning AI!", return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
print(predictions)
备注:
AutoTokenizer负责把文本转成模型能理解的数字(token)。AutoModelForSequenceClassification是分类任务的模型类。return_tensors="pt"表示返回 PyTorch 张量。
7. 常见问题与优化建议
- 下载慢:使用国内镜像或提前下载模型。
- 显存不足:使用更小的模型或
device_map="auto"。 - 版本冲突:使用虚拟环境隔离依赖。
备注:
- 如果显存不足,可以用
model.half()(半精度)或quantization(量化)来减少显存占用。
8. 总结
- Transformer 原理是理解 LLM 的基础。
- Transformers 库让我们可以直接使用这些模型完成各种 NLP 任务。
- 初学者建议先用
pipeline快速体验,再深入学习自定义模型和微调方法。
更多推荐



所有评论(0)