大模型压缩技术全景:剪枝、量化、蒸馏的工程实践

大模型越来越大,但部署环境千差万别。不是每台设备都有A100,不是每个场景都能容忍秒级延迟。模型压缩技术就是连接"大模型能力"和"有限部署资源"的桥梁。本文将系统梳理剪枝、量化、蒸馏三大压缩技术的原理与工程实践。 一、模型压缩的必要性 1.1 部署场景的多样性 场景 内存限制 延迟要求 功耗限制 云端GPU 80GB <2s 无 边缘服务器 16GB <1s 100W 手机端 4-8GB <500ms 5W IoT设备 <1GB <100ms <1W 一个70B参数的模型FP16需要140GB内存——只有云端GPU能跑。要部署到手机,需要压缩20-40倍。 1.2 压缩的三个维度 模型体积: 参数量 × 每参数字节数 推理速度: 与参数量和计算量相关 内存占用: 参数 + KV Cache + 激活值 压缩目标: 在保持精度的前提下,最小化以上三者 二、量化:最实用的压缩技术 2.1 量化原理 将高精度浮点数(FP16/FP32)映射到低精度整数(INT8/INT4): FP16: 0.1234, 0.5678, -0.2345 (16 bit/参数) INT8: 映射到 [-128, 127] (8 bit/参数) → 压缩2倍 INT4: 映射到 [-8, 7] (4 bit/参数) → 压缩4倍 2.2 量化方法对比 PTQ(Post-Training Quantization):训练后量化,无需重新训练 ...

2026-07-13 · 4 min · 714 words · 硅基 AGI 探索者
LLM剪枝技术

LLM剪枝2026:结构化vs非结构化

剪枝:去除冗余参数 神经网络的过参数化是公认的事实——大量参数对输出的贡献微乎其微。剪枝(Pruning)通过移除这些"冗余"参数来减少模型大小和计算量。 在LLM时代,剪枝面临新的挑战:模型规模巨大使得重新训练成本高昂,且LLM的参数分布与传统CNN有显著不同。2026年的剪枝研究集中在如何在不重训或少量微调的前提下实现高稀疏率。 非结构化剪枝 基本原理 非结构化剪枝将单个权重置零,不改变模型结构。最经典的方法是幅度剪枝(Magnitude Pruning)——移除绝对值最小的权重: def magnitude_prune(weight, sparsity=0.5): """幅度剪枝:将最小幅度的权重置零""" # 计算阈值 threshold = torch.quantile(weight.abs().flatten(), sparsity) # 创建掩码 mask = (weight.abs() > threshold).float() # 应用掩码 return weight * mask, mask 稀疏模式 非结构化剪枝产生的稀疏模式是"随机"的——零权重分布在矩阵的任意位置。这种模式虽然理论上能减少参数量,但在标准GPU上无法获得实际加速——因为稀疏矩阵的乘法效率远低于密集矩阵。 2:4稀疏 NVIDIA Ampere及以后架构支持2:4结构化稀疏——每4个连续元素中恰好2个为零。这种模式有硬件原生支持,可以获得约2倍加速: def apply_2_4_sparsity(weight): """应用2:4稀疏模式""" output = weight.clone() # 将权重重排为 [N, 4] 的块 blocks = output.view(-1, 4) for i in range(blocks.shape[0]): block = blocks[i].abs() # 保留最大的2个,其余置零 top2_indices = block.topk(2).indices mask = torch.zeros(4, device=weight.device) mask[top2_indices] = 1 blocks[i] *= mask return output.view_as(weight) 2:4稀疏是非结构化和结构化之间的折中——有一定的结构约束(硬件加速),但保持了一定的灵活性。 SparseGPT SparseGPT是2023年提出的LLM后训练剪枝方法,能在不需要重训的情况下将模型稀疏化到50%: def sparsegpt_prune(layer, calibration_data, sparsity=0.5): """SparseGPT单层剪枝""" W = layer.weight.data # [out, in] H = compute_hessian(layer, calibration_data) # [in, in] H += torch.eye(H.shape[0]) * 0.01 # 正则化 # 逐列处理 for i in range(W.shape[1]): # 计算每个权重的"重要性"分数 importance = W[:, i].abs() ** 2 / H[i, i] # 选择保留的权重 n_keep = int(W.shape[0] * (1 - sparsity)) keep_indices = importance.topk(n_keep).indices # 对非保留权重进行补偿 mask = torch.zeros(W.shape[0], device=W.device) mask[keep_indices] = 1 # 重建误差补偿 err = (W[:, i] * (1 - mask)) / H[i, i] W[:, i+1:] -= err.unsqueeze(1) @ H[i, i+1:].unsqueeze(0) # 应用掩码 W[:, i] *= mask layer.weight.data = W SparseGPT的核心创新是在剪枝的同时通过重建补偿来减少精度损失——类似于GPTQ的思想,但用于剪枝而非量化。 ...

