限时福利领取


最近在学习大语言模型(LLM)相关知识,作为新手花了两周时间梳理了核心原理和优化技巧,这里用最直白的方式分享给同样刚入门的同学。

Transformer架构示意图

一、LLM为什么这么强

大模型的核心是Transformer架构,相比传统RNN有三大突破:

  1. 并行计算能力:不再需要像RNN那样顺序处理,可以同时计算所有位置的attention
  2. 长距离依赖:自注意力机制让任意两个token都能直接交互
  3. 可扩展性:通过堆叠多层Transformer block轻松扩大模型规模

二、Transformer核心三件套

1. 自注意力机制

公式看起来复杂但其实很简单:

Attention(Q,K,V) = softmax(QK^T/√d_k)V
- Q(Query):当前要计算的token - K(Key):用来匹配相似度的参照 - V(Value):实际要提取的信息

举个栗子:读句子"猫追老鼠"时,计算"追"的注意力时会: - 让"追"的Q分别与"猫"、"追"、"老鼠"的K做点乘 - 得到权重后对V加权求和

2. 前馈网络(FFN)

就是两个全连接层+激活函数:

# PyTorch示例
self.ffn = nn.Sequential(
    nn.Linear(d_model, d_ff),
    nn.GELU(),
    nn.Linear(d_ff, d_model)
)
给注意力输出增加非线性变换,相当于给模型加了"消化系统"

3. 位置编码

因为Transformer没有顺序概念,需要额外告诉模型token的位置信息。常用正弦波编码:

PE(pos,2i) = sin(pos/10000^(2i/d_model))
PE(pos,2i+1) = cos(pos/10000^(2i/d_model)) 

位置编码可视化

三、新手常见踩坑点

在实际部署时会遇到几个头疼问题:

  1. 显存爆炸:7B参数的模型加载就要14GB+显存
  2. 推理慢:生成式任务需要循环解码,耗时随输出长度增长
  3. 量化掉点:8bit量化后准确率下降明显

四、亲测有效的优化技巧

1. 模型量化

最简单的优化手段,分三个级别:

  1. 训练后量化(PTQ):直接转换权重精度
  2. 量化感知训练(QAT):训练时模拟量化过程
  3. 混合精度:关键层保持FP16
# 使用bitsandbytes库实现8bit量化
from transformers import BitsAndBytesConfig

quant_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True
)
model = AutoModelForCausalLM.from_pretrained("model_path", quantization_config=quant_config)

2. KV缓存优化

生成每个token时其实只需要计算最后一个位置的注意力:

# 推理时缓存之前的KV
past_key_values = None
for _ in range(max_length):
    outputs = model(input_ids, past_key_values=past_key_values)
    past_key_values = outputs.past_key_values
    next_token = sample(outputs.logits)
    input_ids = torch.cat([input_ids, next_token], dim=-1)

3. 动态批处理

同时处理多个请求时自动填充对齐:

输入: ["你好", "今天天气"]
实际处理: ["你好[PAD]", "今天天气"]

五、实测对比

在T4显卡上测试LLaMA-7B:

| 优化方法 | 显存占用 | 每秒生成token数 | |----------------|----------|-----------------| | 原始模型 | 14GB | 12 | | 8bit量化 | 6GB | 18 | | + KV缓存 | 6GB | 32 | | + 动态批处理 | 8GB | 56(批大小=4) |

六、个人学习建议

  1. 先跑通HuggingFace的示例代码
  2. 用小模型(如T5-small)调试理解流程
  3. 逐步添加优化技巧观察效果变化
  4. 多关注vLLM、TensorRT-LLM等推理框架

刚开始看论文可能一头雾水,建议先动手实践再回头看理论,会有种顿悟的感觉。下次准备试试LoRA微调,有进展再来分享~

Logo

音视频技术社区,一个全球开发者共同探讨、分享、学习音视频技术的平台,加入我们,与全球开发者一起创造更加优秀的音视频产品!

更多推荐