问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

LLM性能优化技巧全解析

创作时间:
作者:
@小白创作中心

LLM性能优化技巧全解析

引用
CSDN
1.
https://blog.csdn.net/star_nwe/article/details/144786071

本文详细介绍了LLM性能优化的各种技巧,包括MHA结构优化、MHA工程优化、FFN部分优化、微调、训练相关和推理相关等。这些优化方法可以帮助开发者在保持模型性能的同时,降低计算和存储成本,提高模型的运行效率。

一、MHA结构优化(效果有损)

KV Cache的大小取决于模型大小(dim和layers)和序列长度。为了支持更大的模型或更长的序列,需要对kv进行压缩。以下是几种常见的MHA参数量压缩方法:

  1. MQA(Multi-Query Attention)
  • 多组Q,共享K、V,将KV Cache减少到原来的1/h。
  • 通常会相应增大FFN/GLU的规模以弥补效果损失。
  • 使用MQA的模型包括PaLM、Gemini等。
  1. GQA(Grouped-Query Attention)
  • 是MQA和MHA的折中方案。
  • 使用GQA的有LLaMA 2、Code LLaMA等。
  1. MLA(Multi-head Latent Attention)
  • DeepSeek-V2使用低秩投影压缩KV Cache的大小。
  • 示例见下图右侧:
  1. SWA(sliding window attention)
  • 每个位置只能往前看N个输入,本质上是一种sparse attention。
  • 通过Rolling Buffer Cache实现内存控制。
  • Mistral 7B使用SWA,具有4096的window_size。
  1. 线性 attention
  • 处理长序列时具有线性时间复杂度。
  • 方案:将softmax变成sim(q,k),使用核函数phi(q)和phi(k)。
  • RWKV是线性attention的一个变种,类似RNN。

二、MHA工程优化(效果无损)

  1. KV cache
  • 利用Decoder only特性,保留每次前向计算的KV用于后续计算。
  1. online softmax

  2. Flash attention

  • 通过分块计算减少HBM访问次数,利用SRAM速度优势。
  • 传统attention流程需要多次读写显存,Flash Attention通过分块计算减少显存访问。
  • 依赖于GPU架构(A100以上)。
  1. Page attention
  • 类似虚拟内存分页,每个block默认大小为16。
  • 通过写时复制机制优化内存使用,可降低55%的内存使用量。
  • vLLM使用PagedAttention实现高达24倍的Throughput提升。
  1. Ring attention
  • 解决长序列内存限制问题,通过多卡协作实现超长context length。
  1. striped attention
  • Ring Attention的扩展,解决工作负载不平衡问题。

三、FFN部分的优化

  1. MoE
  • 近2/3的参数集中在FFN结构中。
  • MLP压缩了大量知识,适合稀疏化处理。

四、微调

  • 有多种微调方式,如Freeze-tuning、Adapter Tuning、Prefix-Tuning、P-Tuning、LoRA等。
  • LoRA使用较多,如72B微调可选择量化4bit、lora_dim = 64。

五、训练相关

  1. 混合精度
  • 使用FP16进行前向和反向传播,FP32进行权重更新。
  • 可以显著提高训练速度,同时保留99%的训练精度。
  1. 并行、调度、训练框架
  • 包括数据并行、模型并行、流水线并行、张量并行。
  • 相关框架有Huggingface Transformer、deepspeed、megatron。
  1. Megatron LM
  • 使用模型并行(层内切分)和pipeline并行(层间切分)。
  • 优点是修改简单,但只适用于transformers。
  1. ZeRO
  • 超线性加速技术,支持100B模型。
  • 通过将optimizer state、梯度、参数等分片存储在不同GPU上,实现大规模模型训练。
  1. offload
  • 将计算量高的部分(如参数W、activation)放在GPU,计算量低的部分(如update)放在CPU。
  • ZeRO-Infinity进一步利用NVMe空间。

六、推理相关

  • 量化
  • 投机推理:通过更小模型提前预测后续token,提高decode并行度。

本文详细介绍了LLM性能优化的各种技巧,包括MHA结构优化、MHA工程优化、FFN部分优化、微调、训练相关和推理相关等。这些优化方法可以帮助开发者在保持模型性能的同时,降低计算和存储成本,提高模型的运行效率。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号