96SEO 2026-02-20 09:07 11
量化实例bitsandbytes安装bitsandbytes4bit量化(加载)8bit量化(加载)验证效果

Quantization是一种优化技术旨在减少机器学习模型的计算资源需求和存储空间同时在精度损失最小化的前提下提高推理效率。
量化通过将模型权重和激活函数的数值从高精度如
在模型训练完成后进行量化。
通过分析训练数据的分布将权重和激活函数映射到低精度表示。
不需要重新训练模型。
适用于对性能影响较小的场景。
在推理时动态地将浮点数转换为低精度整数。
在运行过程中对激活函数进行量化。
比静态量化更简单因为不需要分析训练数据。
对推理速度有显著提升尤其是对模型输入依赖较少的层如全连接层。
在训练过程中模拟量化影响。
模型在训练过程中考虑量化误差以便在量化后保持更高的精度。
比静态量化和动态量化需要更多的计算资源但精度损失最小。
适用于对精度要求较高的应用。
这里例子就演示下动态量化bitsandbytes本身以上三种都支持。
位整数模型大小可以显著减少。
加快推理速度低精度运算速度更快可以显著提高推理效率。
降低内存带宽需求低精度表示占用更少的内存减少了内存带宽的需求。
精度损失由于数值表示的精度降低模型可能会经历一定程度的精度损失具体程度取决于模型结构和数据分布。
复杂性增加在某些情况下量化过程可能会增加模型部署的复杂性尤其是需要进行量化感知训练时。
首先确定要量化的数据的值域范围。
例如假设我们有一组数据的值域为
确定量化的级别或分辨率这决定了将值域划分成多少个区间。
在4位整数的情况下共有
将原始数据映射到4位整数的范围内。
通常使用线性映射来实现计算公式如下
quantized_valuemax−minoriginal_value−min×(number
在使用量化数据进行计算之前需要将其解码回原始的数据表示形式如32位浮点数或其他高精度表示。
解码公式通常为
original_valuequantized_value×number
quantized_value是是量化后的4位整数值,min和max是原始数据的最小值和最大值。
两个不同的原始值在量化后可能相同被还原为同一个值。
这种情况表明精度损失是不可避免的。
为了减少这种精度损失带来的影响通常采取以下策略
增加量化级别如使用8位、16位量化以减少不同原始值被量化为同一个值的概率。
使用对数量化或其他非线性量化方法使得量化更适应数据的分布特性从而减少精度损失。
通过精细调整量化的最小值、最大值和比例因子尽量减少量化误差对关键值的影响。
[−3.4×1038,3.4×1038]。
FP1616-bit
位半精度浮点数使用16位1位符号、5位指数、10位尾数FP16的数值范围大约是
位将模型的权重和激活值量化为8位整数范围通常是0到255相对于32位浮点数精度的损失较小。
8-bit量化比4-bit提供更好的精度并且通常可以更接近原始模型的性能。
INT44-bit
每个参数占用4位将模型的权重和激活值量化为4位整数范围通常是-8到7或者0到15因此相对于32位浮点数它的精度显著降低。
这种量化可以显著减小模型的大小和计算需求但可能会损失一定的模型精度。
modelAutoModel.from_pretrained(model_name)
位。
dtypelist(model.parameters())[0].dtype
位量化技术使大型语言模型的访问变得可行。
bitsandbytes
位量化使大型语言模型推理只需一半的内存需求并且不会有任何性能下降。
该方法基于向量式的量化技术将大部分特性量化到
位量化使大型语言模型训练成为可能它结合了几种节省内存的技术同时又不牺牲性能。
该方法将模型量化至
加载并量化一个模型到4位并使用bfloat16数据类型进行计算
bnb_4bit_compute_dtypetorch.bfloat16这意味着计算过程中会反量化使用
是一个全球性的开源AI研究合作项目旨在推动大型语言模型LLM的发展。
bloom-1b7
BitsAndBytesConfig(load_in_4bitTrue,
bnb_4bit_compute_dtypetorch.bfloat16)
AutoModelForCausalLM.from_pretrained(model_name,device_mapauto,
AutoModelForCausalLM.from_pretrained(model_name,device_mapauto,quantization_configquantization_config,
dtypelist(model.parameters())[0].dtype
dest_dtypelist(model_4bit.parameters())[0].dtype
model_4bit.config.quantization_config)def
print_model_info(model):total_params
model.named_parameters():total_params
total_paramstotal_model_sizeprint_model_info(model)
total_model_4bit_sizeprint_model_info(model_4bit)
print(量化后的模型参数个数,total_model_4bit_size)dtype_to_bytes
MB)model_4bit.save_pretrained(/tmp/p)
model.save_pretrained(/tmp/o)输出
bfloat16,bnb_4bit_quant_storage:
false,llm_int8_enable_fp32_cpu_offload:
false,llm_int8_has_fp16_weight:
MB总的参数个数减少。
这通常是由于量化过程中进行了优化或者参数压缩的操作。
量化在深度学习中通常是指将模型中的浮点数参数转换为更低精度的整数或定点数表示以节省内存和提高计算效率。
为啥量化和原模型的dtype都是fp16了以下是对量化模型加载过程中
存储时模型参数可能被压缩或量化为较低位宽的整数类型如4位整数。
加载时为了方便后续计算这些参数可能会被解码为较高精度的浮点类型如
许多量化库在加载模型时会将低位宽的量化参数解码为浮点类型以便在计算时可以直接使用这些参数。
这就是为什么即使您使用了
model.safetensors可以看到我们之前在内存中打印的是2133.23内存中计算还是会被反量化到bnb_4bit_compute_dtype指定类型但是参数都是压缩后去掉了一些参数
存储后变成了1630M比之前计算的少一些说明存储使用了4bit。
model-00001-of-00002.safetensors
model-00002-of-00002.safetensors
model.safetensors.index.json可以看到我们之前在内存中打印的是6570.47
BitsAndBytesConfig(load_in_8bitTrue)同4bit代码输出
float32,bnb_4bit_quant_storage:
false,llm_int8_enable_fp32_cpu_offload:
false,llm_int8_has_fp16_weight:
MB可以看到8bit不需要指定内存计算的类型量化内存计算精度默认就是fp16。
#----------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------
model-00001-of-00002.safetensors
model-00002-of-00002.safetensors
model.safetensors.index.json验证效果
return_tensorspt).to(model.device)start_time
skip_special_tokensTrue)print(Generated
AutoTokenizer.from_pretrained(model_name)
seconds这里看到量化的模型反而推理需要更多的时间量化模型在理论上应该提高推理速度和减少内存占用但在实际应用中可能会因为多个因素导致性能下降。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback