高效参数微调
1 Parameter Efficient Fine-Tuning 概述
1.1 全参数微调成本
全参数微调(Full Parameter Fine-Tuning)在大模型上代价极高。
以半精度(FP16/BF16)微调参数规模为 $N$ 的模型为例,显存占用可按如下估算:
权重(Weights):$2 \text{ bytes} \times N$
权重梯度(Gradients):$2 \text{ bytes} \times N$
优化器状态(Optimizer States):$2 \times 2 \text{ bytes} \times N = 4 \text{ bytes} \times N$
激活值(Activations):约为参数量的 $1\s...
LLM模型的量化策略
Low precision numbers in computer
1.1 LLM 的推理与训练成本
以典型大模型为例:
Llama-70B
训练成本:39.3M H100-80GB GPU hours
推理显存需求:≈140GB GPU memory
DeepSeek V3(671B 参数)
训练成本:2.8M H800 GPU hours
推理显存需求:>400GB GPU memory
大模型的训练与推理都极度依赖 GPU 计算与显存带宽,促使低精度计算成为主流优化方向。
1.2 模型量化(Model Quantizati...
分布式模型并行
1 模型并行训练概念(Model Parallel Training)
模型并行(Model Parallelism):将模型的计算(前向传播 / 反向传播 / 参数更新)分布到多个 GPU 上执行。
2 流水线PP并行
2.1 朴素模型并行(Naïve Model Parallel)
最原始的模型并行方式是:将模型的不同层分布到不同 GPU 上执行。
参考: https://siboehm.com/articles/22/pipeline-parallel-training
在模型定义的时候,针对于层数进行拆分
class ModelParallelResNet50(ResNet):
def __init__(self, *args, **kwa...
分布式GPU训练
1 回顾大规模模型训练
1.1 扩大训练规模的策略
1.1.1 切分数据(Data Parallelism)
Single Node Multi-GPU
DDP(Distributed Data Parallel)
Parameter Server 模式
1.1.2 切分模型(Model Parallelism)
模型并行(Model Parallel)
流水线并行(Pipeline Parallel, PP)
张量并行(Tensor Parallel, TP)
要点:
无论是数据并行还是模型并行,都需要跨 GPU 传递梯度(communicate gradients across GPUs)。
2 多卡通信 Multi-GPU Com...
混合精度训练与显存复用
本文是《Transformer 加速策略》的下篇,聚焦混合精度训练与自注意力反向传播的显存复用。上篇讲算子融合与减少同步,见 transformer-acc。
4 混合精度策略
4.1 动机
现代 GPU 支持 FP16/FP8(H100)。
收益
可以减少显存,增大batch size
可以更快传输数据
可以有更高的FLOPS
4.2 混合策略(为什么不全部采用低精度)
forward 和 backward 可以用fp16 /fp8
优化器必须用fp32
FP16 / FP8 的动态范围有限,不能精确地累计很多次梯度更新,会导致数值不稳定、训练...
transformer的加速策略
1 Transformer 训练的4个阶段
如图所示,transformer 训练有4个阶段
前向传播
反向传播
梯度聚合(AllReudce Aggregation)
参数更新(Optimizer Step)
2 算子融合(Kernel Fusion)策略
2.1 概念
朴素实现:
C = A + B
E = C + D
需要 4 次 load、2 次 store、2 次矩阵加,并且 需要两次 kernel 启动(launch)。
融合后(自定义单个 kernel):
E = A + B + C
只需 3 次 load、1 次 store、2 次矩阵加,一次...
GPU 内存访问优化与稀疏矩阵
本文是《GPU加速策略》的下篇,聚焦内存访问局部性、稀疏矩阵乘法与 cuBLAS 库。上篇讲 CUDA 内存模型与 Tiled 矩阵乘法,见 gpu-acceleration。
7 内存并行与访问局部性
Locality / Bursts Organization 局部排布/交错排除
• Consecutive memory 顺序读取
accesses in a warp are coalesced together.
• Row-major format to store multidimensional array in C and CUDA
• allows DRAM burst, faster than individual acces
7.1 合并访问 (Coalesc...
GPU加速策略
1 GPU 加速技术概览(GPU Acceleration Tech)
1.1 主要方向
Tiling(分块)
Memory Parallelism(内存并行)
GPU 上的矩阵乘法加速
稀疏矩阵乘法(Sparse MatMul)
cuBLAS 库使用
2 GPU 上的矩阵乘法基础示例
__global__ void MatMulKernel(float *a, float *b, float *c, int N) {
// Compute each thread's global row and col index -> output: (i, j)
int row = blockIdx.y * blockDim.y + thr...
共计 184 篇文章,23 页。