当前位置: 首页 > news >正文

模型量化与保存

模型量化‌是将神经网络中的浮点计算(如32位/16位)转换为低比特定点计算(如8位整型)的技术,通过减少数值精度来压缩模型体积并加速计算。其本质是一种针对模型参数的‌有损信息压缩‌,在保证模型性能的前提下优化部署效率。

一、模型量化‌的目标

  • 压缩模型体积‌
    将浮点权重转换为低位宽整数存储,模型体积可减少至原大小的1/4。
  • 加速推理计算‌
    硬件对低位宽计算(如INT8)的支持效率通常比FP32快2-4倍

二、transfomers 进行模型量化‌与保存

  • 前提环境
pip install --upgrade transformers accelerate bitsandbytes
1、4bit
  • 4 位量化模型可将内存使用量减少 4 倍,对于大型模型,设置“device_map=“auto””可有效地在所有可用 GPU 上分配权重。
from transformers import AutoModelForCausalLM, BitsAndBytesConfig#配置量化参数
quantization_config = BitsAndBytesConfig(load_in_4bit=True)model_4bit = AutoModelForCausalLM.from_pretrained("bigscience/bloom-1b7",device_map="auto",quantization_config=quantization_config
)
2、8bit
  • 8 位量化模型可将内存使用量减半,对于大型模型,设置“device_map=“auto””以有效地将权重分配到所有可用的 GPU 上。
from transformers import AutoModelForCausalLM, BitsAndBytesConfigquantization_config = BitsAndBytesConfig(load_in_8bit=True)model_8bit = AutoModelForCausalLM.from_pretrained("bigscience/bloom-1b7", device_map="auto",quantization_config=quantization_config
)
3、量化模型保存与加载
  • 保存
# 保存量化模型
model.save_pretrained("./quant_llama2")
tokenizer.save_pretrained("./quant_llama2")
  • 加载
from transformers import AutoModelForCausalLM, AutoTokenizermodel = AutoModelForCausalLM.from_pretrained("本地模型路径", device_map="auto")
4、模型反(去除)量化
  • 量化后,您可以通过反量化(dequantize())将模型恢复到原始精度,但这可能会导致一些质量损失。请确保您拥有足够的 GPU 内存来容纳反量化后的模型。
from transformers import AutoModelForCausalLM, BitsAndBytesConfig, AutoTokenizermodel = AutoModelForCausalLM.from_pretrained("facebook/opt-125m", BitsAndBytesConfig(load_in_4bit=True))
model.dequantize()

三、torch 进行模型量化‌与保存

import torch.quantization# 动态量化示例
model = torch.nn.Linear(100, 50)
quantized_model = torch.quantization.quantize_dynamic(model,{torch.nn.Linear},  # 指定量化层dtype=torch.qint8
)# 保存量化模型
torch.save(quantized_model.state_dict(), "dynamic_quant.pth")[1,14](@ref)

相关文章:

  • 防火墙高可靠性
  • 支持向量存储:PostgresSQL及pgvector扩展详细安装步骤!老工程接入RAG功能必备!
  • C# AOP编程
  • Elasticsearch常用命令
  • 信息学奥赛一本通 1853:【08NOIP提高组】传纸条 | 洛谷 P1006 [NOIP 2008 提高组] 传纸条
  • 宝塔安装的 MySQL 无法连接的情况及解决方案
  • ARM64虚拟地址到物理地址转换页表映射过程--基于crash
  • [测试_3] 生命周期 | Bug级别 | 测试流程 | 思考
  • 《国家高等教育智慧平台:重塑学习新时代》
  • MySQL Host 被封锁解决方案(全版本适用 + Java 后端优化)
  • 机器学习之随机森林(五)
  • vue3 el-table 行号
  • 鸿蒙进阶——驱动框架UHDF 机制核心源码解读(一)
  • 虚幻基础:摄像机
  • NHANES最新指标推荐:α-Klotho
  • 从微积分到集合论(1630-1910)(历史简介)——第2章——牛顿(Newton)和莱布尼兹(Neibniz)以及莱布尼兹传统(H.J.M.Bos)
  • 深入浅出Java-Lambda表达式
  • 「AR智慧应急」新时代:当AR眼镜遇上智能监控,打造立体化应急指挥系统
  • 14、自动配置【源码分析】-初始加载自动配置类
  • 【web全栈】若依框架B站学习视频:基础篇01-04
  • 做网站设计收入/sem是什么显微镜
  • 荣成网站建设/搜索引擎营销的作用
  • 网站排名软件优化/正规seo一般多少钱
  • 长春网站优化/天津关键词优化专家