大模型
GPT family (Generative Pre-trained Transformer) :GPT-4 Technical Report
LLaMA-family: Llama 2: Open foundation and fine-tuned chat models.
other latest public LLMs (e.g., OPT, BLOOM, Mistral, DeciLM , Baichuan , GLM)
Transformer
自注意力机制
transfomer基于self-attetion机制构建(允许模型在预测时去权衡输入数据的不同部分的重要性):Attention is all you need
self-attention数学描述:
input X=[x1,x2,......xn]
X经过线性变化得到 Q K V
得分函数:f(Q,KV) = softmax(Q*K^T/(dim(K)^(1/2)))*V
这种机制,允许模型 聚焦于 和输出的每个部分对应的输入部分 , 从而能够捕获输入不同部分之间复杂的依赖关系(忽略它们之间的距离)
其他组件
Feed-Forward Network (FFN) 是transformer的另一个组件,存在于transfomer的每一层
FFN一般组成:两个线性变化,中间夹一个非线性激活函数
FFN数学描述:f(x) = max(0, x*W1 + b1)*W2 + b2 (W b 均为FFN的可学习参数)
FFN 和 self_attetion 结合,使模型能捕捉 范围更大的上下文 和 不同部分的细微差别,性能更高
multi-head attention (MHA) 将输入的不同部分进行聚合,之后FFN对每个聚合结果独立的处理(这是一种并行处理,效率较高,也导致 计算负载 内存占用 随 输入长度 和 模型深度的 增加 而增加)。
MHA 使模型能够在不同的表示空间中,关注输入序列的不同的部分
position encoding 包含了 输入序列中的每个 token(标记)的位置信息
自回归编码
LLM推理通常采用 auto-regressive decoding approach(自回归解码),用于保证生成新文本的整体性
自回归编码,总是根据已生成的结果来生成新结果,保证语义的高度连贯性。
GPU加速原理
多核并行
GPU并行处理设计,相比CPU的顺序处理设计,更适合运行大模型
GPU包含数千个内核,这些内核可同时处理多个任务,适合 矩阵 和 向量运算
GPU 包含 一组流式处理器(SMs),每个处理器又包含一组核心,这组核心共享一个公共的指令单元,并且每个核心可独立执行线程。每个处理器中有一个共享存储器(SRAM),用于线程之间的数据同步和交换。
GPU的高带宽存储器(HBM) 用于计算过程中对存储器更快的数据传输和访问
最新的GPU结构如,NVIDIA的 Ampere 、Hopper 性能更强大:
improved memory bandwidth and capacity 改进内存带宽和容量
higher floating-point operations per second (FLOPS), 更快的每秒浮点运算
specialized mixed-precision computing units (i.e., Tensor Core) 专业的混合精度计算单元
more efficient utilization of resources 更高效的资源利用率
精度转换
通过支持各种精度格式,允许用户在计算速度和精度之间进行权衡:
FP32 (32-bit floating point),
TF32 (TensorFloat-32),
FP16 (16-bit floating point),
BF16 (Brain Floating Point),
INT8/INT4
细粒度控制
GPU的编程语言:NVIDIA的CUDA AMD的ROCm
使用GPU的编程语言,可以实现对GPU的线程级别控制,能最大限度的利用GPU的并行性
其他硬件
CPUs
mobile and edge devices 移动和边缘设备
ASICs
specialized accelerators such as TPUs , FPGAs 专用加速器
AI chips (e.g., Apple M2 Ultra, AWS Inferentia, SambaNova, Cerebras , Graphcore IPUs). AI芯片
推理优化
LLM推理优化目标
在不影响模型准确性的情况下,最小化响应时间,低延迟、快速响应
在不牺牲性能的情况下,减少内存占用,主要用于模型私有化部署
支持同时处理多个请求
最大限度的利用硬件资源
权衡模型的准确率和推理效率
LLM的推理优化方法
模型级别优化
非自回归编码(Non-autoregressive decoding虽能提速,但性能损失较明显);
Speculative decoding(可提速);
Early exiting(提前退出);
Cascade inference(规模自适应);
Configuration downsizing(降低模型参数量);
Attention simplification(注意力稀疏化);
Activation sharing:(减少重复计算);
Conditional computing(使用必要的局部参数推理);
Recurrent unit:(考虑RNN代替transformer);
模型压缩(不损失性能的前提下,压缩模型);
Knowledge Distillation(用“老师模型”蒸馏出一个“学生模型”);
Network pruning:(模型修剪);
硬件级别优化
模型量化(QAT训练量化,PTQ推理量化);
Model parallelism:(模型并行);
Decentralized inference(去中心化推理);
提高吞吐量(通过高效的内存管理,通过调度算法,降低GPU闲置时间);
Kernel fusion:(内核融合,类似层压缩);
Tailored attention(专门为注意力,定制开发GPU内核);
Sampling optimization:(采样技术,有可能会降低模型性能);
Variable sequence length:(输入序列长度对齐,并行计算);
Automatic compilation(开发新的编译器,用来进一步,提升对硬件的利用效率);
memory management(内存管理)
request scheduling(请求调度)
大模型框架
大模型发展方向
硬件加速
算法加速(编码算法优化)
Long Context/Sequence Scenarios Optimization.
新结构研发(替代transfomer)
Exploration of Deployment in Complex Environments(边缘部署)
Automatic Adaptation to Specific Requirements.(任务自适应)