🗜️ 模型压缩与量化

简介: 模型压缩通过量化、稀疏化、知识蒸馏等技术,降低大模型大小与计算开销,助力其在端侧部署。涵盖INT8/INT4、GPTQ、SmoothQuant等方法,平衡压缩比、精度与速度,并支持实战量化加载与面试高频问题解析。

🎯 概述
模型压缩通过减少模型大小和计算量,使大模型能够在资源受限的环境中部署。
🏗️ 压缩技术
1️⃣ 权重量化
● INT8量化:将FP32权重压缩到INT8,4倍压缩
● INT4量化:进一步压缩到4位,8倍压缩
● GPTQ:基于二阶信息的量化方法
2️⃣ 激活量化
● 动态量化:运行时量化激活值
● 静态量化:校准数据集预计算量化参数
● SmoothQuant:解决激活异常值问题
3️⃣ 稀疏化
● 非结构化稀疏:随机权重置零
● 结构化稀疏:通道/块级稀疏
● N:M稀疏:每M个权重保留N个
4️⃣ 知识蒸馏
● 量化感知蒸馏:结合量化和蒸馏
● 渐进式量化:逐步降低精度
📊 量化方法对比
方法 压缩比 精度损失 推理速度 实现难度
INT8 4x <1% 2-3x 低
INT4 8x 1-3% 3-4x 中
GPTQ 8x <1% 3-4x 中
AWQ 8x <0.5% 3-4x 中
🎯 实战代码

使用bitsandbytes进行量化

import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig

INT4量化配置

bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16
)

加载量化模型

model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b-hf",
quantization_config=bnb_config,
device_map="auto"
)
剪枝
🎯 面试重点

  1. INT8和INT4量化的区别?
  2. 如何解决量化后的精度损失?
  3. GPTQ和AWQ的算法原理?
  4. 量化对推理速度的影响?
相关文章
|
4月前
|
人工智能 缓存 自然语言处理
大模型性能测试完全指南:从原理到实践
本文介绍了大模型性能测试的核心价值与方法,涵盖流式响应机制、PD分离架构、五大关键指标(如首Token延迟、吐字率等),并通过实战演示如何使用Locust进行压力测试。同时探讨了多模态测试的挑战与优化方向,帮助测试工程师成长为AI系统性能的“诊断专家”。
|
14小时前
|
存储 关系型数据库 MySQL
07-nexus搭建docker私仓
本文介绍如何使用Nexus搭建Docker私有仓库。包括启用Docker仓库、创建Blob存储、配置docker-hosted仓库并开放端口;还需配置客户端支持HTTP推送,修改daemon.json添加insecure-registry,并通过docker tag和push命令将镜像上传至私仓。
|
14小时前
|
JSON Shell Linux
08-Registry搭建docker私仓
Docker Registry是官方提供的私有镜像仓库构建工具,支持通过拉取官方镜像快速搭建。配置insecure-registries后,可推送、拉取镜像,并通过REST API查看仓库内容,实现本地镜像的集中管理与分发。
|
14小时前
|
SQL 关系型数据库 MySQL
09-Docker安装Mysql
本文介绍Docker安装MySQL 5.7的完整流程,涵盖单机部署与主从复制。包括解决中文乱码、配置容器卷映射以持久化数据,并详细演示主从同步配置及测试步骤,确保数据安全与高可用。
|
15小时前
|
存储 NoSQL 数据库
📚 RAG技术
RAG架构结合检索与生成,通过DPR、ColBERT等检索器从向量数据库中召回相关内容,再由大模型生成答案。支持密集、混合检索与多路召回,提升准确率。常用FAISS、Pinecone等向量库,广泛应用于减少幻觉、增强问答可靠性。
|
14小时前
|
应用服务中间件 Shell nginx
11-Dockerfile
Dockerfile是构建Docker镜像的脚本文件,包含一系列指令,每条指令创建一个镜像层。从基础镜像开始,依次执行FROM、RUN、CMD等指令,最终生成可运行容器的镜像。支持环境变量、数据卷、端口暴露等功能,是实现持续集成与交付的核心组件。
|
14小时前
|
Java Shell Docker
12-Docker发布微服务
本文介绍如何搭建SpringBoot项目并部署到Docker容器。首先创建Maven工程,编写主类、Controller及配置文件,打包成jar;再通过Dockerfile将jar构建成镜像,并运行容器,实现微服务的快速部署与发布,端口6001对外提供服务。
|
14小时前
|
关系型数据库 MySQL 应用服务中间件
13-Docker网络 Docker 网络
Docker网络通过namespace实现容器间隔离与通信,默认使用bridge模式创建docker0网桥,容器通过veth pair连接网桥实现互通。支持host、none、container等网络模式,自定义网络可实现服务名解析,替代已弃用的--link。
|
15小时前
|
安全 C++
📈 模型评估
模型评估涵盖能力、安全与效率三大维度,包括语言理解、知识问答、推理代码等任务,常用MMLU、C-Eval、GSM8K等基准,结合Hugging Face工具实现自动化测评,关注幻觉、领域适配与人工协同评估。
|
14小时前
|
运维 监控 数据可视化
15-Portainer轻量级图形化监控 Portainer:Docker轻量级可视化工具
Portainer是一款轻量级Docker图形化管理工具,支持单机与集群环境,提供开源(CE)和商业版(BE/EE)。通过Docker部署,映射端口并挂载卷后即可运行,访问9000端口可进入界面。首次使用需创建管理员账号,可直观管理镜像、容器、网络、数据卷及Stack编排,简化运维操作。