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

手机端网站html好看的模板江苏高校品牌专业建设工程网站

手机端网站html好看的模板,江苏高校品牌专业建设工程网站,湛江网站建设咨询,网站建设存在的问题及对策什么是模型量化 模型量化#xff08;Model Quantization#xff09;是一种通过减少模型参数表示的位数来降低模型计算和存储开销的技术。一般来说#xff0c;模型参数在深度学习模型中以浮点数#xff08;例如32位浮点数#xff09;的形式存储#xff0c;而模型量化可以…什么是模型量化 模型量化Model Quantization是一种通过减少模型参数表示的位数来降低模型计算和存储开销的技术。一般来说模型参数在深度学习模型中以浮点数例如32位浮点数的形式存储而模型量化可以将这些参数转换为较低位宽的整数或定点数。这有几个主要的作用 减小模型大小 通过减少每个参数的位数模型占用的存储空间变得更小。这对于在移动设备、嵌入式系统或者边缘设备上部署模型时尤其有用因为这些设备的存储资源通常有限。 加速推理 量化可以降低模型推理时的计算开销。使用较低位宽的整数或定点数进行计算通常比使用浮点数更高效因为它可以减少内存带宽需求提高硬件的并行计算能力。这对于实时推理和响应时间敏感的应用程序非常重要。 减少功耗 量化可以降低模型在部署环境中的能耗因为计算和存储操作通常是耗电的。通过减少模型参数的位数可以减少在部署设备上执行推理时的功耗。 提高模型在资源受限环境中的可用性 在一些场景中设备的存储和计算资源可能非常有限例如在边缘设备或物联网设备上。模型量化使得在这些资源受限的环境中部署深度学习模型更加可行。 总体而言模型量化是一种权衡计算、存储和功耗的技术可以使得深度学习模型更适应于各种不同的部署场景。 常用的模型量化技术 Round nearest quantization最近整数量化 是一种常见的模型量化技术它用于将浮点数参数量化为整数或定点数。在这种量化中每个浮点数参数被四舍五入到最接近的整数或定点数。这种方法旨在保留尽可能多的信息同时将参数映射到有限的整数或定点值上。 AWQ(Activation-aware Weight Quantization)-激活感知权重量化: 激活感知权重量化AWQ一种面向LLM低比特权重量化的硬件友好方法。我们的方法基于这样一个观察权重并非同等重要仅保护1%的显著权重可以大大减少量化误差。然后我们建议通过观察激活而不是权重来搜索保护显著权重的最佳通道缩放。AWQ不依赖于任何反向传播或重构因此可以很好地保留LLMs在不同领域和模态中的泛化能力而不会过度拟合校准集。AWQ在各种语言建模和特定领域基准上优于现有工作。由于更好的泛化能力它在面向指令调整的LMs上实现了出色的量化性能并且首次在多模态LMs上取得了成功论文地址。 GPTQGenerative Pretrained Transformer Quantization GPTQ 的思想最初来源于 Yann LeCun 在 1990 年提出的 OBD 算法随后 OBS、OBCOBQ 等方法不断进行改进而 GPTQ 是 OBQ 方法的加速版。简单来说GPTQ 对某个 block 内的所有参数逐个量化每个参数量化后需要适当调整这个 block 内其他未量化的参数以弥补量化造成的精度损失。GPTQ 量化需要准备校准数据集论文地址。 Transformers量化技术BitsAndBytes BitsAndBytes 通过将模型参数量化为较低比特位宽的整数表示从而在不显著影响任务性能的前提下减小了模型的存储需求和计算复杂度。然而需要仔细选择位宽度以平衡性能和信息损失之间的权衡。 大模型占用显存粗略计算公式 上面的推导公式中1GB1024MB2的10次方MB1MB1024KB1KB1024B所以1GB2的30次方B1GB1024*1024*1024B1073741824B约等于10亿B所以约等于10的9次方B。通过上面的计算公式,可以粗略计算出对于6B的大模型需要12G的显存,当然这只是对模型参数需要占用的显存的粗略计算实际加载一个大模型还需要更多的显存。这也是为什么有这些量化技术来缩小模型的大小。 采用AWQ量化模型代码例子 下面的代码例子来源于AWQ官网在实际运行过程如果选择加载vicuna-7b-v1.5-awq一直在报“Token indices sequence length is longer than the specified maximum sequence length for this model (8322 4096). Running this sequence through the model will result in indexing errors”换成了量化“facebook/opt-125m-awq”,量化成功但是用量化后的模型尝试运行benchmark的脚本也报错了。错误提示是“/home/ubuntu/python/opt-125-awq is not a folder containing a .index.json file or a pytorch_model.bin file”。但是这些错误不影响我们对AWQ量化模型的理解。 from awq import AutoAWQForCausalLM from transformers import AutoTokenizermodel_path lmsys/vicuna-7b-v1.5 quant_path vicuna-7b-v1.5-awq quant_config { zero_point: True, q_group_size: 128, w_bit: 4, version: GEMM }# Load model # NOTE: pass safetensorsTrue to load safetensors model AutoAWQForCausalLM.from_pretrained(model_path, **{low_cpu_mem_usage: True, use_cache: False} ) tokenizer AutoTokenizer.from_pretrained(model_path, trust_remote_codeTrue)# Quantize model.quantize(tokenizer, quant_configquant_config)# Save quantized model model.save_quantized(quant_path) tokenizer.save_pretrained(quant_path)print(fModel is quantized and saved at {quant_path}) 将model_path‘facebook/opt-125m’可以量化成功。接下来再看看官网的benchmark脚本具体如何对量化后的模型做评估。官网完整的benchmark脚本。整个代码的目的是通过测试不同条件下的生成性能包括速度和内存使用以便评估模型的效果。 TimeMeasuringLogitsProcessor 类在模型前向传播之后调用用于测量模型生成的时间。通过记录每个时间点计算了预填充和生成阶段的时间差以及每个生成步骤的时间差。主要用于测量模型的速度包括预填充和生成阶段的速度。warmup 函数通过进行矩阵乘法来对模型进行预热以确保模型的权重已经加载到 GPU 中。generate_torch 和 generate_hf 函数generate_torch 函数使用 PyTorch 的 model 对象生成 tokens。generate_hf 函数使用 Huggingface Transformers 库的 model.generate 方法生成 tokens。这两个函数都会测量生成的时间并返回上下文时间和每个生成步骤的时间。run_round 函数通过加载模型、进行预热、生成 tokens 等步骤来运行测试的一个循环。 测试了模型在不同上下文长度和生成步骤数下的性能。输出测试结果包括上下文时间、生成时间、内存使用等。main 函数设置不同的上下文长度和生成步骤数的测试轮次。使用给定的生成器PyTorch 或 Huggingface运行测试。 运行脚本的时候参数包括model_path模型路径。 quant_file量化权重的文件名。 batch_size生成时的批量大小。 no_safetensors是否禁用安全张量。 generator生成器类型可以是 torch 或 hf。 pretrained是否使用预训练模型。 采用GPTQ量化模型代码例子 下面的例子来源于gptq官网例子这个例子中量化的也是opt-125m模型gptq进行模型量化时需要传递数据集这里传递的数据集很简单就是一句话。 模型量化成功后用量化后的模型生成内容可以看到如果是数据集中的信息模型能正确生成内容如果是其他问题例如“woman works as”模型就无法输出内容了。所以如果采用gptq进行模型量化输入的数据集是非常关键的。 当然也支持一些默认数据集例如包括[wikitext2,c4,c4-new,ptb,ptb-new]。这些数据集都可以在huggingface上找到。如果采用默认数据集在初始化GPTQConfig的时候设置dataset参数即可代码如下所示 quantization_config GPTQConfig(bits4, # 量化精度group_size128,datasetc4,desc_actFalse, ) 实际在gptq的github上提供了很多example的代码包括量化后评估模型性能的脚本更多信息可查看这里。 BitsAndBytes代码例子 BitsAndBytes的量化代码例子非常简单在from_pretrained()方法中初始化三个参数即可。调用量化后的模型让其生成内容“Merry Chrismas! I am glad to”量化后的模型生成的内容也比较ok。具体如下图所示 from transformers import AutoModelForCausalLMmodel_id facebook/opt-2.7bmodel_4bit AutoModelForCausalLM.from_pretrained(model_id,device_mapauto,load_in_4bitTrue)# 获取当前模型占用的 GPU显存差值为预留给 PyTorch 的显存 memory_footprint_bytes model_4bit.get_memory_footprint() memory_footprint_mib memory_footprint_bytes / (1024 ** 2) # 转换为 MiBprint(f{memory_footprint_mib:.2f}MiB)from transformers import AutoTokenizertokenizer AutoTokenizer.from_pretrained(model_id) text Merry Christmas! Im glad to inputs tokenizer(text, return_tensorspt).to(0)out model_4bit.generate(**inputs, max_new_tokens64) print(tokenizer.decode(out[0], skip_special_tokensTrue)) 以上就是对于一些常用的模型量化技术的介绍。
http://www.hkea.cn/news/14511376/

