使用英特尔 Transformers 扩展包(Intel Extension for Transformers)流水线对 Huggingface 模型进行仅权重(Weight-Only)量化
Hugging Face 模型可以通过WeightOnlyQuantPipeline 类进行仅权重(Weight-Only)量化,并在本地运行。 Hugging Face 模型中心托管着超过 12 万个模型、2 万个数据集和 5 万个演示应用程序(Spaces),所有这些都是开源和公开可用的,它是一个在线平台,人们可以在其中轻松协作并共同构建机器学习。 这些模型可以通过这个本地流水线包装器类从 LangChain 调用。 要使用它,您应该安装 transformers Python 包,以及 pytorch 和 intel-extension-for-transformers。模型加载
模型可以通过from_model_id 方法指定模型参数来加载。模型参数包括 intel_extension_for_transformers 中的 WeightOnlyQuantConfig 类。
transformers 管道来加载
创建链
将模型加载到内存后,您可以将其与提示组合以形成一个链。CPU 推理
目前 intel-extension-for-transformers 仅支持 CPU 设备推理。很快将支持英特尔 GPU。当在具有 CPU 的机器上运行时,您可以指定device="cpu" 或 device=-1 参数将模型放在 CPU 设备上。默认为 -1 表示 CPU 推理。
批量 CPU 推理
您还可以在批处理模式下在 CPU 上运行推理。英特尔 Transformers 扩展包支持的数据类型
我们支持将权重量化为以下数据类型进行存储(WeightOnlyQuantConfig 中的 weight_dtype)- int8:使用 8 位数据类型。
- int4_fullrange:与正常的 int4 范围 [-7,7] 相比,使用 int4 范围的 -8 值。
- int4_clip:剪切并保留 int4 范围内的值,将其他值设置为零。
- nf4:使用归一化浮点 4 位数据类型。
- fp4_e2m1:使用常规浮点 4 位数据类型。“e2”表示 2 位用于指数,“m1”表示 1 位用于尾数。
- fp32:使用 float32 数据类型进行计算。
- bf16:使用 bfloat16 数据类型进行计算。
- int8:使用 8 位数据类型进行计算。
支持的算法矩阵
intel-extension-for-transformers 中支持的量化算法(WeightOnlyQuantConfig 中的 algorithm)| 算法 | PyTorch | LLM 运行时 |
|---|---|---|
| RTN | ✔ | ✔ |
| AWQ | ✔ | 敬请期待 |
| TEQ | ✔ | 敬请期待 |
RTN: 一种我们直观上很好理解的量化方法。它不需要额外的数据集,是一种非常快速的量化方法。一般来说,RTN 会将权重转换为均匀分布的整数数据类型,但某些算法,例如 Qlora,提出了非均匀的 NF4 数据类型并证明了其理论最优性。
AWQ: 证明了仅保护 1% 的显著权重可以大大减少量化误差。显著权重通道是通过观察每个通道的激活和权重分布来选择的。显著权重在量化前乘以一个大的比例因子以进行保存。
TEQ: 一种可训练的等效变换,在仅权重(Weight-Only)量化中保留 FP32 精度。它受到 AWQ 的启发,同时提供了一种新的解决方案来寻找激活和权重之间最佳的每通道缩放因子。
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。