2026-07-02 · 3 min · 437 words · 硅基 AGI 探索者
AI推理加速技术2026:量化、剪枝、蒸馏全景

AI推理加速技术2026:量化、剪枝、蒸馏全景

大模型的训练成本固然惊人,但2026年行业共识是:推理成本才是决定AI商业成败的关键。每Token推理成本直接决定了AI应用的经济模型——当GPT-5的推理成本降低10倍,它能打开的市场空间会增加100倍。本文将深度解析2026年最主流的推理加速技术。 一、为什么推理优化如此重要 成本结构的变化 AI推理成本在2026年发生了根本性变化: 发展阶段 成本焦点 核心问题 2020-2022 训练成本 能否训练得起大模型 2023-2024 推理成本 能否部署得起大模型 2025-2026 效率优化 如何以更低成本服务更多用户 2026年,全球AI推理日均Token消耗量突破10万亿,推理基础设施成本超过2000亿美元/年。每降低1%的推理成本,意味着每年节省20亿美元。 延迟 vs 吞吐 vs 成本 推理优化有三个核心目标,它们之间存在权衡: 延迟(Latency):单个请求的响应时间(TTFT, Time to First Token) 吞吐(Throughput):单位时间内处理的请求数(tokens/s) 成本(Cost):每个Token的推理成本 Batch size大 → 吞吐高、延迟高、成本低 Batch size小 → 吞吐低、延迟低、成本高 实际优化需要根据场景选择优先级: 在线服务(Chat):延迟优先 离线批处理:吞吐优先 大规模部署:成本优先 二、量化(Quantization):精度换速度 量化原理 量化是将模型参数从高精度(FP32/FP16)转换为低精度(INT8/INT4/FP8)的过程。理论上: FP32 → FP16:精度损失极小,速度×2,显存÷2 FP16 → INT8:速度×2-4,显存÷4,精度损失<1%(通常) INT8 → INT4:速度×4-8,显存÷8,精度损失5-15%(可优化) 2026年主流量化方法对比 方法 精度 速度 显存节省 质量损失 适用场景 FP16(基准) 100% 1× 1× 0% 通用 FP8(E4M3/E5M2) 99.5% 1.3× 1.5× <0.5% Hopper/Blackwell INT8(对称) 98-99% 1.8× 2× 1-2% 通用 INT8(非对称) 98-99% 1.6× 2× 1-2% 激活分布不均 INT4(GPTQ) 95-97% 3.5× 4× 3-5% 显存受限 INT4(AWQ) 96-98% 3.2× 4× 2-4% 显存受限 INT4(llama.cpp GGUF) 94-97% 4× 4× 3-6% 本地部署 NF4(BitsAndBytes) 95-97% 2.5× 4× 3-5% QLoRA微调 量化方法深度解析 1. Post-Training Quantization (PTQ) 训练后量化是最简单的方式——先训练好模型,再量化。2026年主流PTQ方法: ...

2026-06-30 · 3 min · 542 words · 硅基 AGI 探索者
鲁ICP备2026018361号