相关文章:

  • 自助企业建站模版福建省建筑施工企业信用评价系统
  • 弹窗网站制作器上海建设工程管理网站
  • 网站模版调用标签教程西安免费公司网站制作
  • 做地方网站微信营销方案
  • 响应式网站成本wordpress赞助
  • 北票市建设工程安全管理站网站优惠券网站怎样做
  • 简单的j网站建设方案书动易网站后台修改栏目的字
  • 泉州公司网站建设wordpress设置标题
  • 北京企业网站建站哪家好乐山公司网络建设
  • php网站开发就业前景中国航发网上商城官网
  • 广州企业网站建设哪家好珠海网站关键词推广
  • 涿州网站建设有限公司专做排版网站
  • 网站推广软文甄选天天软文广州市公司网站建设品牌
  • 专业做财经直播网站有哪些辽宁身营商环境建设局网站
  • 山东公司网站推广优化电子商务的网站的建设内容
  • 怎么增加网站访问量商丘手机网站制作
  • 国外网站排行榜园区网络规划与设计
  • 宜城市城乡建设局网站备案抖音代运营收费详细价格
  • 自己做网站需要备案么平面设计图片创意手绘
  • 高端网站建设公司哪家公司好WordPress仿百度贴吧主题
  • 网站设计分工找做帽子的工厂网站
  • php做用户登录网站网站开发的安全性主要考虑哪些
  • 菏泽网站建设服务网站建设秋实
  • dedecms建站教程建设银行扬中网站
  • 东莞建外贸网站好深圳有做网站的吗
  • 成都建站哪家好有没有专业做汽车坐垫网站
  • 兰州市科协网站免费模板网站下载
  • 邢台专业做wap网站推广普通话
  • 网站建设方案企业华为软件开发工程师月薪多少
  • liferay做网站好吗安全教育平台作业登录入口