看公狍和女人做爰网站,湖南有实力seo优化,网站标签制作,初爱视频教程完整版免费观看本文翻译整理自#xff1a;https://huggingface.co/docs/transformers/main/en/quantization/awq 文章目录 一、引言二、加载 autoawq 量化的模型三、Fused modules支持的架构不受支持的架构 四、ExLlamaV2五、CPU 一、引言
Activation-aware Weight Quantization (AWQ) 激活…本文翻译整理自https://huggingface.co/docs/transformers/main/en/quantization/awq 文章目录 一、引言二、加载 autoawq 量化的模型三、Fused modules支持的架构不受支持的架构 四、ExLlamaV2五、CPU 一、引言
Activation-aware Weight Quantization (AWQ) 激活感知权重量化 保留了对LLM性能很重要的一小部分权重以将模型压缩到4位同时性能下降最小。
有几个使用AWQ算法量化模型的库如llm-awq、autoawq或 optimum-intel 。
transformers支持加载使用 llm-awq 和 autoawq 库量化的模型。
本指南将向您展示如何加载使用 autoawq 量化的模型但过程与 llm-awq 量化模型相似。 资源AWQ演示notebook
了解如何量化模型、将量化模型推送到集线器等的更多示例。 二、加载 autoawq 量化的模型
1、运行下面的命令安装autoawq
AutoAWQ将transformers降级到版本4.47.1。如果您想使用AutoAWQ进行推理您可能需要在安装AutoAWQ后重新安装您的transformers版本。
pip install autoawq
pip install transformers4.47.12、通过检查 模型的 config.json 文件中 quant_method键标识 AWQ量化模型。
{_name_or_path: /workspace/process/huggingfaceh4_zephyr-7b-alpha/source,architectures: [MistralForCausalLM],.........quantization_config: {quant_method: awq,zero_point: true,group_size: 128,bits: 4,version: gemm}
}3、使用from_pretrained() 加载AWQ量化模型。
出于性能原因这会自动将其他权重默认设置为fp16。
使用torch_dtype参数 以不同的格式 加载这些其他权重。
如果模型加载到CPU上则使用device_map参数将其移动到GPU。
from transformers import AutoModelForCausalLM, AutoTokenizer
import torchmodel AutoModelForCausalLM.from_pretrained(TheBloke/zephyr-7B-alpha-AWQ,torch_dtypetorch.float32,device_mapcuda:0
)4、使用attn_implementation启用FlashAtention2以进一步加速推理。
from transformers import AutoModelForCausalLM, AutoTokenizermodel AutoModelForCausalLM.from_pretrained(TheBloke/zephyr-7B-alpha-AWQ,attn_implementationflash_attention_2,device_mapcuda:0
)三、Fused modules
融合模块提高了准确性和性能。Llama和Mistral架构的AWQ模块开箱即用支持它们但您也可以将AWQ模块融合到不受支持的架构中。
融合模块不能与 FlashAccention2 等其他优化技术结合使用。 支持的架构
创建一个AwqConfig并设置参数fuse_max_seq_len和do_fuseTrue以启用融合模块。
fuse_max_seq_len参数是总序列长度它应该包括上下文长度和预期的生成长度。将其设置为更大的值以确保安全。
下面的示例融合了TheBloke/Mistral-7B-OpenOrca-AWQ 模型的AWQ模块。
import torch
from transformers import AwqConfig, AutoModelForCausalLMquantization_config AwqConfig(bits4,fuse_max_seq_len512,do_fuseTrue,
)
model AutoModelForCausalLM.from_pretrained(TheBloke/Mistral-7B-OpenOrca-AWQ,quantization_configquantization_config
).to(0)TheBloke/Mistral-7B-OpenOrca-AWQ 模型的基准测试为batch_size1有和没有融合模块。 未融合模块
Batch SizePrefill LengthDecode LengthPrefill tokens/sDecode tokens/sMemory (VRAM)1323260.098438.45374.50 GB (5.68%)164641333.6731.66044.50 GB (5.68%)11281282434.0631.62724.50 GB (5.68%)12562563072.2638.17314.50 GB (5.68%)15125123184.7431.68194.59 GB (5.80%)1102410243148.1836.80314.81 GB (6.07%)1204820482927.3335.26765.73 GB (7.23%) 融合模块
Batch SizePrefill LengthDecode LengthPrefill tokens/sDecode tokens/sMemory (VRAM)1323281.489980.25694.00 GB (5.05%)164641756.1106.264.00 GB (5.05%)11281282479.32105.6314.00 GB (5.06%)12562561813.685.74854.01 GB (5.06%)15125122848.997.7014.11 GB (5.19%)1102410243044.3587.73234.41 GB (5.57%)1204820482715.1189.47095.57 GB (7.04%) 融合和未融合模块的速度和吞吐量也用最佳基准库进行了测试。
前向峰值内存/批量大小 生成吞吐量/批量大小 不受支持的架构
对于不支持融合模块的体系结构创建AwqConfig并在modules_to_fuse中定义自定义融合映射以确定需要融合哪些模块。
下面的示例融合了TheBloke/Yi-AWQ34B模型的AWQ模块。
import torch
from transformers import AwqConfig, AutoModelForCausalLMquantization_config AwqConfig(bits4,fuse_max_seq_len512,modules_to_fuse{attention: [q_proj, k_proj, v_proj, o_proj],layernorm: [ln1, ln2, norm],mlp: [gate_proj, up_proj, down_proj],use_alibi: False,num_attention_heads: 56,num_key_value_heads: 8,hidden_size: 7168}
)model AutoModelForCausalLM.from_pretrained(TheBloke/Yi-34B-AWQ,quantization_configquantization_config
).to(0)参数modules_to_fuse应包括以下键。
attention按以下顺序融合的关注层的名称查询、键、值和输出投影层。如果不想融合这些层传递一个空列表。layernorm要替换为自定义融合LayerNorm的所有LayerNorm层的名称。如果不想融合这些层请传递一个空列表。mlp您要融合到单个MLP层中的MLP层的名称顺序为门密集、层、关注后/上/下层。use_alibi如果您的模型使用ALiBi位置嵌入。num_attention_heads”关注头条号数量。num_key_value_heads应用于实现分组查询关注GQA的键值头的数量。 参数值注意力num_key_value_headsnum_attention_heads多头注意力num_key_value_heads1多查询注意力num_key_value_heads...分组查询注意力 hidden_size隐藏表示的维度。 四、ExLlamaV2
ExLlamaV2内核支持更快的预填充和解码。运行下面的命令来安装支持ExLlamaV2的最新版本的autoawq。
pip install githttps://github.com/casper-hansen/AutoAWQ.git在AwqConfig中设置versionexllama以启用ExLlamaV2内核。
AMD GPU支持ExLlamaV2。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, AwqConfigquantization_config AwqConfig(versionexllama)model AutoModelForCausalLM.from_pretrained(TheBloke/Mistral-7B-Instruct-v0.1-AWQ,quantization_configquantization_config,device_mapauto,
)五、CPU
Intel Extension for PyTorch (IPEX) 旨在实现英特尔硬件的性能优化。运行下面的命令来安装支持IPEX的最新版本的autoawq。
pip install intel-extension-for-pytorch # for IPEX-GPU refer to https://intel.github.io/intel-extension-for-pytorch/xpu/2.5.10xpu/
pip install githttps://github.com/casper-hansen/AutoAWQ.git在versionipex中设置AwqConfig以启用 ExLlamaV2 内核。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, AwqConfigdevice cpu # set to xpu for Intel GPU
quantization_config AwqConfig(versionipex)model AutoModelForCausalLM.from_pretrained(TheBloke/TinyLlama-1.1B-Chat-v0.3-AWQ,quantization_configquantization_config,device_mapdevice,
)2025-03-08六